{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper - Apple iOS Reviews & Ratings API",
    "description": "Scrape Apple App Store reviews and ratings for any iOS app by app ID, URL or search term. Get star rating, title, body, author, app version, date and developer response across 150+ country stores, with rating, date, version and keyword filters. No API key. Export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "JORkgRZVLCRlXPpuB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~app-store-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-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/scrapers_lat~app-store-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-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/scrapers_lat~app-store-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-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": {
          "appIds": {
            "title": "App IDs",
            "type": "array",
            "description": "Apple App Store numeric app IDs (e.g. 324684580 for Spotify).",
            "items": {
              "type": "string"
            }
          },
          "appUrls": {
            "title": "App Store URLs",
            "type": "array",
            "description": "Full App Store URLs (e.g. https://apps.apple.com/us/app/spotify/id324684580). The app ID and country are read from the URL.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (alias)",
            "type": "array",
            "description": "Alias for App Store URLs. Accepts plain URLs or {\"url\": \"...\"} objects. Merged with App Store URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchTerm": {
            "title": "Search term",
            "type": "string",
            "description": "Find apps by name and scrape the reviews of the top matches."
          },
          "searchLimit": {
            "title": "Apps per search",
            "minimum": 1,
            "type": "integer",
            "description": "How many apps to take from the search term.",
            "default": 3
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter App Store country code for ratings and reviews (e.g. us, gb, mx, br). Used when Countries is empty.",
            "default": "us"
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Optional. Multiple two-letter App Store country codes to scrape each app in every listed storefront (e.g. us, gb, mx, br). Use [\"all\"] to scrape every supported country. Overrides Country when set.",
            "items": {
              "type": "string"
            }
          },
          "maxReviews": {
            "title": "Reviews per app",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum reviews to fetch per app and country. The store review feed paginates deep (thousands of reviews for popular apps). Set 0 with Include app-only rows for metadata only.",
            "default": 10
          },
          "sortBy": {
            "title": "Sort reviews by",
            "enum": [
              "mostRecent",
              "mostHelpful"
            ],
            "type": "string",
            "description": "Order reviews by most recent or most helpful.",
            "default": "mostRecent"
          },
          "includeAppMetadata": {
            "title": "Include app-only rows",
            "type": "boolean",
            "description": "Also output one app-details row for apps that have no reviews (or when Reviews per app is 0). Off by default so you are never charged for apps that return no reviews.",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Optional. Only return reviews with a star rating >= this value (1-5)."
          },
          "maxRating": {
            "title": "Maximum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Optional. Only return reviews with a star rating <= this value (1-5)."
          },
          "reviewsFromDate": {
            "title": "Reviews from date",
            "type": "string",
            "description": "Optional. Only return reviews on or after this date (e.g. 2025-01-01)."
          },
          "reviewsToDate": {
            "title": "Reviews to date",
            "type": "string",
            "description": "Optional. Only return reviews on or before this date (e.g. 2025-12-31)."
          },
          "reviewKeyword": {
            "title": "Keyword filter",
            "type": "string",
            "description": "Optional. Only return reviews whose title or body contains this text (case-insensitive)."
          },
          "reviewAppVersion": {
            "title": "App version filter",
            "type": "string",
            "description": "Optional. Only return reviews left on this exact app version (e.g. 8.9.0)."
          },
          "onlyWithDeveloperResponse": {
            "title": "Only reviews with a developer response",
            "type": "boolean",
            "description": "Optional. Only return reviews that have a developer/owner reply.",
            "default": false
          },
          "withSentiment": {
            "title": "AI sentiment (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Classify each review's sentiment (positive/negative/neutral) with a confidence score using AI. Requires a paid Apify plan.",
            "default": false
          },
          "withSummary": {
            "title": "AI summary (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Generate a 1-2 sentence AI summary of each review. Requires a paid Apify plan.",
            "default": false
          },
          "withTopics": {
            "title": "AI topics & category (add-on)",
            "type": "boolean",
            "description": "Opt-in paid add-on. Extract the app aspects/keywords discussed and a broad category for each review using AI. Requires a paid Apify plan.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}