{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store & Google Play Reviews Scraper - One Schema",
    "description": "App Store and Google Play reviews in one flat schema: rating, title, text, date, app version, developer reply, thumbs-up. Any country or language, star and date filters, new-review alerts, free app details. Failed apps are free.",
    "version": "0.1",
    "x-build-id": "665uO3MN1XeZAlixJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dottti~app-reviews/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dottti-app-reviews",
        "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/dottti~app-reviews/runs": {
      "post": {
        "operationId": "runs-sync-dottti-app-reviews",
        "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/dottti~app-reviews/run-sync": {
      "post": {
        "operationId": "run-sync-dottti-app-reviews",
        "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": {
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "One per line, both stores mixed. App Store: a URL like https://apps.apple.com/us/app/whatsapp-messenger/id310633997, or the id 310633997. Google Play: a URL like https://play.google.com/store/apps/details?id=com.whatsapp, or the package name com.whatsapp.",
            "default": [
              "https://apps.apple.com/us/app/whatsapp-messenger/id310633997",
              "com.whatsapp"
            ],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "2-letter country codes, for example us, gb, sa, ae, eg. App Store reviews belong to one country's store, so each App Store app is read once per country. Google Play reviews do not depend on the country; the first country is used for prices and app details.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "title": "Languages (Google Play)",
            "type": "array",
            "description": "Language codes, for example en, ar, fr, pt-br. Google Play shows reviews by language, so each Google Play app is read once per language. App Store reviews are not split by language; each App Store review gets a detected language code instead.",
            "default": [
              "en"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerApp": {
            "title": "Max reviews per app and storefront",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Per App Store app and country, and per Google Play app and language. You pay only for reviews delivered.",
            "default": 20
          },
          "sort": {
            "title": "Order",
            "enum": [
              "newest",
              "relevant"
            ],
            "type": "string",
            "description": "Newest first, or the store's 'most relevant' order. Alerts (only new reviews) always use newest first.",
            "default": "newest"
          },
          "stars": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only reviews with these ratings. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "dateFrom": {
            "title": "Reviews published on or after",
            "type": "string",
            "description": "YYYY-MM-DD, or relative like '30 days' or '6 months'. With newest-first order the actor stops reading at this date. Leave empty for no date limit.",
            "default": ""
          },
          "includeAppDetails": {
            "title": "Add an app details row (free)",
            "type": "boolean",
            "description": "One free row per app (per country for the App Store): name, developer, category, rating, ratings count, star histogram (Google Play), installs (Google Play), price, version, release notes, dates, size and description.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "For scheduled alerts. Each run remembers the reviews it delivered for each app and storefront, under the state name below. The first run is the baseline and delivers up to the max.",
            "default": false
          },
          "stateName": {
            "title": "State name",
            "type": "string",
            "description": "Separate names keep separate memories, for example 'my-apps' and 'competitors'.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy (optional)",
            "type": "object",
            "description": "Leave off to use the automatic fallback below. If you set a proxy here, it is used for every request and the fallback is off."
          },
          "autoProxyFallback": {
            "title": "Automatic proxy fallback",
            "type": "boolean",
            "description": "Starts without a proxy. If a store keeps refusing, switches to Apify datacenter proxy, then residential.",
            "default": true
          },
          "allowResidentialFallback": {
            "title": "Allow residential proxy as the last step",
            "type": "boolean",
            "description": "Turn off to never use residential proxy.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Storefronts in parallel",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Requests to each store are still spaced out, so more is not always faster.",
            "default": 3
          },
          "maxRetries": {
            "title": "Retries per request",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Retries with growing waits, fresh sessions and the next proxy tier before a storefront is marked blocked.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}