{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Scraper: Apps, Reviews, Charts & Exact Installs",
    "description": "Google Play apps from app IDs, top charts, search, similar apps or a developer's catalogue: exact install count, installs gained between runs, ratings histogram, developer email, phone and address, permissions, data safety. Reviews with replies and star, device and date filters.",
    "version": "0.1",
    "x-build-id": "gv9SZ1SvgUwKpen77"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/foxlabs~google-play-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-foxlabs-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/foxlabs~google-play-scraper/runs": {
      "post": {
        "operationId": "runs-sync-foxlabs-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/foxlabs~google-play-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-foxlabs-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",
        "properties": {
          "mode": {
            "title": "What to get",
            "enum": [
              "apps",
              "reviews",
              "appsAndReviews"
            ],
            "type": "string",
            "description": "App details: one row per app (exact install count, ratings, developer contacts, permissions, chart rank…). Reviews: review rows for the same apps, no app rows. Both: app rows and their reviews.",
            "default": "apps"
          },
          "appIds": {
            "title": "App IDs or Google Play links",
            "type": "array",
            "description": "Package names (com.whatsapp) or Google Play app links, one per line. Every source below can be combined with these in one run.",
            "items": {
              "type": "string"
            }
          },
          "chartTypes": {
            "title": "Top charts",
            "type": "array",
            "description": "Google Play top charts to read, up to 200 apps each. Every chosen chart runs for every chosen category and country. Leave empty for none; choosing a category alone reads Top free.",
            "items": {
              "type": "string",
              "enum": [
                "topselling_free",
                "topgrossing",
                "topselling_paid"
              ],
              "enumTitles": [
                "Top free",
                "Top grossing",
                "Top paid"
              ]
            },
            "default": []
          },
          "chartCategories": {
            "title": "Chart categories",
            "type": "array",
            "description": "Categories for the top charts. Leave empty for All apps when a chart is chosen.",
            "items": {
              "type": "string",
              "enum": [
                "APPLICATION",
                "GAME",
                "FAMILY",
                "ART_AND_DESIGN",
                "AUTO_AND_VEHICLES",
                "BEAUTY",
                "BOOKS_AND_REFERENCE",
                "BUSINESS",
                "COMICS",
                "COMMUNICATION",
                "DATING",
                "EDUCATION",
                "ENTERTAINMENT",
                "EVENTS",
                "FINANCE",
                "FOOD_AND_DRINK",
                "HEALTH_AND_FITNESS",
                "HOUSE_AND_HOME",
                "LIBRARIES_AND_DEMO",
                "LIFESTYLE",
                "MAPS_AND_NAVIGATION",
                "MEDICAL",
                "MUSIC_AND_AUDIO",
                "NEWS_AND_MAGAZINES",
                "PARENTING",
                "PERSONALIZATION",
                "PHOTOGRAPHY",
                "PRODUCTIVITY",
                "SHOPPING",
                "SOCIAL",
                "SPORTS",
                "TOOLS",
                "TRAVEL_AND_LOCAL",
                "VIDEO_PLAYERS",
                "WATCH_FACE",
                "WEATHER",
                "GAME_ACTION",
                "GAME_ADVENTURE",
                "GAME_ARCADE",
                "GAME_BOARD",
                "GAME_CARD",
                "GAME_CASINO",
                "GAME_CASUAL",
                "GAME_EDUCATIONAL",
                "GAME_MUSIC",
                "GAME_PUZZLE",
                "GAME_RACING",
                "GAME_ROLE_PLAYING",
                "GAME_SIMULATION",
                "GAME_SPORTS",
                "GAME_STRATEGY",
                "GAME_TRIVIA",
                "GAME_WORD"
              ],
              "enumTitles": [
                "All apps",
                "All games",
                "Kids (family)",
                "Art & Design",
                "Auto & Vehicles",
                "Beauty",
                "Books & Reference",
                "Business",
                "Comics",
                "Communication",
                "Dating",
                "Education",
                "Entertainment",
                "Events",
                "Finance",
                "Food & Drink",
                "Health & Fitness",
                "House & Home",
                "Libraries & Demo",
                "Lifestyle",
                "Maps & Navigation",
                "Medical",
                "Music & Audio",
                "News & Magazines",
                "Parenting",
                "Personalization",
                "Photography",
                "Productivity",
                "Shopping",
                "Social",
                "Sports",
                "Tools",
                "Travel & Local",
                "Video Players & Editors",
                "Watch faces",
                "Weather",
                "Games: Action",
                "Games: Adventure",
                "Games: Arcade",
                "Games: Board",
                "Games: Card",
                "Games: Casino",
                "Games: Casual",
                "Games: Educational",
                "Games: Music",
                "Games: Puzzle",
                "Games: Racing",
                "Games: Role Playing",
                "Games: Simulation",
                "Games: Sports",
                "Games: Strategy",
                "Games: Trivia",
                "Games: Word"
              ]
            },
            "default": []
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords as typed into Google Play search (fitness tracker, photo editor). Google Play shows a few dozen apps per term (21 to 30 in our tests); each row keeps its search rank.",
            "items": {
              "type": "string"
            }
          },
          "similarTo": {
            "title": "Similar apps to",
            "type": "array",
            "description": "Package names or links. Returns the apps Google Play lists as \"Similar apps\" for each (Google Play's separate \"More by\" list of the same developer is left out).",
            "items": {
              "type": "string"
            }
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "A developer's name as shown on Google Play (Google LLC), its numeric developer ID, or a developer page link. Returns the developer's apps.",
            "items": {
              "type": "string"
            }
          },
          "maxAppsPerSource": {
            "title": "Max apps per chart, search, similar-apps list or developer",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Top charts hold at most 200 apps and a search a few dozen. App IDs you list are always all read. The form starts at 20 for a quick first run; an API call without this field gets 50.",
            "default": 50
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Google Play country (price, currency, availability, charts and search results follow it), up to 20 per run. Every source runs once per country, so an app can have one row per country.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "ca",
                "au",
                "nz",
                "ie",
                "in",
                "de",
                "fr",
                "es",
                "it",
                "nl",
                "be",
                "at",
                "ch",
                "se",
                "no",
                "dk",
                "fi",
                "pl",
                "cz",
                "pt",
                "gr",
                "ro",
                "hu",
                "tr",
                "ua",
                "il",
                "ae",
                "sa",
                "eg",
                "za",
                "ng",
                "ke",
                "br",
                "mx",
                "ar",
                "co",
                "cl",
                "pe",
                "jp",
                "kr",
                "tw",
                "hk",
                "sg",
                "my",
                "id",
                "th",
                "vn",
                "ph",
                "pk",
                "bd"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Canada",
                "Australia",
                "New Zealand",
                "Ireland",
                "India",
                "Germany",
                "France",
                "Spain",
                "Italy",
                "Netherlands",
                "Belgium",
                "Austria",
                "Switzerland",
                "Sweden",
                "Norway",
                "Denmark",
                "Finland",
                "Poland",
                "Czechia",
                "Portugal",
                "Greece",
                "Romania",
                "Hungary",
                "Türkiye",
                "Ukraine",
                "Israel",
                "United Arab Emirates",
                "Saudi Arabia",
                "Egypt",
                "South Africa",
                "Nigeria",
                "Kenya",
                "Brazil",
                "Mexico",
                "Argentina",
                "Colombia",
                "Chile",
                "Peru",
                "Japan",
                "South Korea",
                "Taiwan",
                "Hong Kong",
                "Singapore",
                "Malaysia",
                "Indonesia",
                "Thailand",
                "Vietnam",
                "Philippines",
                "Pakistan",
                "Bangladesh"
              ]
            },
            "default": [
              "us"
            ]
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "pt",
              "it",
              "nl",
              "tr",
              "pl",
              "ru",
              "uk",
              "cs",
              "sv",
              "da",
              "no",
              "fi",
              "el",
              "ro",
              "hu",
              "ar",
              "he",
              "hi",
              "id",
              "ms",
              "th",
              "vi",
              "ja",
              "ko",
              "zh-CN",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language of descriptions, release notes and labels. Reviews come from this language's review list.",
            "default": "en"
          },
          "trackChanges": {
            "title": "Track changes between runs",
            "type": "boolean",
            "description": "Compares each app with the previous run and adds installsGained, installsPerDay, ratingsGained, scoreChange, versionChanged and previousRank. A small snapshot per app is kept in a named key-value store in your Apify account. Google moves the exact install counter in steps, at different times for different apps, so compare runs at least a day apart (README: \"How change tracking works\").",
            "default": true
          },
          "trackingStoreName": {
            "title": "Snapshot store name",
            "type": "string",
            "description": "Named key-value store for the snapshots (letters, digits, hyphens). Use a different name to track a separate set of apps.",
            "default": "google-play-tracker"
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many reviews for each app (Google Play pages 1,000 at a time). 0 means every review Google Play shows for the filter. The form starts at 100.",
            "default": 200
          },
          "reviewsSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "relevant",
              "rating"
            ],
            "type": "string",
            "description": "Newest first, Google's \"most relevant\" order, or by rating. A review period needs newest order and uses it.",
            "default": "newest"
          },
          "reviewsStars": {
            "title": "Stars",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Only reviews with this star rating (filtered by Google Play).",
            "default": "all"
          },
          "reviewsDevice": {
            "title": "Device",
            "enum": [
              "all",
              "phone",
              "tablet",
              "watch",
              "chromebook",
              "xr"
            ],
            "type": "string",
            "description": "All devices, or only reviews written on one device type (Google Play keeps a review list per device type; its page shows the phone list).",
            "default": "all"
          },
          "reviewsPeriod": {
            "title": "Review period",
            "enum": [
              "all",
              "last_24_hours",
              "last_7_days",
              "last_30_days",
              "last_90_days",
              "last_365_days",
              "custom"
            ],
            "type": "string",
            "description": "Only reviews written in this period. The Actor reads newest first and stops at the start of the period, so recent reviews of large apps come back fast.",
            "default": "all"
          },
          "reviewsSince": {
            "title": "Reviews since (custom period)",
            "type": "string",
            "description": "YYYY-MM-DD, used when Review period is \"Since a date\"."
          },
          "includeReviewerNames": {
            "title": "Include reviewer names",
            "type": "boolean",
            "description": "Reviewer display name and profile picture as Google Play shows them. Turn off to leave both empty. Google account IDs are never included.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed for most runs. Leave off and the Actor moves to Apify datacenter and then residential proxy by itself if Google Play limits it.",
            "default": {
              "useApifyProxy": false
            }
          },
          "autoProxyFallback": {
            "title": "Switch to Apify proxy when Google Play limits requests",
            "type": "boolean",
            "description": "On by default.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}