{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Scraper & SERP Rank Checker",
    "description": "Everything in one actor: Google Play app details, reviews and search, top-100 rank on Google, Bing and Yandex results pages or search APIs, AI answer citations from official APIs, and export to files or your storage. Batch, REST API and MCP.",
    "version": "1.0",
    "x-build-id": "CRtANDO46tfzkuR8p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/byteblisk~google-play-search-toolkit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-byteblisk-google-play-search-toolkit",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/byteblisk~google-play-search-toolkit/runs": {
      "post": {
        "operationId": "runs-sync-byteblisk-google-play-search-toolkit",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/byteblisk~google-play-search-toolkit/run-sync": {
      "post": {
        "operationId": "run-sync-byteblisk-google-play-search-toolkit",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "app",
              "reviews",
              "search",
              "answers",
              "rank",
              "server"
            ],
            "type": "string",
            "description": "Select 'app', 'reviews', 'search', 'answers', 'rank', or 'server' (Standby HTTP API + MCP).",
            "default": "app"
          },
          "apps": {
            "title": "Google Play App IDs or URLs",
            "type": "array",
            "description": "Android package IDs (e.g. 'com.spotify.music') or full Google Play URLs.",
            "default": [
              "com.spotify.music"
            ],
            "items": {
              "type": "string"
            }
          },
          "includeReviews": {
            "title": "Enable Reading Reviews",
            "type": "boolean",
            "description": "Explicitly enable reading user reviews via the Play Store batch endpoint.",
            "default": true
          },
          "enableSearch": {
            "title": "Enable Play Store Keyword Search",
            "type": "boolean",
            "description": "Explicitly enable searching package IDs via '/store/search' when mode is 'search'.",
            "default": true
          },
          "keyword": {
            "title": "Search Keyword",
            "type": "string",
            "description": "Keyword for Play Store search ('search' mode) or rank check ('rank' mode)."
          },
          "target": {
            "title": "Target Domain or URL (Rank Mode)",
            "type": "string",
            "description": "Domain or URL to locate in the Top-100 search results."
          },
          "engine": {
            "title": "Rank source",
            "enum": [
              "google",
              "bing",
              "yandex",
              "api"
            ],
            "type": "string",
            "description": "Where rank mode reads results. A blocked results page falls back to the search API when a Brave key or SearXNG URL is set.",
            "default": "google"
          },
          "prompt": {
            "title": "AI Answer Engine Prompt",
            "type": "string",
            "description": "Prompt sent to the official Perplexity, OpenAI, or Gemini API when mode is 'answers'."
          },
          "provider": {
            "title": "AI Answer Provider",
            "enum": [
              "perplexity",
              "openai",
              "gemini"
            ],
            "type": "string",
            "description": "Official AI API provider to query.",
            "default": "perplexity"
          },
          "trackedBrands": {
            "title": "Tracked Brands (Answers Mode)",
            "type": "array",
            "description": "Brands or products to track for mention count, prominence, and sentiment.",
            "items": {
              "type": "string"
            }
          },
          "apiKey": {
            "title": "AI Provider API Key",
            "type": "string",
            "description": "Official API key for Perplexity, OpenAI, or Google Gemini."
          },
          "braveApiKey": {
            "title": "Brave Search API Key (Rank Mode)",
            "type": "string",
            "description": "Needed for reliable rank checks: search engines often block results pages from cloud servers. Brave includes free monthly credit (api-dashboard.search.brave.com). Used for this run only."
          },
          "searxngUrl": {
            "title": "SearXNG Instance URL (Rank Mode Backup)",
            "type": "string",
            "description": "Optional public or self-hosted SearXNG base URL returning JSON results."
          },
          "maxApps": {
            "title": "Max Search Apps",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of apps to return in 'search' mode.",
            "default": 5
          },
          "maxReviews": {
            "title": "Max Reviews per App",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to read per app.",
            "default": 100
          },
          "sort": {
            "title": "Review Sort Order",
            "enum": [
              "newest",
              "most_relevant",
              "rating"
            ],
            "type": "string",
            "description": "Sort order for reviews.",
            "default": "newest"
          },
          "stars": {
            "title": "Filter by Star Rating (1-5)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Optional filter for a specific star rating (1 to 5)."
          },
          "startDate": {
            "title": "Reviews Start Date (YYYY-MM-DD)",
            "type": "string",
            "description": "Read only reviews posted on or after this ISO date."
          },
          "endDate": {
            "title": "Reviews End Date (YYYY-MM-DD)",
            "type": "string",
            "description": "Read only reviews posted on or before this ISO date."
          },
          "country": {
            "title": "Country Code (gl)",
            "type": "string",
            "description": "Two-letter ISO 3166-1 alpha-2 country code (e.g. 'us', 'gb', 'de').",
            "default": "us"
          },
          "language": {
            "title": "Language Code (hl)",
            "type": "string",
            "description": "Two-letter ISO 639-1 language code (e.g. 'en', 'de', 'fr').",
            "default": "en"
          },
          "exportFormat": {
            "title": "Export Format",
            "enum": [
              "json",
              "ndjson",
              "jsonl",
              "csv",
              "xlsx",
              "parquet"
            ],
            "type": "string",
            "description": "Optional export file format when delivering to a destination sink.",
            "default": "json"
          },
          "deliveryDestination": {
            "title": "Delivery Sink",
            "enum": [
              "local",
              "email",
              "pubsub",
              "snowflake",
              "alibaba_oss"
            ],
            "type": "string",
            "description": "Optional external sink to deliver exported records."
          },
          "deliveryConfig": {
            "title": "Delivery Sink Configuration",
            "type": "object",
            "description": "Connection settings for the selected deliveryDestination."
          },
          "requestsPerSecond": {
            "title": "Requests Per Second",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum outgoing request rate per second.",
            "default": 1
          },
          "proxyUrl": {
            "title": "Proxy URL",
            "type": "string",
            "description": "Optional HTTP/HTTPS proxy URL."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}