{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store & Google Play Scraper | Details, Updates, Ratings",
    "description": "Scrape the store page of any app on the App Store and Google Play in one format: update date, release notes, ratings, installs, permissions, price per country. Only changed apps.",
    "version": "0.0",
    "x-build-id": "lEmDEjXZJThWzaTaL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/happyscrapper~app-store-google-play-app-details/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-happyscrapper-app-store-google-play-app-details",
        "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/happyscrapper~app-store-google-play-app-details/runs": {
      "post": {
        "operationId": "runs-sync-happyscrapper-app-store-google-play-app-details",
        "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/happyscrapper~app-store-google-play-app-details/run-sync": {
      "post": {
        "operationId": "run-sync-happyscrapper-app-store-google-play-app-details",
        "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": {
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "Fill Apps, Search terms or Developers (or several). One app per line: an App Store or Google Play URL, an Apple numeric ID (e.g. 324684580) or an Android package name (e.g. com.spotify.music). Mix both stores freely.",
            "items": {
              "type": "string"
            }
          },
          "stores": {
            "title": "Stores to search",
            "type": "array",
            "description": "Where Search terms and Developers look for apps. Both stores by default: you get, and pay for, the apps of both. Pick one store to get only its apps. Apps you list yourself are always read on their own store.",
            "items": {
              "type": "string",
              "enum": [
                "apple",
                "google_play"
              ],
              "enumTitles": [
                "App Store",
                "Google Play"
              ]
            },
            "default": [
              "apple",
              "google_play"
            ]
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "One keyword per line. The Actor returns the apps that App Store and Google Play search give for each keyword, in each country, with their position in `found_by` (App Store: up to 200 results, Google Play: the first page, about 24).",
            "items": {
              "type": "string"
            }
          },
          "maxAppsPerSearch": {
            "title": "Max apps per search term, country and store",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many of the top results to return for each search term, country and store. Apple gives at most 200, Google Play about 24.",
            "default": 10
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "One developer per line. App Store: the numeric Apple developer ID (e.g. 324684583) or the developer page URL. Google Play: the developer page URL (play.google.com/store/apps/developer?id=...), or the developer exactly as in that address (the name, or the number after dev?id=). The Actor returns every app of each developer.",
            "items": {
              "type": "string"
            }
          },
          "maxAppsPerDeveloper": {
            "title": "Max apps per developer, country and store",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Upper bound of apps returned for each developer and country.",
            "default": 50
          },
          "charts": {
            "title": "Top charts",
            "type": "array",
            "description": "Which store charts to read: Top Free, Top Paid, Top Grossing. For each chart, category, country and store (see 'Stores to search'), you get the top apps with their full store page and their position in `found_by`.",
            "items": {
              "type": "string",
              "enum": [
                "top_free",
                "top_paid",
                "top_grossing"
              ],
              "enumTitles": [
                "Top Free",
                "Top Paid",
                "Top Grossing"
              ]
            }
          },
          "chartCategories": {
            "title": "Chart categories",
            "type": "array",
            "description": "Categories of the charts above. 'overall' is the general chart. The same category name is mapped to the matching App Store genre and Google Play category.",
            "items": {
              "type": "string",
              "enum": [
                "overall",
                "games",
                "health_fitness",
                "social",
                "productivity",
                "finance",
                "entertainment",
                "education",
                "lifestyle",
                "music",
                "news",
                "photo_video",
                "shopping",
                "travel",
                "utilities",
                "weather"
              ]
            },
            "default": [
              "overall"
            ]
          },
          "maxAppsPerChart": {
            "title": "Max apps per chart, category and country",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many apps to return for each chart, category, country and store. Each one is read in full, so keep it small to start.",
            "default": 20
          },
          "suggestKeywords": {
            "title": "Keywords to get suggestions for",
            "type": "array",
            "description": "One keyword per line. For each keyword, country and store you get the store's own autocomplete suggestions, one row each (`record_type` is `keyword_suggestion`, the app fields are empty). With 'Only apps that changed', you only get suggestions never seen before.",
            "items": {
              "type": "string"
            }
          },
          "maxSuggestionsPerKeyword": {
            "title": "Max suggestions per keyword, country and store",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Upper bound of suggestions kept for each keyword, country and store. The stores give about 5 to 10.",
            "default": 10
          },
          "rankKeywords": {
            "title": "Keywords to rank your apps on",
            "type": "array",
            "description": "One keyword per line. For every app in the run, `keyword_ranks` gives its position in the search results of each keyword and country (1 = first, null = not in the results the store gives: 200 on the App Store, about 24 on Google Play). Combine with 'Only apps that changed' to be told when a rank moves.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Both stores sell per country: price, rating, availability and release notes can differ. Pick every country you need: you get one record per app and country.",
            "items": {
              "type": "string",
              "enum": [
                "af",
                "al",
                "dz",
                "ao",
                "ai",
                "ag",
                "ar",
                "am",
                "au",
                "at",
                "az",
                "bs",
                "bh",
                "bb",
                "by",
                "be",
                "bz",
                "bj",
                "bm",
                "bt",
                "bo",
                "ba",
                "bw",
                "br",
                "vg",
                "bn",
                "bg",
                "bf",
                "kh",
                "cm",
                "ca",
                "cv",
                "ky",
                "td",
                "cl",
                "cn",
                "co",
                "cr",
                "hr",
                "cy",
                "cz",
                "ci",
                "cd",
                "dk",
                "dm",
                "do",
                "ec",
                "eg",
                "sv",
                "ee",
                "sz",
                "fj",
                "fi",
                "fr",
                "ga",
                "gm",
                "ge",
                "de",
                "gh",
                "gr",
                "gd",
                "gt",
                "gw",
                "gy",
                "hn",
                "hk",
                "hu",
                "is",
                "in",
                "id",
                "iq",
                "ie",
                "il",
                "it",
                "jm",
                "jp",
                "jo",
                "kz",
                "ke",
                "kr",
                "xk",
                "kw",
                "kg",
                "la",
                "lv",
                "lb",
                "lr",
                "ly",
                "lt",
                "lu",
                "mo",
                "mg",
                "mw",
                "my",
                "mv",
                "ml",
                "mt",
                "mr",
                "mu",
                "mx",
                "fm",
                "md",
                "mn",
                "me",
                "ms",
                "ma",
                "mz",
                "mm",
                "na",
                "nr",
                "np",
                "nl",
                "nz",
                "ni",
                "ne",
                "ng",
                "mk",
                "no",
                "om",
                "pk",
                "pw",
                "pa",
                "pg",
                "py",
                "pe",
                "ph",
                "pl",
                "pt",
                "qa",
                "cg",
                "ro",
                "ru",
                "rw",
                "sa",
                "sn",
                "rs",
                "sc",
                "sl",
                "sg",
                "sk",
                "si",
                "sb",
                "za",
                "es",
                "lk",
                "kn",
                "lc",
                "vc",
                "sr",
                "se",
                "ch",
                "st",
                "tw",
                "tj",
                "tz",
                "th",
                "to",
                "tt",
                "tn",
                "tm",
                "tc",
                "tr",
                "ae",
                "ug",
                "ua",
                "gb",
                "us",
                "uy",
                "uz",
                "vu",
                "ve",
                "vn",
                "ye",
                "zm",
                "zw"
              ]
            },
            "default": [
              "us"
            ]
          },
          "googleLanguage": {
            "title": "Google Play language",
            "enum": [
              "en",
              "fr",
              "de",
              "es",
              "it",
              "pt",
              "nl",
              "pl",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "sk",
              "hu",
              "ro",
              "el",
              "tr",
              "ru",
              "uk",
              "ar",
              "he",
              "fa",
              "hi",
              "bn",
              "id",
              "ms",
              "th",
              "vi",
              "ja",
              "ko",
              "zh"
            ],
            "type": "string",
            "description": "Language of the Google Play texts (description, release notes, category names). App Store texts follow the country storefront.",
            "default": "en"
          },
          "findCounterpart": {
            "title": "Find the same app on the other store",
            "type": "boolean",
            "description": "For each app, search the other store and return the matching app in `counterpart`, with a confidence level (high, medium, low) and the reasons. There is no official link between an iOS app and its Android app: the match relies on the app identifier, the developer website and the names, so low confidence means check by hand. Costs a few extra requests per app, and no extra charge.",
            "default": false
          },
          "changesOnly": {
            "title": "Only apps that changed since the last run",
            "type": "boolean",
            "description": "Schedule this Actor and get only the apps whose version, update date, release notes, price, name, category, age rating, minimum OS or average rating (rounded to 0.1), keyword rank or chart position changed. The first run returns everything. You pay only for the records returned.",
            "default": false
          },
          "compact": {
            "title": "Compact output (LLM-ready)",
            "type": "boolean",
            "description": "About 4 times lighter records, for AI agents and pipelines that pay per token. Description, summary, screenshots, languages, permissions, icon and developer links are left empty (null) and release notes are cut at 300 characters. All fields stay present.",
            "default": false
          },
          "trackingName": {
            "title": "Tracking name",
            "type": "string",
            "description": "Name of the memory used by 'only changed apps'. Use one name per list of apps you track, so lists do not overwrite each other.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}