{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Reviews Scraper | Android App Reviews",
    "description": "Scrape Google Play Store reviews by app, country and language. Export ratings, text, app versions and developer replies to JSON/CSV. Filter dates, stars and keywords for Android feedback monitoring.",
    "version": "0.1",
    "x-build-id": "9FRnwNOYq2bpqEcfK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/peerless_columbine~google-play-reviews-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-peerless_columbine-google-play-reviews-scraper-api",
        "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/peerless_columbine~google-play-reviews-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-peerless_columbine-google-play-reviews-scraper-api",
        "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/peerless_columbine~google-play-reviews-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-peerless_columbine-google-play-reviews-scraper-api",
        "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",
        "properties": {
          "appIdOrUrl": {
            "title": "App ID or Google Play URL",
            "type": "string",
            "description": "Single-app compatibility input, e.g. com.whatsapp or a Play Store app URL."
          },
          "appIds": {
            "title": "App IDs",
            "uniqueItems": true,
            "type": "array",
            "description": "Multiple Google Play package IDs in one run.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Compatibility input containing Google Play app detail URLs.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Google Play country code used by the review RPC, e.g. US, GB, KR. Select a suggested locale or enter a custom code. Locale selection does not detect the language of each review.",
            "default": "US"
          },
          "countries": {
            "title": "Countries",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional multi-country extension. When supplied, each app is queried for each country and review IDs are deduplicated.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "US",
                "AR",
                "AU",
                "AT",
                "BE",
                "BR",
                "BS",
                "CA",
                "CL",
                "CO",
                "CZ",
                "DK",
                "FI",
                "FR",
                "DE",
                "GR",
                "HK",
                "HU",
                "IN",
                "ID",
                "IE",
                "IT",
                "JP",
                "JO",
                "KW",
                "LB",
                "LU",
                "MY",
                "MX",
                "NL",
                "NZ",
                "NO",
                "PY",
                "PE",
                "PH",
                "PL",
                "PT",
                "RO",
                "RU",
                "SG",
                "ZA",
                "KR",
                "ES",
                "CH",
                "TW",
                "TH",
                "TR",
                "AE",
                "GB",
                "VE",
                "VN",
                "NG"
              ],
              "enumTitles": [
                "United States",
                "Argentina",
                "Australia",
                "Austria",
                "Belgium",
                "Brazil",
                "Canada",
                "Chile",
                "Colombia",
                "Czech Republic",
                "Denmark",
                "Finland",
                "France",
                "Germany",
                "Greece",
                "Hong Kong",
                "Hungary",
                "India",
                "Indonesia",
                "Ireland",
                "Italy",
                "Japan",
                "Jordan",
                "Kuwait",
                "Lebanon",
                "Luxembourg",
                "Malaysia",
                "Mexico",
                "Netherlands",
                "New Zealand",
                "Norway",
                "Paraguay",
                "Peru",
                "Philippines",
                "Poland",
                "Portugal",
                "Romania",
                "Russia",
                "Singapore",
                "South Africa",
                "South Korea",
                "Spain",
                "Switzerland",
                "Taiwan",
                "Thailand",
                "Turkey",
                "United Arab Emirates",
                "United Kingdom",
                "Venezuela",
                "Vietnam"
              ]
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Google Play query locale, e.g. en or de. all sweeps the documented fixed locale list in round-robin pages; maxReviews is a global cap, not per language. This does not classify review text language. Select a suggested locale or enter a custom code. Locale selection does not detect the language of each review.",
            "default": "en"
          },
          "languages": {
            "title": "Languages",
            "uniqueItems": true,
            "type": "array",
            "description": "Explicit query locales, or [\"all\"] for the fixed locale sweep. Queried round-robin; unvisited sources are reported when the global limit is reached.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "en",
                "af",
                "am",
                "bg",
                "ca",
                "zh",
                "zh-HK",
                "zh-CN",
                "zh-TW",
                "hr",
                "cs",
                "da",
                "nl",
                "en-GB",
                "en-US",
                "et",
                "fil",
                "fi",
                "fr",
                "fr-CA",
                "fr-FR",
                "de",
                "el",
                "he",
                "hi",
                "hu",
                "is",
                "in",
                "it",
                "ja",
                "ko",
                "lv",
                "lt",
                "ms",
                "no",
                "pl",
                "pt",
                "pt-BR",
                "pt-PT",
                "ro",
                "ru",
                "sr",
                "sk",
                "sl",
                "es",
                "es-419",
                "es-ES",
                "sw",
                "sv",
                "th",
                "tr",
                "uk",
                "vi",
                "zu"
              ],
              "enumTitles": [
                "English",
                "Afrikaans",
                "Amharic",
                "Bulgarian",
                "Catalan",
                "Chinese",
                "Chinese (Hong Kong)",
                "Chinese (PRC)",
                "Chinese (Taiwan)",
                "Croatian",
                "Czech",
                "Danish",
                "Dutch",
                "English (UK)",
                "English (US)",
                "Estonian",
                "Filipino",
                "Finnish",
                "French",
                "French (Canada)",
                "French (France)",
                "German",
                "Greek",
                "Hebrew",
                "Hindi",
                "Hungarian",
                "Icelandic",
                "Indonesian",
                "Italian",
                "Japanese",
                "Korean",
                "Latvian",
                "Lithuanian",
                "Malay",
                "Norwegian",
                "Polish",
                "Portuguese",
                "Portuguese (Brazil)",
                "Portuguese (Portugal)",
                "Romanian",
                "Russian",
                "Serbian",
                "Slovak",
                "Slovenian",
                "Spanish",
                "Spanish (Latin America)",
                "Spanish (Spain)",
                "Swahili",
                "Swedish",
                "Thai",
                "Turkish",
                "Ukrainian",
                "Vietnamese",
                "Zulu"
              ]
            }
          },
          "deviceType": {
            "title": "Device type",
            "enum": [
              "mobile",
              "tablet",
              "chromebook",
              "tv"
            ],
            "type": "string",
            "description": "Google Play device review context.",
            "default": "mobile"
          },
          "keywords": {
            "title": "Keywords",
            "uniqueItems": true,
            "type": "array",
            "description": "Return reviews containing at least one keyword, case-insensitive.",
            "items": {
              "type": "string"
            }
          },
          "appVersion": {
            "title": "App versions",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional exact app-version allow-list.",
            "items": {
              "type": "string"
            }
          },
          "since": {
            "title": "Only reviews since",
            "type": "string",
            "description": "ISO date/timestamp for scheduled incremental monitoring."
          },
          "recentDays": {
            "title": "Recent days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Return reviews from the most recent N days; 0 disables this filter.",
            "default": 0
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Compatibility page offset. Earlier pages are fetched only to obtain Google's continuation token, then discarded.",
            "default": 1
          },
          "pagesToScrape": {
            "title": "Pages to scrape",
            "minimum": -1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum RPC pages per app/country after startPage. -1 means continue until maxReviews/maxItems or source exhaustion.",
            "default": -1
          },
          "reviewsPerPage": {
            "title": "Reviews per RPC page",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Requested reviews per Google Play RPC call.",
            "default": 100
          },
          "requestDelayMillis": {
            "title": "Request spacing",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Optional delay before each RPC attempt.",
            "default": 0
          },
          "until": {
            "title": "Scrape Until compatibility",
            "type": "string",
            "description": "theagents-compatible LOWER date bound: returns reviews newer than this date. Combined with since using the later bound. Use endDate for an upper bound."
          },
          "neatratInput": {
            "title": "Neatrat original input",
            "type": "object",
            "description": "Explicit Neatrat migration: paste the original input object here. Do not combine with native fields (unchanged platform defaults are ignored). outputSchema remains top-level and independent. Preserves language arrays and defaults mostRelevant / 5 pages / 10000 reviews. Missing language uses en query locale; text-language filter equivalence is unproven."
          },
          "wolvesInput": {
            "title": "thewolves original input",
            "type": "object",
            "description": "Explicit thewolves migration: paste the original input object here. Do not combine with native fields (unchanged platform defaults are ignored). outputSchema remains top-level and independent. Requires explicit positive maxItems: competitor has UI prefill only, no documented API default. No explicit page limit; native safety bounds apply."
          },
          "theagentsInput": {
            "title": "theagents original input",
            "type": "object",
            "description": "Explicit theagents migration: paste the original input object here. Do not combine with native fields (unchanged platform defaults are ignored). outputSchema remains top-level and independent. Requires explicit positive maxItems: competitor has UI prefill only, no documented API default. No explicit page limit; native safety bounds apply."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "NEWEST",
              "RATING",
              "HELPFULNESS",
              "MOST_RELEVANT"
            ],
            "type": "string",
            "description": "Compatibility sort: NEWEST, RATING or HELPFULNESS/MOST_RELEVANT.",
            "default": "NEWEST"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "mostRelevant",
              "newest",
              "rating",
              "recent",
              "top"
            ],
            "type": "string",
            "description": "Alternative compatibility sort used by another major Actor."
          },
          "rating": {
            "title": "Single rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Return reviews with exactly one star rating from 1 to 5."
          },
          "ratingFilter": {
            "title": "Ratings",
            "type": "array",
            "description": "Return only reviews whose score is in this 1-5 allow-list. Numeric arrays such as [1,2] are supported for migration compatibility."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Compatibility upper date bound in YYYY-MM-DD or ISO format."
          },
          "includeRepliesOnly": {
            "title": "Developer replies only",
            "type": "boolean",
            "description": "Return only reviews that have a developer reply.",
            "default": false
          },
          "uniqueOnly": {
            "title": "Unique reviews only",
            "type": "boolean",
            "description": "Deduplicate by reviewId across pages/apps/countries.",
            "default": true
          },
          "ratings": {
            "title": "Ratings compatibility",
            "type": "array",
            "description": "Additional allowed ratings, merged with ratingFilter.",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5
            }
          },
          "maxReviews": {
            "title": "Maximum reviews",
            "minimum": -1,
            "maximum": 100000,
            "type": "integer",
            "description": "Compatibility maximum number of saved reviews across the run. -1 uses maxItems or the safety ceiling. Defaults to 1000 only when neither limit is supplied."
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Alternative compatibility maximum. When supplied with maxReviews, the lower positive limit wins."
          },
          "maxRequestRetries": {
            "title": "Request retries",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Retries transient HTTP/rate-limit/network failures.",
            "default": 2
          },
          "customMapFunction": {
            "title": "Custom map compatibility",
            "type": "string",
            "description": "JavaScript function applied after output formatting to each review. Must return one JSON object. Isolated runtime with no network, file system or Python access; 50ms CPU and 16MB per row, 10s total. Not a filter."
          },
          "outputSchema": {
            "title": "Output format",
            "enum": [
              "extended",
              "wolves",
              "neatrat",
              "theagents"
            ],
            "type": "string",
            "description": "Explicit migration format. Missing source values stay null; extended preserves diagnostics.",
            "default": "extended"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration compatibility",
            "type": "object",
            "description": "Accepted for migration compatibility. The validated public RPC path does not require or use a proxy."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}