{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Store Scraper",
    "description": "Scrape Google Play Store — app details, ratings, reviews, and search results. Extract app name, developer, installs, rating, price, screenshots, and 30+ fields. No API key needed.",
    "version": "0.1",
    "x-build-id": "2XAn19vJZvXNOGbvB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation-lab~google-play-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation-lab-google-play-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/automation-lab~google-play-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation-lab-google-play-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/automation-lab~google-play-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation-lab-google-play-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "🔧 Mode",
            "enum": [
              "search",
              "topCharts",
              "details",
              "reviews",
              "similar",
              "developer"
            ],
            "type": "string",
            "description": "Choose what to scrape: search by keyword, ranked Top Charts, full details for known apps, reviews, apps similar to an app, or all apps from a developer.",
            "default": "search"
          },
          "searchTerms": {
            "title": "Search terms (Search apps mode)",
            "type": "array",
            "description": "Keywords to search for apps on Google Play. Google Play shows at most 30 apps per term, so use several terms for a wider list. If App details is selected without App IDs, these terms are searched instead. Example: \"whatsapp\", \"fitness tracker\", \"photo editor\".",
            "default": [
              "whatsapp"
            ],
            "items": {
              "type": "string"
            }
          },
          "appIds": {
            "title": "App IDs or URLs (details, reviews and similar modes)",
            "type": "array",
            "description": "Package IDs or Google Play app URLs, required for App details, App reviews and Similar apps. Example: \"com.whatsapp\" or \"https://play.google.com/store/apps/details?id=com.spotify.music\".",
            "items": {
              "type": "string"
            }
          },
          "developerIds": {
            "title": "Developer IDs or URLs (developer mode)",
            "type": "array",
            "description": "Developer names, numeric developer IDs or Google Play developer URLs, required for Developer apps. Example: \"Spotify AB\" or \"https://play.google.com/store/apps/dev?id=5700313618786177705\".",
            "items": {
              "type": "string"
            }
          },
          "chartCollection": {
            "title": "Chart collection",
            "enum": [
              "top-free",
              "top-paid",
              "top-grossing"
            ],
            "type": "string",
            "description": "Google Play ranking to extract in 'topCharts' mode.",
            "default": "top-free"
          },
          "chartCategory": {
            "title": "Chart category",
            "type": "string",
            "description": "Optional Google Play category in 'topCharts' mode. Defaults to APPLICATION (all apps). Examples: GAME, PRODUCTIVITY, FINANCE, HEALTH_AND_FITNESS.",
            "default": "APPLICATION"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum results per term, chart, app ID or developer. Reviews go up to 100,000 per app. Google Play itself lists at most 30 apps per search and 200 per chart. Keep low for the first run to control costs.",
            "default": 50
          },
          "country": {
            "title": "🌍 Country",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code for localized results. Affects app availability, pricing, and review language. Example: us, gb, de, jp, br.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "ISO 639-1 language code for localized content. Example: en, es, de, ja, pt.",
            "default": "en"
          },
          "reviewSort": {
            "title": "Review sort order",
            "enum": [
              "newest",
              "rating",
              "relevant"
            ],
            "type": "string",
            "description": "How to sort reviews. Only applies in 'reviews' mode.",
            "default": "newest"
          },
          "reviewScore": {
            "title": "Filter by star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only return reviews with this exact star rating (1–5). Leave empty to return all ratings."
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Only return reviews from this date or age onward, and stop there. Use it on a schedule to collect only new reviews. Always uses newest-first order. Example: 2026-10-01 or 7 days."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}