{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper & API - Ratings, Rankings, Charts",
    "description": "Scrape Apple App Store reviews newest first and as deep as you need, with developer replies, filters (stars, dates, words, replies) and Slack, Discord or Teams alerts for new reviews, plus app details, privacy labels, keyword search rankings and top charts in 175 countries.",
    "version": "0.1",
    "x-build-id": "rd1Z25OcleUTMVfyU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/akhil_rajesh~app-store-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-akhil_rajesh-app-store-reviews-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/akhil_rajesh~app-store-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-akhil_rajesh-app-store-reviews-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/akhil_rajesh~app-store-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-akhil_rajesh-app-store-reviews-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": {
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "App Store links (apps.apple.com/us/app/.../id324684580), app ids (324684580), bundle ids (com.spotify.client) or app names (a name is looked up on the App Store's search and must hold every word you type; the row says which app it matched).",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "App Store countries to read. Reviews, ratings and prices are per country on the App Store: each app's reviews are read in each country picked (Max reviews per app applies to each). Empty: United States.",
            "items": {
              "type": "string",
              "enum": [
                "ae",
                "ag",
                "ai",
                "al",
                "am",
                "ao",
                "ar",
                "at",
                "au",
                "az",
                "bb",
                "be",
                "bf",
                "bg",
                "bh",
                "bj",
                "bm",
                "bn",
                "bo",
                "br",
                "bs",
                "bt",
                "bw",
                "by",
                "bz",
                "ca",
                "cg",
                "ch",
                "ci",
                "cl",
                "cm",
                "cn",
                "co",
                "cr",
                "cv",
                "cy",
                "cz",
                "de",
                "dk",
                "dm",
                "do",
                "dz",
                "ec",
                "ee",
                "eg",
                "es",
                "fi",
                "fj",
                "fm",
                "fr",
                "ga",
                "gb",
                "gd",
                "ge",
                "gh",
                "gm",
                "gr",
                "gt",
                "gw",
                "gy",
                "hk",
                "hn",
                "hr",
                "hu",
                "id",
                "ie",
                "il",
                "in",
                "iq",
                "is",
                "it",
                "jm",
                "jo",
                "jp",
                "ke",
                "kg",
                "kh",
                "kn",
                "kr",
                "kw",
                "ky",
                "kz",
                "la",
                "lb",
                "lc",
                "lk",
                "lr",
                "lt",
                "lu",
                "lv",
                "ly",
                "ma",
                "md",
                "me",
                "mg",
                "mk",
                "ml",
                "mm",
                "mn",
                "mo",
                "mr",
                "ms",
                "mt",
                "mu",
                "mv",
                "mw",
                "mx",
                "my",
                "mz",
                "na",
                "ne",
                "ng",
                "ni",
                "nl",
                "no",
                "np",
                "nr",
                "nz",
                "om",
                "pa",
                "pe",
                "pg",
                "ph",
                "pk",
                "pl",
                "pt",
                "pw",
                "py",
                "qa",
                "ro",
                "rs",
                "ru",
                "rw",
                "sa",
                "sb",
                "sc",
                "se",
                "sg",
                "si",
                "sk",
                "sl",
                "sn",
                "sr",
                "st",
                "sv",
                "sz",
                "tc",
                "td",
                "th",
                "tj",
                "tm",
                "tn",
                "to",
                "tr",
                "tt",
                "tw",
                "tz",
                "ua",
                "ug",
                "us",
                "uy",
                "uz",
                "vc",
                "ve",
                "vg",
                "vn",
                "vu",
                "xk",
                "ye",
                "za",
                "zm",
                "zw",
                "af",
                "ba",
                "cd"
              ],
              "enumTitles": [
                "United Arab Emirates",
                "Antigua and Barbuda",
                "Anguilla",
                "Albania",
                "Armenia",
                "Angola",
                "Argentina",
                "Austria",
                "Australia",
                "Azerbaijan",
                "Barbados",
                "Belgium",
                "Burkina Faso",
                "Bulgaria",
                "Bahrain",
                "Benin",
                "Bermuda",
                "Brunei",
                "Bolivia",
                "Brazil",
                "Bahamas",
                "Bhutan",
                "Botswana",
                "Belarus",
                "Belize",
                "Canada",
                "Congo",
                "Switzerland",
                "Côte d'Ivoire",
                "Chile",
                "Cameroon",
                "China",
                "Colombia",
                "Costa Rica",
                "Cape Verde",
                "Cyprus",
                "Czechia",
                "Germany",
                "Denmark",
                "Dominica",
                "Dominican Republic",
                "Algeria",
                "Ecuador",
                "Estonia",
                "Egypt",
                "Spain",
                "Finland",
                "Fiji",
                "Micronesia",
                "France",
                "Gabon",
                "United Kingdom",
                "Grenada",
                "Georgia",
                "Ghana",
                "Gambia",
                "Greece",
                "Guatemala",
                "Guinea-Bissau",
                "Guyana",
                "Hong Kong",
                "Honduras",
                "Croatia",
                "Hungary",
                "Indonesia",
                "Ireland",
                "Israel",
                "India",
                "Iraq",
                "Iceland",
                "Italy",
                "Jamaica",
                "Jordan",
                "Japan",
                "Kenya",
                "Kyrgyzstan",
                "Cambodia",
                "Saint Kitts and Nevis",
                "South Korea",
                "Kuwait",
                "Cayman Islands",
                "Kazakhstan",
                "Laos",
                "Lebanon",
                "Saint Lucia",
                "Sri Lanka",
                "Liberia",
                "Lithuania",
                "Luxembourg",
                "Latvia",
                "Libya",
                "Morocco",
                "Moldova",
                "Montenegro",
                "Madagascar",
                "North Macedonia",
                "Mali",
                "Myanmar",
                "Mongolia",
                "Macao",
                "Mauritania",
                "Montserrat",
                "Malta",
                "Mauritius",
                "Maldives",
                "Malawi",
                "Mexico",
                "Malaysia",
                "Mozambique",
                "Namibia",
                "Niger",
                "Nigeria",
                "Nicaragua",
                "Netherlands",
                "Norway",
                "Nepal",
                "Nauru",
                "New Zealand",
                "Oman",
                "Panama",
                "Peru",
                "Papua New Guinea",
                "Philippines",
                "Pakistan",
                "Poland",
                "Portugal",
                "Palau",
                "Paraguay",
                "Qatar",
                "Romania",
                "Serbia",
                "Russia",
                "Rwanda",
                "Saudi Arabia",
                "Solomon Islands",
                "Seychelles",
                "Sweden",
                "Singapore",
                "Slovenia",
                "Slovakia",
                "Sierra Leone",
                "Senegal",
                "Suriname",
                "São Tomé and Príncipe",
                "El Salvador",
                "Eswatini",
                "Turks and Caicos Islands",
                "Chad",
                "Thailand",
                "Tajikistan",
                "Turkmenistan",
                "Tunisia",
                "Tonga",
                "Türkiye",
                "Trinidad and Tobago",
                "Taiwan",
                "Tanzania",
                "Ukraine",
                "Uganda",
                "United States",
                "Uruguay",
                "Uzbekistan",
                "Saint Vincent and the Grenadines",
                "Venezuela",
                "British Virgin Islands",
                "Vietnam",
                "Vanuatu",
                "Kosovo",
                "Yemen",
                "South Africa",
                "Zambia",
                "Zimbabwe",
                "Afghanistan",
                "Bosnia and Herzegovina",
                "Congo (Democratic Republic)"
              ]
            }
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Read each app's reviews.",
            "default": true
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Reviews to read per app and country, after the filters. The App Store serves reviews 20 a page, at about 25 pages a minute: 1,000 reviews take about 2 minutes, 10,000 about 20 (runs stop cleanly before their timeout, 1 hour by default: give big runs a longer one). 0: no reviews.",
            "default": 100
          },
          "reviewSort": {
            "title": "Order",
            "enum": [
              "newest",
              "mostRelevant"
            ],
            "type": "string",
            "description": "Newest first, or the store's own ranking (most helpful). Reviews since and Only new reviews stop early only with newest first.",
            "default": "newest"
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only reviews with these stars. Empty: all. 1 star alone or 5 stars alone is asked from the App Store directly (its critical and favorable lists, newest first); other mixes are filtered as read.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "reviewsSince": {
            "title": "Reviews since",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Only reviews written on or after this date (UTC), or within this period (7 days, 3 months). With newest first, reading stops at the first older review."
          },
          "reviewContains": {
            "title": "Reviews that mention",
            "type": "array",
            "description": "Only reviews whose title or text mentions any of these words or phrases (crash, refund, dark mode), in any case and with or without accents. A word also matches the longer words it begins (crash: crashes, crashing). Each review lists the ones it matched (matchedTerms). Empty: every review. With this filter or the ones below, a run reads reviews until Max reviews per app match, or at most 10 times that number (at least 2,000) per app and country: only the reviews returned are charged.",
            "items": {
              "type": "string"
            }
          },
          "developerReply": {
            "title": "Developer reply",
            "enum": [
              "withReply",
              "withoutReply"
            ],
            "type": "string",
            "description": "Only reviews the developer replied to, or only those without a reply (to find the ones still waiting). Empty: both."
          },
          "minReviewLength": {
            "title": "Minimum review length",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Only reviews whose text has at least this many characters (the title not counted): 100 leaves out 'great app' and keeps reviews that explain. Empty or 0: any length."
          },
          "onlyNewReviews": {
            "title": "Only new reviews",
            "type": "boolean",
            "description": "Return only reviews earlier runs with the same History name didn't return, and stop reading where those begin (newest first). For a daily schedule: each run delivers, and charges for, the new reviews only. The first run returns the newest up to Max reviews per app.",
            "default": false
          },
          "includeReviewSummary": {
            "title": "Include a review summary",
            "type": "boolean",
            "description": "One row per app (and country) with what its reviews said: average stars, share of 1-2 star reviews, developer reply rate, reviews per day, and the words most 1-2 star and 4-5 star reviews use.",
            "default": true
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "A Slack incoming webhook (https://hooks.slack.com/services/...), a Discord channel webhook (https://discord.com/api/webhooks/...), a Microsoft Teams Workflows webhook, or any HTTPS URL that takes JSON (Zapier, Make, n8n, your server). Setting it turns on Only new reviews. Stored encrypted, and never shown in the log or the output."
          },
          "alertStars": {
            "title": "Alert on stars",
            "type": "array",
            "description": "Which new reviews to post (up to 50 a run, newest first; the rest are counted). Empty: 1 and 2 stars. Every new review is returned in the dataset either way.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "includeAppDetails": {
            "title": "Include app details",
            "type": "boolean",
            "description": "One row per app and country: ratings with their histogram, price, in-app purchases, version history, privacy labels, size, age rating, developer and seller.",
            "default": true
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search terms (budget app, photo editor). One ranking per keyword and country.",
            "items": {
              "type": "string"
            }
          },
          "rankPositions": {
            "title": "Positions per keyword",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Ranks to read per keyword. The App Store's own search order covers about the first 11 apps; past those, positions come from Apple's Search API, whose order differs (marked rankSource: searchApi, an estimate). Up to 200.",
            "default": 25
          },
          "charts": {
            "title": "Charts",
            "type": "array",
            "description": "Charts to read, in each country.",
            "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 each chart. Empty: all apps.",
            "items": {
              "type": "string",
              "enum": [
                "Books",
                "Business",
                "Developer Tools",
                "Education",
                "Entertainment",
                "Finance",
                "Food & Drink",
                "Games",
                "Graphics & Design",
                "Health & Fitness",
                "Lifestyle",
                "Magazines & Newspapers",
                "Medical",
                "Music",
                "Navigation",
                "News",
                "Photo & Video",
                "Productivity",
                "Reference",
                "Shopping",
                "Social Networking",
                "Sports",
                "Travel",
                "Utilities",
                "Weather",
                "Games: Action",
                "Games: Adventure",
                "Games: Board",
                "Games: Card",
                "Games: Casino",
                "Games: Casual",
                "Games: Family",
                "Games: Music",
                "Games: Puzzle",
                "Games: Racing",
                "Games: Role Playing",
                "Games: Simulation",
                "Games: Sports",
                "Games: Strategy",
                "Games: Trivia",
                "Games: Word"
              ],
              "enumTitles": [
                "Books",
                "Business",
                "Developer Tools",
                "Education",
                "Entertainment",
                "Finance",
                "Food & Drink",
                "Games",
                "Graphics & Design",
                "Health & Fitness",
                "Lifestyle",
                "Magazines & Newspapers",
                "Medical",
                "Music",
                "Navigation",
                "News",
                "Photo & Video",
                "Productivity",
                "Reference",
                "Shopping",
                "Social Networking",
                "Sports",
                "Travel",
                "Utilities",
                "Weather",
                "Games: Action",
                "Games: Adventure",
                "Games: Board",
                "Games: Card",
                "Games: Casino",
                "Games: Casual",
                "Games: Family",
                "Games: Music",
                "Games: Puzzle",
                "Games: Racing",
                "Games: Role Playing",
                "Games: Simulation",
                "Games: Sports",
                "Games: Strategy",
                "Games: Trivia",
                "Games: Word"
              ]
            }
          },
          "chartPositions": {
            "title": "Positions per chart",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Ranks to read per chart (the App Store's charts list 100).",
            "default": 100
          },
          "compareWithLastRun": {
            "title": "Compare rankings and charts with the last run",
            "type": "boolean",
            "description": "Add each app's previous rank and move, and mark new apps. The first run sets the baseline.",
            "default": true
          },
          "includeDroppedOut": {
            "title": "Include apps that dropped out",
            "type": "boolean",
            "description": "Add a row for each app in the last run's ranking or chart that isn't in this one (on top of the positions asked for).",
            "default": true
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Name of the key-value store that keeps the tracking history (a-z, 0-9 and hyphens). Empty: app-store-reviews-history. Use a new name to start over; under limited permissions the Actor can only open stores it created itself."
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "App Store needs no proxy. Apify's datacenter proxy or your own proxies can be used; residential proxies are refused (billed per GB on top of the result price)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}