{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store Reviews Scraper | All Countries, Monitor | $0.06 / 1K",
    "description": "App Store reviews for any iOS app in all 177 countries: stars, title, text, author, app version, date, helpful votes. Paste URLs, ids or app names. Only-new-reviews monitoring for schedules, star, date and keyword filters, optional rating summary. No login. $0.06 per 1,000 reviews.",
    "version": "0.1",
    "x-build-id": "2T7pacMgde0Q4H2Gi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hridayrungta~app-store-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hridayrungta-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/hridayrungta~app-store-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hridayrungta-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/hridayrungta~app-store-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hridayrungta-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": "One app per line. Paste an App Store URL (https://apps.apple.com/us/app/duolingo-learn-languages/id570060128), an app id (570060128 or id570060128), a bundle id (com.duolingo.DuolingoMobile) or just the app name (\"duolingo\": the top App Store search result is used, and the matched name is shown in every row).",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries (App Store storefronts)",
            "type": "array",
            "description": "Two-letter storefront codes, e.g. us, gb, de, jp, in (uk also works). Every storefront has its own reviews, so each country is a separate set of up to 500 reviews. Combined with the preset below. Empty + no preset = us.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "countryPreset": {
            "title": "Country preset",
            "enum": [
              "none",
              "top10",
              "english",
              "europe",
              "latam",
              "asia",
              "mena",
              "all"
            ],
            "type": "string",
            "description": "Add a ready-made group of storefronts on top of the countries above. \"All storefronts\" reads all 177 App Store countries (big markets first).",
            "default": "none"
          },
          "sort": {
            "title": "Sort reviews by",
            "enum": [
              "mostrecent",
              "mosthelpful"
            ],
            "type": "string",
            "description": "Most recent = the newest ~500 reviews per storefront (best for monitoring and date filters). Most helpful = the ~500 reviews with the most helpful votes.",
            "default": "mostrecent"
          },
          "maxReviewsPerCountry": {
            "title": "Max reviews per app per country",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Apple's public feed shows at most 500 reviews (10 pages of 50) per app per storefront. Lower it to save money.",
            "default": 500
          },
          "maxReviews": {
            "title": "Max reviews in total",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on billed reviews for the whole run.",
            "default": 100000
          },
          "minRating": {
            "title": "Min stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep reviews with at least this many stars. Set Min 1 + Max 2 to collect complaints only.",
            "default": 1
          },
          "maxRating": {
            "title": "Max stars",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep reviews with at most this many stars.",
            "default": 5
          },
          "reviewsNewerThan": {
            "title": "Only reviews newer than",
            "type": "string",
            "description": "A date (2026-10-01), an ISO timestamp, or a relative period such as \"7 days\", \"24 hours\", \"2 weeks\", \"3 months\". With Most recent sorting the Actor stops paging once reviews get older, so you only pay for what you keep."
          },
          "keywords": {
            "title": "Review text must contain (any of)",
            "type": "array",
            "description": "Optional. Keep only reviews whose title or text contains at least one of these words or phrases (case-insensitive), e.g. crash, refund, login, subscription.",
            "items": {
              "type": "string"
            }
          },
          "includeAppDetails": {
            "title": "Add an app summary row per country",
            "type": "boolean",
            "description": "Adds one row per app per storefront with the average star rating, total rating count, current version and its release date, price, genre and developer (from Apple's public Lookup API), plus how many reviews this run collected. Billed as one app row.",
            "default": false
          },
          "onlyNewReviews": {
            "title": "Only new reviews since the last run (monitoring)",
            "type": "boolean",
            "description": "Remembers every review this monitor has delivered (per app and country) in a key-value store on your own Apify account. Later runs return only reviews you have not received yet, so a daily or hourly schedule gives you a clean feed of new reviews and you never pay twice for the same review.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keeps separate memories for separate schedules, e.g. \"competitors\" and \"our-apps\". Use a new name when you change the star or keyword filters.",
            "default": "default"
          },
          "monitorStoreName": {
            "title": "Monitor key-value store name",
            "type": "string",
            "description": "Named key-value store on your account that holds the monitor memory. Delete a record there to start that app fresh.",
            "default": "app-store-reviews-monitor"
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many app x country feeds are read at the same time.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed in normal use: the Actor calls Apple directly and switches to Apify's datacenter proxy by itself if Apple slows it down. Set a proxy here only if you want every request to go through it.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}