{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Scraper: Reviews, App Details, Search & Charts",
    "description": "Scrape Apple App Store reviews with no 500 cap (any country, newest/helpful/critical sort, star and date filters, developer replies), full app details with rating histogram, version history and App Privacy labels, search results, top charts, developer apps and similar apps.",
    "version": "0.1",
    "x-build-id": "b1l98mCypQYoKh4dR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wulfcare~app-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wulfcare-app-store-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~app-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-wulfcare-app-store-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~app-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-wulfcare-app-store-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, App details and Similar apps use the app list below; the other modes use their own section.",
            "default": "reviews"
          },
          "appIds": {
            "title": "Apps",
            "type": "array",
            "description": "App Store URLs (https://apps.apple.com/us/app/.../id324684580), numeric app ids (324684580) or bundle ids (com.spotify.client). Used by Reviews, App details and Similar apps.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter App Store country codes (us, gb, de, jp, br, ...). Each country is its own store with its own reviews, prices, charts and search results; add several to cover them all in one run. Every row says which country it came from.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional, e.g. en-US, de-DE, fr-FR. App names and descriptions come in this language when the developer provides it. Leave empty for each country's default language. Reviews are always the ones written in that country's store, whatever their language."
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app",
            "minimum": 0,
            "type": "integer",
            "description": "0 = every review the App Store has for the app in each country (no 500 cap). With a star filter, this counts only reviews with those stars.",
            "default": 100
          },
          "reviewsSort": {
            "title": "Sort reviews by",
            "enum": [
              "newest",
              "helpful",
              "favorable",
              "critical"
            ],
            "type": "string",
            "description": "Newest first is best for monitoring and date cutoffs. Most critical is the fastest way to get complaints.",
            "default": "newest"
          },
          "reviewStars": {
            "title": "Only these star ratings",
            "type": "array",
            "description": "Leave empty for all ratings. You're only charged for reviews with these stars. Tip: with Most critical (or Most favorable) the run stops as soon as it's past the stars you picked.",
            "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": "Skip reviews older than this, e.g. 2026-09-01 or \"30 days\". With Newest first the run stops as soon as it reaches older reviews."
          },
          "includeReviewerNames": {
            "title": "Include reviewer nicknames",
            "type": "boolean",
            "description": "Off by default. The App Store shows a nickname for each reviewer; no other reviewer data is collected.",
            "default": false
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "One search per line, e.g. \"habit tracker\". Up to 200 apps per term and country.",
            "items": {
              "type": "string"
            }
          },
          "chartCollections": {
            "title": "Charts",
            "type": "array",
            "description": "Which top charts to fetch (up to 100 apps each, Apple's limit).",
            "items": {
              "type": "string",
              "enum": [
                "topfree",
                "toppaid",
                "topgrossing"
              ],
              "enumTitles": [
                "Top free",
                "Top paid",
                "Top grossing"
              ]
            },
            "default": [
              "topfree"
            ]
          },
          "chartDevice": {
            "title": "Chart device",
            "enum": [
              "iphone",
              "ipad",
              "mac"
            ],
            "type": "string",
            "description": "iPhone, iPad or Mac App Store charts.",
            "default": "iphone"
          },
          "chartGenres": {
            "title": "Chart categories",
            "type": "array",
            "description": "One chart per category (and per chart and country). iPhone and iPad only; Mac charts are overall.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "6014",
                "6018",
                "6000",
                "6022",
                "6026",
                "6017",
                "6016",
                "6015",
                "6023",
                "6027",
                "6013",
                "6012",
                "6021",
                "6020",
                "6011",
                "6010",
                "6009",
                "6008",
                "6007",
                "6006",
                "6024",
                "6005",
                "6004",
                "6025",
                "6003",
                "6002",
                "6001",
                "7001",
                "7002",
                "7004",
                "7005",
                "7006",
                "7003",
                "7007",
                "7008",
                "7009",
                "7011",
                "7012",
                "7013",
                "7014",
                "7015",
                "7016",
                "7017",
                "7018",
                "7019"
              ],
              "enumTitles": [
                "All apps",
                "All games",
                "Books",
                "Business",
                "Catalogs",
                "Developer Tools",
                "Education",
                "Entertainment",
                "Finance",
                "Food & Drink",
                "Graphics & Design",
                "Health & Fitness",
                "Lifestyle",
                "Magazines & Newspapers",
                "Medical",
                "Music",
                "Navigation",
                "News",
                "Photo & Video",
                "Productivity",
                "Reference",
                "Shopping",
                "Social Networking",
                "Sports",
                "Stickers",
                "Travel",
                "Utilities",
                "Weather",
                "Games: Action",
                "Games: Adventure",
                "Games: Board",
                "Games: Card",
                "Games: Casino",
                "Games: Casual",
                "Games: Dice",
                "Games: Educational",
                "Games: Family",
                "Games: Music",
                "Games: Puzzle",
                "Games: Racing",
                "Games: Role Playing",
                "Games: Simulation",
                "Games: Sports",
                "Games: Strategy",
                "Games: Trivia",
                "Games: Word"
              ]
            },
            "default": [
              "all"
            ]
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "Developer page URLs (https://apps.apple.com/us/developer/supercell/id488106216), numeric developer ids, or exact developer names as shown on the App Store.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max apps per search / chart / developer / similar",
            "minimum": 0,
            "type": "integer",
            "description": "0 = everything the App Store lists (search up to 200, charts up to 100).",
            "default": 0
          },
          "includeFullDetails": {
            "title": "Full details for every listed app",
            "type": "boolean",
            "description": "Search, charts, developer and similar modes return an app card by default. Turn this on to get the full App details row (ratings histogram, version history, privacy labels, ...) for each app, charged as an app detail.",
            "default": false
          },
          "includePrivacyLabels": {
            "title": "Include App Privacy labels",
            "type": "boolean",
            "description": "The app's privacy \"nutrition label\": data linked to you, data used to track you, and why. Free, it comes with the same request.",
            "default": true
          },
          "includeVersionHistory": {
            "title": "Include version history",
            "type": "boolean",
            "description": "Recent versions with their dates and release notes.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The App Store limits how fast one IP can page through reviews, so requests are spread over the run's own IP and Apify Proxy IPs. Datacenter proxy is plenty.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Parallel connections",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many IPs requests are spread over (the run's own IP plus proxy sessions). More is faster for very large review pulls.",
            "default": 6
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}