{
  "openapi": "3.0.1",
  "info": {
    "title": "Apple Reviews Scraper | App Store Reviews and Ratings",
    "description": "Apple App Store reviews scraper: paste an app link, id, bundle id or app name and get every review with stars, title, full text, author, date, edits and the developer's reply, plus the app's name, developer, genre and rating. 100 reviews in 6 seconds, 27 fields each, any country, no Apple account.",
    "version": "1.0",
    "x-build-id": "jLkmtLev4SDPke0cb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/silentflow~apple-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-silentflow-apple-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/silentflow~apple-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-silentflow-apple-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/silentflow~apple-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-silentflow-apple-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": {
          "startUrls": {
            "title": "🔗 App Store links",
            "type": "array",
            "description": "Paste App Store pages copied from a browser or the Share button:<ul><li>an app: <code>https://apps.apple.com/us/app/instagram/id389801252</code></li><li>a developer, to read the reviews of each of its apps: <code>https://apps.apple.com/us/developer/meta-platforms-inc/id284882218</code></li></ul>Mac apps work too. A link is read in its own country store (<code>/gb/</code> reads the UK store) unless you fill the countries below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "appIds": {
            "title": "🆔 App ids or bundle ids",
            "type": "array",
            "description": "The numeric App Store id (<code>389801252</code>, the digits after <code>id</code> in any App Store link) or the bundle id (<code>com.burbn.instagram</code>). Handy for a watchlist of your app and its competitors. An id the store does not carry gives no row and is named in the run log.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "🔎 App names",
            "type": "array",
            "description": "Just type the app's name as you would on an iPhone: <code>spotify</code>, <code>duolingo</code>, <code>calm</code>. Each name reads the reviews of the App Store's top match, and the run log says which app it picked. Use a link or an id when two apps share a name.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "🌍 App Store countries",
            "type": "array",
            "description": "Two-letter country codes: <code>us</code>, <code>gb</code>, <code>de</code>, <code>fr</code>, <code>jp</code>, <code>br</code>. Every app is read in each store listed, since each country has its own reviews in its own language. Leave empty to read each link in its own store and ids and names in the US store.",
            "items": {
              "type": "string"
            }
          },
          "maxReviews": {
            "title": "🔢 Max reviews per app",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many reviews for each app in each country. Apple's lists run thousands of reviews deep, so there is no fixed ceiling: in our tests 100 Instagram reviews took 17 seconds and 1,000 Robinhood reviews under four minutes. Set it to what you need, the cost grows with it.",
            "default": 100
          },
          "sort": {
            "title": "↕️ Review order",
            "enum": [
              "mostRecent",
              "mostHelpful",
              "mostCritical",
              "mostFavorable",
              "both"
            ],
            "type": "string",
            "description": "<b>Most recent</b> for release monitoring and support triage, <b>Most helpful</b> for the reviews other users voted up, going back years. <b>Most critical</b> lists the lowest stars first, the quick way to collect complaints; <b>Most favorable</b> the highest stars first. <b>Both</b> reads the most recent ones, then adds the most helpful ones not delivered yet: raise the max reviews to get both lists.",
            "default": "mostRecent"
          },
          "ratings": {
            "title": "⭐ Star ratings",
            "type": "array",
            "description": "Keep only these stars, for example <b>1</b> and <b>2</b> to collect complaints (pair it with <b>Most critical first</b> to reach them sooner). Leave empty for every review. The max reviews counts the reviews kept, so a narrow filter reads more of Apple's list to fill it.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "★ 1 star",
                "★★ 2 stars",
                "★★★ 3 stars",
                "★★★★ 4 stars",
                "★★★★★ 5 stars"
              ]
            }
          },
          "since": {
            "title": "📅 Reviews since",
            "type": "string",
            "description": "Keep only reviews written after a date (<code>2026-09-01</code>) or within a span back from the run (<code>7 days</code>, <code>24 hours</code>, <code>2 weeks</code>, <code>3 months</code>). With the most recent order the run stops as soon as it reaches older reviews, which makes a scheduled run quick. Apple lists new reviews about a day after they are written: on a daily schedule use <code>3 days</code> and skip the review ids you already have. Leave empty for every review."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}