{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store & Google Play Reviews Scraper API | $0.30/1K",
    "description": "Returns App Store and Google Play reviews in one run, one row per review with the same fields for both stores: rating, title, text, app version, date, developer reply. Many apps and countries per run. Free report: complaint keywords in 12 languages, rating by version, reply rates. $0.30/1K.",
    "version": "0.2",
    "x-build-id": "1M8PgW5FKsU4qakiQ"
  },
  "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": ""
          },
          "apps": {
            "title": "Apps from either store (auto-detected)",
            "type": "array",
            "description": "Alternative to the two store fields above, handy for API and AI-agent calls: any mix of Google Play package names or URLs and App Store numeric IDs or URLs. Numeric IDs and apps.apple.com links go to the App Store, everything else to Google Play. Example: [\"com.whatsapp\", \"310633997\"].",
            "items": {
              "type": "string"
            }
          },
          "compact": {
            "title": "Compact rows (for AI / LLM use)",
            "type": "boolean",
            "description": "Return only source, appId, country, rating, title, text, appVersion, date and replyContent per review. Smaller rows for language-model context windows.",
            "default": false
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}