{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Store Review Scraper",
    "description": "Google Play Store Review Scraper — Extract Google Play Store reviews including ratings, review text, usernames, dates, app versions, helpful votes, developer replies, and app details. Useful for app research, user feedback analysis, sentiment analysis, and competitor monitoring.",
    "version": "0.4",
    "x-build-id": "f55oGA4gyIFNEn422"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fastdataapi~google-play-store-review-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fastdataapi-google-play-store-review-scraper",
        "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/fastdataapi~google-play-store-review-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fastdataapi-google-play-store-review-scraper",
        "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/fastdataapi~google-play-store-review-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fastdataapi-google-play-store-review-scraper",
        "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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🔗 App links or package names",
            "type": "array",
            "description": "One per line: a Google Play app link (https://play.google.com/store/apps/details?id=com.supercell.brawlstars) or just the package name (com.supercell.brawlstars). Several apps are scraped at the same time and all reviews go into one dataset. An app listed twice is scraped once, entries that are not app links or package names are skipped and named in the log, and an app that does not exist is reported in the log and the status message.",
            "items": {
              "type": "string"
            }
          },
          "deviceType": {
            "title": "🔧 Device type",
            "enum": [
              "mobile",
              "tablet",
              "chromebook"
            ],
            "type": "string",
            "description": "Which device's reviews to read: phone, tablet or Chromebook. Google Play keeps separate reviews per device, so tablet and Chromebook reviews differ from phone reviews.",
            "default": "mobile"
          },
          "sortBy": {
            "title": "🔃 Sort by",
            "enum": [
              "mostRelevant",
              "newest",
              "rating"
            ],
            "type": "string",
            "description": "Order in which Google Play returns the reviews: most relevant, newest first, or by rating.",
            "default": "mostRelevant"
          },
          "rating": {
            "title": "🎯 Star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep reviews with this star rating (1-5). When a single star is chosen, Google Play returns only reviews with that star, so no pages are wasted. Leave empty for all ratings.",
            "default": null
          },
          "ratingFilter": {
            "title": "🎯 Star ratings (several)",
            "type": "array",
            "description": "Only keep reviews with any of these star ratings (e.g. 1, 2 and 5). When Star rating is also set, only the stars chosen in both are kept. Leave empty for all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ]
            }
          },
          "keywords": {
            "title": "🔎 Keywords",
            "type": "array",
            "description": "Only keep reviews whose text contains at least one of these words or phrases (not case-sensitive). Leave empty for no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "appVersion": {
            "title": "🎯 App versions",
            "type": "array",
            "description": "Only keep reviews written on these app versions. A value matches that exact version or any version that starts with it, so 69 matches 69.414 and 69.414 matches 69.414.2. Reviews without a recorded version are skipped while this filter is set. Leave empty for all versions.",
            "items": {
              "type": "string"
            }
          },
          "endDate": {
            "title": "📅 End date",
            "type": "string",
            "description": "Only keep reviews posted on or before this date (YYYY-MM-DD, UTC). Leave empty for no limit.",
            "default": ""
          },
          "recentDays": {
            "title": "📅 Recent days",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep reviews from the last N days (0 = no limit). With Sort by set to Newest, an app stops as soon as a whole page is older, which makes this the fastest way to get recent reviews.",
            "default": 0
          },
          "uniqueOnly": {
            "title": "✅ Unique reviews only",
            "type": "boolean",
            "description": "Skip a review that shows up again on a later page of the same app.",
            "default": true
          },
          "maxReviews": {
            "title": "🔢 Max reviews per app",
            "minimum": -1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum reviews saved per app, counted after the filters. Use -1 for up to 10000, or any value from 1. An app with fewer matching reviews gives all it has. Free plan: up to 20 reviews per run (all listed apps together) and 200 per month; paid plans have no limit.",
            "default": 100
          },
          "reviewsPerPage": {
            "title": "🔢 Reviews per page",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many reviews to read per page (1-1000). Bigger pages mean fewer requests; 200 is a good balance.",
            "default": 200
          },
          "pagesToScrape": {
            "title": "🔢 Pages to scrape",
            "minimum": -1,
            "type": "integer",
            "description": "Maximum pages per app, counted from the start page. Use -1 (default) for no page limit, or any value from 1. Without a page limit an app stops at Max reviews per app or when it has no more reviews.",
            "default": -1
          },
          "startPage": {
            "title": "🔢 Start page",
            "minimum": 1,
            "type": "integer",
            "description": "Page to start saving from (1 = the first page). Earlier pages are still read and then skipped, so a later start page takes longer; it does not save requests.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "With Apify Proxy on, every request goes through it (the residential group when no group is chosen; US unless you pick a country). With it off, requests start on a direct connection and an app switches to the residential proxy as soon as Google Play blocks it. If the proxy refuses the connection, the run continues directly."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}