{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper",
    "description": "Extracts Apple App Store reviews by app id or URL across one, many or all countries; returns rating, title, text, date, app version, helpful votes and reviewer as JSON. Only-new mode for monitoring, star and keyword filters. Export, API, schedules, MCP.",
    "version": "0.0",
    "x-build-id": "Gicf6hgrTizn2tFoI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apifry~app-store-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apifry-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/apifry~app-store-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apifry-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/apifry~app-store-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apifry-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": [
          "apps"
        ],
        "properties": {
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "Add App Store apps as numeric ids (389801252) or app URLs (https://apps.apple.com/us/app/instagram/id389801252). One app per line.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Add two-letter App Store country codes (us, gb, de, fr, jp …). Each country has its own reviews, so more countries = more reviews. Default: us.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "allCountries": {
            "title": "All countries",
            "type": "boolean",
            "description": "Turn on to read every App Store country (about 175) instead of the list above. Countries without reviews cost nothing.",
            "default": false
          },
          "maxReviewsPerCountry": {
            "title": "Max reviews per app per country",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Enter the most reviews to keep per app in each country (3 countries x 100 = up to 300 per app). Apple serves up to 500 newest reviews per country, and up to ~1,000 with 'Newest + most helpful'. You pay only for reviews stored in the dataset.",
            "default": 100
          },
          "sort": {
            "title": "Order",
            "enum": [
              "newest",
              "mostHelpful",
              "newestAndMostHelpful"
            ],
            "type": "string",
            "description": "Choose which of Apple's review lists to read. 'Newest + most helpful' reads the most-helpful list only after the newest list, so it adds reviews only when Max reviews per country is above 500. Date filters below always use Newest first.",
            "default": "newest"
          },
          "onlyNewerThan": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "Enter a date (2026-10-01) or a relative period (7 days, 12 hours, 2 weeks). Older reviews are skipped and not charged; the run stops once it reaches them."
          },
          "onlyNewSinceLastRun": {
            "title": "Only new since the last run",
            "type": "boolean",
            "description": "Turn on for scheduled monitoring: each run keeps only reviews newer than the newest one seen by your previous run (per app and country). The mark is kept in the key-value store 'apifry-app-store-reviews-state' in your account. Busy apps get 500 reviews within days, so schedule daily for them.",
            "default": false
          },
          "stars": {
            "title": "Star ratings",
            "type": "array",
            "description": "Select the star ratings to keep, e.g. 1 and 2 for complaints. Other reviews are skipped and not charged. Leave empty for all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Add words or phrases; only reviews whose title or text contains at least one of them are kept (case-insensitive). Reviews without a match are not charged. Leave empty to keep all.",
            "items": {
              "type": "string"
            }
          },
          "includeTags": {
            "title": "Tag every review (topics, sentiment, bug, feature request)",
            "type": "boolean",
            "description": "Adds topics (crashes, login, ads, price, updates, speed, interface, support), sentiment, isBugReport and isFeatureRequest to each review. Tagged reviews are charged the 'Review with tags' price instead of 'Review'. Reviews in languages other than EN, DE, FR, ES, PT, IT, RU stay untagged at the plain review price. Rule-based, not AI.",
            "default": false
          },
          "includeInsights": {
            "title": "Insights per app",
            "type": "boolean",
            "description": "Writes record INSIGHTS: complaint topics with shares and quotes, frequent words and phrases in 1–2 star reviews, feature requests, developer reply rate and time. Charged once per app with at least 30 reviews in this run; failed, incomplete or tiny samples are free. Based on the reviews this run collected — the store rating stays in SUMMARY.",
            "default": false
          },
          "includeTrends": {
            "title": "Trends per app",
            "type": "boolean",
            "description": "Writes record TRENDS: average rating, review count and 1–2 star share per week or month with change to the previous period, a spike flag, and the same by app version and by country. Charged once per app with at least 30 reviews in this run. Use Newest first and no star or keyword filter for a true picture.",
            "default": false
          },
          "useApifyProxy": {
            "title": "Use Apify Proxy (datacenter)",
            "type": "boolean",
            "description": "Turn on only if runs fail with rate-limit errors. The App Store is normally reachable without a proxy.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}