{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Scraper: Reviews, App Details, Search & Charts",
    "description": "Scrape Google Play reviews (unlimited, any country and language, star and date filters), full app details with data safety and developer contacts, search results, top charts, developer apps and similar apps. Missing apps never crash a run.",
    "version": "0.1",
    "x-build-id": "X5KKbNrWEXVY9KQhU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wulfcare~google-play-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wulfcare-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/wulfcare~google-play-scraper/runs": {
      "post": {
        "operationId": "runs-sync-wulfcare-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/wulfcare~google-play-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-wulfcare-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": "What to scrape",
            "enum": [
              "reviews",
              "apps",
              "search",
              "charts",
              "developer",
              "similar"
            ],
            "type": "string",
            "description": "Each run returns one kind of row, so your dataset always has the same columns. Reviews and App details use the app list below; the other modes use their own section.",
            "default": "reviews"
          },
          "appIds": {
            "title": "Apps",
            "type": "array",
            "description": "Package names (com.spotify.music) or Google Play URLs (https://play.google.com/store/apps/details?id=com.spotify.music). Used by Reviews, App details and Similar apps.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (us, gb, de, in, ng, br, ...). Prices, availability, charts and search results follow this country.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code (en, de, es, pt-BR, ...). Google Play returns reviews written in this language, and app texts in it when the developer provides a translation.",
            "default": "en"
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 0,
            "type": "integer",
            "description": "0 = every review Google Play has (it pages through them all). With a star filter the limit applies to each star rating separately.",
            "default": 100
          },
          "reviewsSort": {
            "title": "Sort reviews by",
            "enum": [
              "newest",
              "relevant"
            ],
            "type": "string",
            "description": "Newest first is best for monitoring and date cutoffs.",
            "default": "newest"
          },
          "reviewStars": {
            "title": "Only these star ratings",
            "type": "array",
            "description": "Leave empty for all ratings. Filtering happens on Google Play's side, so asking for 1-star reviews doesn't cost you the others.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Stop at reviews older than this date, e.g. 2026-09-01 or \"30 days\". Fastest with \"Newest first\"."
          },
          "includeReviewerNames": {
            "title": "Include reviewer display names",
            "type": "boolean",
            "description": "Off by default. Reviewer ids and profile pictures are never collected.",
            "default": false
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "One search per line, e.g. \"budget tracker\". Google Play's website shows up to about 30 apps per search.",
            "items": {
              "type": "string"
            }
          },
          "chartCollections": {
            "title": "Charts",
            "type": "array",
            "description": "Which top charts to fetch (up to 200 apps each).",
            "items": {
              "type": "string",
              "enum": [
                "topselling_free",
                "topselling_paid",
                "topgrossing"
              ],
              "enumTitles": [
                "Top free",
                "Top paid",
                "Top grossing"
              ]
            },
            "default": [
              "topselling_free"
            ]
          },
          "chartCategories": {
            "title": "Chart categories",
            "type": "array",
            "description": "Every chart is fetched for every category picked here.",
            "items": {
              "type": "string",
              "enum": [
                "APPLICATION",
                "GAME",
                "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",
                "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",
                "FAMILY"
              ],
              "enumTitles": [
                "All apps",
                "All games",
                "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",
                "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",
                "Kids"
              ]
            },
            "default": [
              "APPLICATION"
            ]
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "Developer names exactly as on Google Play (\"Spotify AB\"), numeric developer ids, or developer page URLs.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max apps per search / chart / developer",
            "minimum": 0,
            "type": "integer",
            "description": "0 = everything Google Play shows (search ~30, charts 200, similar ~50).",
            "default": 0
          },
          "includeFullDetails": {
            "title": "Full details for every listed app",
            "type": "boolean",
            "description": "Search, charts, developer and similar modes return a compact card by default. Turn this on to get the full App details row (ratings histogram, developer contact, data safety, ...) for each app, charged as an app detail.",
            "default": false
          },
          "includeDataSafety": {
            "title": "Include data safety section",
            "type": "boolean",
            "description": "What data the app collects and shares, for what purpose, and its security practices. Free, it comes with the same request.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Also include description HTML",
            "type": "boolean",
            "description": "The plain-text description is always included. Turn on to also get the original HTML.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy works well for Google Play. A failed request is retried on a new IP.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many apps or searches are fetched at the same time.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}