{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store & Google Play Reviews Scraper - Both Stores, One Run",
    "description": "Scrape App Store AND Google Play reviews in ONE run - the only Actor covering both stores together, so you can compare iOS vs Android feedback without merging two exports. Free insights report: complaint keywords, rating trends by version. $0.30 per 1,000 reviews.",
    "version": "0.2",
    "x-build-id": "FNkj0dzVQjt7pSx7z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/berkaydev~app-store-google-play-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-berkaydev-app-store-google-play-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/berkaydev~app-store-google-play-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-berkaydev-app-store-google-play-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/berkaydev~app-store-google-play-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-berkaydev-app-store-google-play-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": {
          "googlePlayAppIds": {
            "title": "Google Play apps",
            "type": "array",
            "description": "Package names or Google Play URLs, one per line. Example: com.whatsapp or https://play.google.com/store/apps/details?id=com.spotify.music",
            "items": {
              "type": "string"
            }
          },
          "appleAppIds": {
            "title": "App Store apps",
            "type": "array",
            "description": "Numeric Apple app IDs or App Store URLs, one per line. Example: 310633997 or https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Pick one or more markets. Every app is scraped in every country, in that country's language, and the report compares the markets side by side. 可多选：一次运行覆盖多个市场。",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "ca",
                "au",
                "nz",
                "ie",
                "in",
                "sg",
                "ph",
                "za",
                "ng",
                "my",
                "de",
                "at",
                "ch",
                "fr",
                "be",
                "it",
                "es",
                "mx",
                "ar",
                "co",
                "cl",
                "pe",
                "br",
                "pt",
                "nl",
                "pl",
                "se",
                "no",
                "dk",
                "fi",
                "cz",
                "ro",
                "hu",
                "gr",
                "tr",
                "ru",
                "ua",
                "il",
                "sa",
                "ae",
                "eg",
                "jp",
                "kr",
                "cn",
                "tw",
                "hk",
                "th",
                "vn",
                "id"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Canada",
                "Australia",
                "New Zealand",
                "Ireland",
                "India",
                "Singapore",
                "Philippines",
                "South Africa",
                "Nigeria",
                "Malaysia",
                "Germany",
                "Austria",
                "Switzerland",
                "France",
                "Belgium",
                "Italy",
                "Spain",
                "Mexico",
                "Argentina",
                "Colombia",
                "Chile",
                "Peru",
                "Brazil",
                "Portugal",
                "Netherlands",
                "Poland",
                "Sweden",
                "Norway",
                "Denmark",
                "Finland",
                "Czechia",
                "Romania",
                "Hungary",
                "Greece",
                "Turkey",
                "Russia",
                "Ukraine",
                "Israel",
                "Saudi Arabia",
                "United Arab Emirates",
                "Egypt",
                "Japan",
                "South Korea",
                "China (App Store only)",
                "Taiwan",
                "Hong Kong",
                "Thailand",
                "Vietnam",
                "Indonesia"
              ]
            }
          },
          "maxReviewsPerApp": {
            "title": "Reviews per app and country",
            "minimum": 1,
            "type": "integer",
            "description": "Newest reviews to fetch for each app in each country. Cost example: 2 apps × 3 countries × 200 reviews = 1,200 reviews = $0.36. The App Store returns at most ~500 per app and country.",
            "default": 200
          },
          "generateInsights": {
            "title": "Insights report (free)",
            "type": "boolean",
            "description": "Adds an HTML report (key-value store: REPORT) and JSON (INSIGHTS): rating by app version, complaint and praise keywords, feature requests, developer reply rates, country and app comparison.",
            "default": true
          },
          "language": {
            "title": "Force one review language",
            "type": "string",
            "description": "Leave empty to use each country's own language (Japan → Japanese, Brazil → Portuguese). Enter a code like 'en' to fetch only reviews in that language everywhere. Applies to Google Play; the App Store always returns mixed languages.",
            "default": ""
          },
          "maxRunTimeSecs": {
            "title": "Max run time (seconds)",
            "minimum": 60,
            "maximum": 3500,
            "type": "integer",
            "description": "The run saves everything collected so far and stops cleanly before this limit.",
            "default": 3000
          },
          "country": {
            "title": "Single country (legacy)",
            "type": "string",
            "description": "Kept for older saved tasks and API calls. Used only when 'Countries' is empty — use 'Countries' instead."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}