{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper: Ratings, Text & Versions, $0.10/1k",
    "description": "App Store reviews scraper: paste app IDs, bundle IDs or URLs and get rating, title, text, version, author and date for each review, per country, as JSON/CSV/Excel. $0.10 per 1,000 reviews, first 3 per run free, no API key. Built with AI assistance.",
    "version": "0.1",
    "x-build-id": "kmFht7DEaHP7h16J5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pennydata~appstore-reviews-rss/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pennydata-appstore-reviews-rss",
        "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/pennydata~appstore-reviews-rss/runs": {
      "post": {
        "operationId": "runs-sync-pennydata-appstore-reviews-rss",
        "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/pennydata~appstore-reviews-rss/run-sync": {
      "post": {
        "operationId": "run-sync-pennydata-appstore-reviews-rss",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "reviews",
              "appInfo"
            ],
            "type": "string",
            "description": "reviews (default) returns customer reviews. appInfo returns App Store app details (name, developer, price, rating, rating count, version, release notes, genres, screenshots) for the listed apps or for apps found by search terms.",
            "default": "reviews"
          },
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "Numeric App Store app IDs (e.g. 389801252), App Store URLs (e.g. https://apps.apple.com/gb/app/spotify/id324684580; the country in the URL is used), or bundle IDs / package names (e.g. com.burbn.instagram). One entry per app.",
            "default": [
              "310633997",
              "389801252"
            ],
            "items": {
              "type": "string"
            }
          },
          "bundleIds": {
            "title": "Bundle IDs (package names)",
            "type": "array",
            "description": "iOS bundle IDs such as com.burbn.instagram, resolved to the App Store app via Apple's lookup API. Use instead of, or together with, Apps.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter App Store country codes (e.g. us, gb, de). Reviews are stored per storefront, so each country is fetched separately.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages per country",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Pages of reviews to fetch per app and country (50 reviews per page). Apple exposes at most 10 pages, i.e. 500 most recent reviews.",
            "default": 2
          },
          "maxReviewsPerAppCountry": {
            "title": "Max reviews per app and country",
            "minimum": 0,
            "type": "integer",
            "description": "Optional hard cap on reviews returned (and charged) for each app and country combination. Default 50; set 0 for no extra cap beyond max pages.",
            "default": 50
          },
          "dateFrom": {
            "title": "Only reviews from date",
            "type": "string",
            "description": "Keep only reviews on or after this date (e.g. 2026-09-01). Reviews are read newest first, so paging stops once older reviews are reached. Filtered-out reviews are not billed."
          },
          "minRating": {
            "title": "Minimum star rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with at least this many stars (1-5). 0 keeps all. Filtered-out reviews are not billed.",
            "default": 0
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "mostRecent",
              "mostHelpful"
            ],
            "type": "string",
            "description": "mostRecent (default) returns newest reviews first; mostHelpful returns the reviews other users voted most helpful first. Each review row carries helpfulCount.",
            "default": "mostRecent"
          },
          "sampleOnly": {
            "title": "Free sample: first 10 reviews, no charge",
            "type": "boolean",
            "description": "When on, at most 10 reviews are returned in total and no pay-per-event charge is made. Use it to try the output format at no cost.",
            "default": false
          },
          "includeSummary": {
            "title": "Add summary row",
            "type": "boolean",
            "description": "Adds one free summary row per app and country (recordType: summary) saying how many reviews Apple exposes (500 per country cap) and why the run stopped. Not billed.",
            "default": true
          },
          "searchTerms": {
            "title": "Search terms (appInfo mode)",
            "type": "array",
            "description": "appInfo mode only: keywords to search the App Store for apps (e.g. 'habit tracker'). Each term and country returns up to Max search results apps.",
            "items": {
              "type": "string"
            }
          },
          "maxSearchResults": {
            "title": "Max search results per term (appInfo mode)",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "appInfo mode only: apps returned per search term and country (1-200).",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}