{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store and Google Play Scraper (Reviews and Charts)",
    "description": "Scrape App Store and Google Play reviews and app data in one schema: rating, title, text, date, app version and developer reply, plus installs, ratings count, price and rank from search and top charts. Filter by stars, date, keyword or version. Any country. No login. $0.10 per 1,000 reviews.",
    "version": "0.1",
    "x-build-id": "DYYy28eP6YrdsiGDV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/locaihost~app-stores/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-locaihost-app-stores",
        "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/locaihost~app-stores/runs": {
      "post": {
        "operationId": "runs-sync-locaihost-app-stores",
        "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/locaihost~app-stores/run-sync": {
      "post": {
        "operationId": "run-sync-locaihost-app-stores",
        "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": [
              "details",
              "search",
              "charts",
              "developer",
              "reviews",
              "similar"
            ],
            "type": "string",
            "description": "details: full records for the apps you list. search: apps for your search words. charts: top free, paid or grossing apps. developer: every app by a developer. reviews: reviews of the apps you list. similar: the apps each store shows as similar.",
            "default": "details"
          },
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "App Store links or ids (https://apps.apple.com/us/app/id570060128 or 570060128) and Google Play links or package names (com.duolingo). Mix both stores freely. For an App Store bundle id, write apple:com.example.app.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Words to search for, one per line, as a shopper would type them (\"habit tracker\", \"budget app\"). Used in search mode.",
            "items": {
              "type": "string"
            }
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "An App Store developer link (https://apps.apple.com/us/developer/meta-platforms-inc/id284882218) or id, a Google Play developer link, or a Google Play developer name exactly as on Play (\"Google LLC\"). Used in developer mode.",
            "items": {
              "type": "string"
            }
          },
          "stores": {
            "title": "Stores",
            "type": "array",
            "description": "Which stores to read in search and charts mode. In the other modes each link or id already says its store.",
            "items": {
              "type": "string",
              "enum": [
                "apple",
                "google"
              ],
              "enumTitles": [
                "Apple App Store",
                "Google Play"
              ]
            },
            "default": [
              "apple",
              "google"
            ]
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter store countries, such as us, gb, de, jp, in, br. Each country is read separately: prices, ranks, charts and reviews differ by country.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language for Google Play text and reviews (en, de, pt-BR ...). The App Store uses each country's own language.",
            "default": "en"
          },
          "chartTypes": {
            "title": "Charts",
            "type": "array",
            "description": "Which charts to read in charts mode.",
            "items": {
              "type": "string",
              "enum": [
                "top-free",
                "top-paid",
                "top-grossing"
              ],
              "enumTitles": [
                "Top free",
                "Top paid",
                "Top grossing"
              ]
            },
            "default": [
              "top-free"
            ]
          },
          "category": {
            "title": "Category",
            "enum": [
              "all",
              "games",
              "books",
              "business",
              "education",
              "entertainment",
              "finance",
              "food-drink",
              "health-fitness",
              "lifestyle",
              "medical",
              "music",
              "navigation",
              "news",
              "photo-video",
              "productivity",
              "shopping",
              "social",
              "sports",
              "travel",
              "utilities",
              "weather",
              "communication",
              "dating",
              "kids",
              "developer-tools",
              "graphics-design",
              "game-action",
              "game-adventure",
              "game-board",
              "game-card",
              "game-casino",
              "game-casual",
              "game-puzzle",
              "game-racing",
              "game-role-playing",
              "game-simulation",
              "game-sports",
              "game-strategy",
              "game-trivia",
              "game-word"
            ],
            "type": "string",
            "description": "Chart category. A few categories exist in only one store; the run says so and reads the other.",
            "default": "all"
          },
          "maxResults": {
            "title": "Max apps per list",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Most apps per search, chart, developer or similar-apps list, per store and country (1 to 200). Google Play shows about 30 results per search.",
            "default": 50
          },
          "fullDetails": {
            "title": "Full details for Google Play lists",
            "type": "boolean",
            "description": "Google Play search, chart, developer and similar lists show a short card per app. On, each app's own page is read too, which adds ratings count, version, update date and developer id. Off is faster. App Store rows are always full.",
            "default": true
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "helpful"
            ],
            "type": "string",
            "description": "Newest first, or most helpful first.",
            "default": "newest"
          },
          "reviewRatings": {
            "title": "Only these star ratings",
            "type": "array",
            "description": "Leave empty for all ratings. Pick 1 and 2 to collect complaints only.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Per app and country. The App Store's public feed holds at most 500 reviews per app, country and order; Google Play has no such limit. Default 100.",
            "default": 100
          },
          "reviewsSince": {
            "title": "Reviews published on or after",
            "type": "string",
            "description": "Optional. Only reviews from this date on, like 2026-09-01, or a period back from today like 30 days. With newest-first order the run stops reading an app at the first older review, so it reads only the pages it needs. Older reviews are not charged."
          },
          "reviewKeywords": {
            "title": "Reviews mentioning",
            "type": "array",
            "description": "Optional. Only reviews whose title or text contains one of these words or phrases, ignoring case, e.g. crash, refund, subscription. Other reviews are left out and not charged.",
            "items": {
              "type": "string"
            }
          },
          "appVersions": {
            "title": "App versions",
            "type": "array",
            "description": "Optional. Only reviews written on these app versions, as the store shows them. 5.2 matches 5.2 and 5.2.1. Reviews that show no version are left out. Not charged when left out.",
            "items": {
              "type": "string"
            }
          },
          "includeReviewerNames": {
            "title": "Include reviewer display names",
            "type": "boolean",
            "description": "Off by default. On adds the public display name the store shows. Emails, account ids and profile pictures are never collected.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new since the last run",
            "type": "boolean",
            "description": "Skip apps and reviews this same input already returned in an earlier run. Turn on for scheduled review monitoring or to catch new chart entries. You pay only for new rows.",
            "default": false
          },
          "maxItems": {
            "title": "Max rows",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many charged rows in total. 0 means no limit.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}