{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper - No 500-Review Limit, Apps & Charts",
    "description": "Scrape Apple App Store reviews with no 500-review limit, with filters and developer replies. Also app details with rating breakdown, keyword search, top charts and developer apps.",
    "version": "0.1",
    "x-build-id": "kIGH3P5gmr2efVOtJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/esoterik~app-store-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-esoterik-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/esoterik~app-store-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-esoterik-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/esoterik~app-store-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-esoterik-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "reviews",
              "details",
              "search",
              "charts",
              "developer"
            ],
            "type": "string",
            "description": "What to scrape.",
            "default": "reviews"
          },
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "App Store URLs, numeric app IDs or bundle IDs. Used in 'reviews' and 'details' modes. Example: https://apps.apple.com/us/app/instagram/id389801252, 389801252 or com.burbn.instagram.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter App Store country codes, for example us, gb, de, jp. Every country is scraped separately in the same run.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app and country",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of reviews to return for each app in each country. Set 0 for no limit (only useful with deep reviews).",
            "default": 100
          },
          "deepReviews": {
            "title": "Deep reviews",
            "type": "boolean",
            "description": "Off: uses Apple's public review feed, limited to the 500 most recent or most helpful reviews per country, and includes the app version and vote counts. On: no 500-review limit, includes developer replies and the 'favorable' and 'critical' sort orders, but no app version or vote counts.",
            "default": false
          },
          "reviewSort": {
            "title": "Sort reviews by",
            "enum": [
              "recent",
              "helpful",
              "favorable",
              "critical"
            ],
            "type": "string",
            "description": "'Most favorable' and 'Most critical' always use deep reviews.",
            "default": "recent"
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Return only reviews posted on or after this date (YYYY-MM-DD)."
          },
          "minRating": {
            "title": "Minimum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Return only reviews with at least this many stars."
          },
          "maxRating": {
            "title": "Maximum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Return only reviews with at most this many stars. Set to 2 to collect complaints only."
          },
          "reviewKeywords": {
            "title": "Review keywords",
            "type": "array",
            "description": "Return only reviews whose title or text contains at least one of these words or phrases (case-insensitive).",
            "items": {
              "type": "string"
            }
          },
          "onlyNewReviews": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "For scheduled monitoring. The Actor remembers the newest review it saw for each app and country and returns only newer ones on the next run. The first run returns reviews as usual.",
            "default": false
          },
          "extendedDetails": {
            "title": "Extended app details",
            "type": "boolean",
            "description": "Adds the star-rating breakdown, subtitle, version history, privacy labels, in-app purchase flag and chart position to each app. Used in 'details' mode.",
            "default": true
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search for in the App Store. Each term is searched in every selected country.",
            "items": {
              "type": "string"
            }
          },
          "maxSearchResults": {
            "title": "Max results per search term",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of apps to return for each search term in each country (1-200).",
            "default": 50
          },
          "chartType": {
            "title": "Chart",
            "enum": [
              "top-free",
              "top-paid",
              "top-grossing",
              "new",
              "new-free",
              "new-paid"
            ],
            "type": "string",
            "description": "Which chart to scrape.",
            "default": "top-free"
          },
          "chartDevice": {
            "title": "Device",
            "enum": [
              "iphone",
              "ipad"
            ],
            "type": "string",
            "description": "iPad charts are available for top free, top paid and top grossing.",
            "default": "iphone"
          },
          "chartCategory": {
            "title": "Category",
            "enum": [
              "all",
              "6000",
              "6001",
              "6002",
              "6003",
              "6004",
              "6005",
              "6006",
              "6007",
              "6008",
              "6009",
              "6010",
              "6011",
              "6012",
              "6013",
              "6014",
              "6015",
              "6016",
              "6017",
              "6018",
              "6020",
              "6023",
              "6024",
              "6026",
              "6027"
            ],
            "type": "string",
            "description": "Limit the chart to one App Store category.",
            "default": "all"
          },
          "chartLimit": {
            "title": "Chart size",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Number of ranked apps to return for each country (1-100).",
            "default": 100
          },
          "developers": {
            "title": "Developers",
            "type": "array",
            "description": "App Store developer URLs or numeric developer IDs. Example: https://apps.apple.com/us/developer/instagram-inc/id389801255 or 389801255.",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language for app texts such as descriptions, for example en-US or de-DE. Leave empty to use each country's default."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The App Store usually works without a proxy. Turn one on only if runs start failing with blocked requests.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}