{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Reviews Scraper · All Languages · Dev Replies",
    "description": "Google Play reviews scraper. Google shows each language its own reviews, so this merges many (or all 49) languages in one run, deduplicated. Developer replies included. Input by URL, package name or search term. Filter by stars, date, version. No login.",
    "version": "0.1",
    "x-build-id": "Wnv1tWZPXN9WDhNnG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/thequietstack~google-play-reviews/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-thequietstack-google-play-reviews",
        "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/thequietstack~google-play-reviews/runs": {
      "post": {
        "operationId": "runs-sync-thequietstack-google-play-reviews",
        "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/thequietstack~google-play-reviews/run-sync": {
      "post": {
        "operationId": "run-sync-thequietstack-google-play-reviews",
        "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": {
          "apps": {
            "title": "Apps (URL or package name)",
            "type": "array",
            "description": "Google Play URLs (play.google.com/store/apps/details?id=com.whatsapp) or bare package names (com.whatsapp).",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Or: search terms",
            "type": "array",
            "description": "App names or keywords, resolved with the Google Play search (first language and country below).",
            "items": {
              "type": "string"
            }
          },
          "appsPerSearchTerm": {
            "title": "Apps per search term",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many top search results to scrape for each search term.",
            "default": 1
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "Google Play shows each language its OWN set of reviews (en, de, es, pt, fr, ja ...). More languages = more reviews, merged and deduplicated. Codes: en, es, pt, de, fr, it, ru, tr, ar, ja, ko, zh-TW, zh-CN, id, vi, th, hi, pl, nl, uk ...",
            "default": [
              "en"
            ],
            "items": {
              "type": "string"
            }
          },
          "allLanguages": {
            "title": "All languages (49)",
            "type": "boolean",
            "description": "Ignore the list above and scrape all 49 Play Store review languages. Languages without reviews cost nothing. With a review limit, the limit is shared fairly so every language with reviews is represented.",
            "default": false
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter country codes. The country changes the review set much less than the language (English: US and UK overlap by about 60%). One country is usually enough.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "newest",
              "mostRelevant",
              "rating"
            ],
            "type": "string",
            "description": "Newest is required for an efficient date filter.",
            "default": "newest"
          },
          "ratings": {
            "title": "Only these star ratings",
            "type": "array",
            "description": "e.g. [1, 2] for complaints only. Filtered on Google's side, so a 1-star-only run does not page through 5-star reviews. Empty = all ratings."
          },
          "sinceDate": {
            "title": "Only reviews after (YYYY-MM-DD)",
            "type": "string",
            "description": "With sort Newest, paging stops as soon as reviews get older than this date."
          },
          "untilDate": {
            "title": "Only reviews before (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional upper bound for the review date."
          },
          "versions": {
            "title": "Only these app versions",
            "type": "array",
            "description": "Exact version (\"2.26.36.74\") or a prefix (\"2.26\" matches 2.26.x). Empty = all versions.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithDeveloperReply": {
            "title": "Only reviews the developer replied to",
            "type": "boolean",
            "description": "Keep only reviews that have a developer reply. Filtered-out reviews are not charged.",
            "default": false
          },
          "onlyWithText": {
            "title": "Only reviews with text",
            "type": "boolean",
            "description": "Drop reviews with an empty text body.",
            "default": false
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 1,
            "type": "integer",
            "description": "Stop an app after this many reviews. Empty = no per-app limit."
          },
          "maxReviews": {
            "title": "Hard limit: total reviews in this run",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops cleanly at this number. You are never charged for more reviews than this.",
            "default": 5000
          },
          "concurrency": {
            "title": "Parallel streams",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "How many language/country streams are fetched at the same time.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration (used for retries)",
            "type": "object",
            "description": "Requests go out directly first. If Google answers 429 or 5xx, the retry goes through this proxy with a fresh IP.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}