{
  "openapi": "3.0.1",
  "info": {
    "title": "iOS App Store Scraper",
    "description": "Scrape Apple App Store app data and localized prices across 41 storefronts. Search, charts, or by ID. 50+ fields per app.",
    "version": "0.0",
    "x-build-id": "i0OnvOm0IFq6EdiVs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/unfenced-group~ios-app-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-unfenced-group-ios-app-store-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/unfenced-group~ios-app-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-unfenced-group-ios-app-store-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/unfenced-group~ios-app-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-unfenced-group-ios-app-store-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": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword(s) to search the App Store for (e.g. \"meditation\", \"photo editor\"). Leave empty if you use charts, App IDs, or Start URLs instead.",
            "default": ""
          },
          "chart": {
            "title": "Top chart",
            "enum": [
              "none",
              "topfree",
              "toppaid",
              "topgrossing"
            ],
            "type": "string",
            "description": "Discover apps from an App Store top chart instead of (or in addition to) a search.",
            "default": "none"
          },
          "appIds": {
            "title": "App IDs",
            "type": "array",
            "description": "Specific numeric App Store track IDs to fetch directly (e.g. 310633997). Found in any apps.apple.com URL after \"id\".",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional apps.apple.com URLs to scrape directly. The app ID is extracted from each URL.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "country": {
            "title": "Storefront country",
            "enum": [
              "us",
              "gb",
              "de",
              "fr",
              "it",
              "es",
              "nl",
              "ie",
              "pt",
              "at",
              "ch",
              "se",
              "no",
              "dk",
              "fi",
              "pl",
              "cz",
              "hu",
              "ro",
              "gr",
              "tr",
              "ua",
              "ru",
              "au",
              "nz",
              "jp",
              "kr",
              "cn",
              "hk",
              "tw",
              "sg",
              "my",
              "th",
              "id",
              "ph",
              "vn",
              "in",
              "br",
              "mx",
              "ar",
              "cl",
              "co",
              "pe",
              "ca",
              "za",
              "ae",
              "sa",
              "eg",
              "il"
            ],
            "type": "string",
            "description": "Single storefront to price against. Each country returns prices in its own local currency. Ignored if you set multiple Countries below or enable All major storefronts.",
            "default": "us"
          },
          "countries": {
            "title": "Multiple storefronts",
            "type": "array",
            "description": "Price each app across several storefronts in one run (multi-currency). Each adds a row per app with that country's local price.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "de",
                "fr",
                "it",
                "es",
                "nl",
                "ie",
                "pt",
                "at",
                "ch",
                "se",
                "no",
                "dk",
                "fi",
                "pl",
                "cz",
                "hu",
                "ro",
                "gr",
                "tr",
                "ua",
                "ru",
                "au",
                "nz",
                "jp",
                "kr",
                "cn",
                "hk",
                "tw",
                "sg",
                "my",
                "th",
                "id",
                "ph",
                "vn",
                "in",
                "br",
                "mx",
                "ar",
                "cl",
                "co",
                "pe",
                "ca",
                "za",
                "ae",
                "sa",
                "eg",
                "il"
              ]
            },
            "default": []
          },
          "allCountries": {
            "title": "All major storefronts",
            "type": "boolean",
            "description": "Price every app across all 41 major storefronts in one run. Overrides the country selection above.",
            "default": false
          },
          "maxResults": {
            "title": "Max results per storefront",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of apps to return per storefront.",
            "default": 50
          },
          "priceFilter": {
            "title": "Price filter",
            "enum": [
              "all",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "Restrict to free or paid apps.",
            "default": "all"
          },
          "minPrice": {
            "title": "Minimum price",
            "type": "integer",
            "description": "Only return apps priced at or above this amount (in the storefront's local currency, major units)."
          },
          "maxPrice": {
            "title": "Maximum price",
            "type": "integer",
            "description": "Only return apps priced at or below this amount (in the storefront's local currency, major units)."
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Only return apps with an average user rating at or above this value (0–5). Apps with no rating are kept."
          },
          "minRatingCount": {
            "title": "Minimum rating count",
            "type": "integer",
            "description": "Only return apps with at least this many ratings. Apps with no rating count are kept."
          },
          "genres": {
            "title": "Genres",
            "type": "array",
            "description": "Only return apps matching one of these genres (case-insensitive substring, e.g. \"Games\", \"Productivity\", \"Photo & Video\").",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "releasedAfter": {
            "title": "Released after",
            "type": "string",
            "description": "Only return apps first released on or after this date (ISO, e.g. 2024-01-01).",
            "default": ""
          },
          "releasedBefore": {
            "title": "Released before",
            "type": "string",
            "description": "Only return apps first released on or before this date (ISO, e.g. 2025-12-31).",
            "default": ""
          },
          "gameCenterOnly": {
            "title": "Game Center only",
            "type": "boolean",
            "description": "Only return apps with Game Center enabled.",
            "default": false
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Include the full app description and release notes in each record.",
            "default": true
          },
          "includeScreenshots": {
            "title": "Include screenshots",
            "type": "boolean",
            "description": "Include screenshot URLs (iPhone, iPad) in each record.",
            "default": true
          },
          "fetchInAppPurchases": {
            "title": "Fetch in-app purchases",
            "type": "boolean",
            "description": "Fetch the in-app purchase price list (top IAPs with localized prices) from each app's store page. Adds one extra request per app per storefront, so runs are slower. Prices are localized to each storefront.",
            "default": false
          },
          "fetchDetails": {
            "title": "Fetch detailed data (premium)",
            "type": "boolean",
            "description": "Premium enrichment per app: privacy nutrition label (data used to track / linked to you), rating histogram (1-5 star breakdown), live chart position, structured content advisories, app preview video, and high-quality screenshots. Adds one extra request per app per storefront and is billed at the detailed-record rate.",
            "default": false
          },
          "fetchDeveloperApps": {
            "title": "Fetch developer's other apps (premium)",
            "type": "boolean",
            "description": "For each app, also list other apps by the same developer. Adds one extra request per app per storefront and is billed at the detailed-record rate.",
            "default": false
          },
          "developerAppsLimit": {
            "title": "Developer apps limit",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of other apps to return per developer.",
            "default": 50
          },
          "requestDelayMs": {
            "title": "Request delay (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum pause between requests to the Apple API. Apple throttles aggressively; do not set this too low.",
            "default": 1200
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on requests over a rolling 60-second window.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}