{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play Scraper $0.02/1K | Reviews, Replies & App Search",
    "description": "Collect Google Play review text, star ratings, dates, versions and developer replies. Paginate large review exports, filter dates and ratings, look up app details or search Android apps by keyword.",
    "version": "0.2",
    "x-build-id": "j2ViZ4KqjQ2NXwkla"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apivault_labs~google-play-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apivault_labs-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/apivault_labs~google-play-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apivault_labs-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/apivault_labs~google-play-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apivault_labs-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "reviews",
              "apps",
              "search"
            ],
            "type": "string",
            "description": "Reviews are separate rows. Apps returns full metadata. Search returns keyword listings, not chart ranks.",
            "default": "reviews"
          },
          "appInputs": {
            "title": "Android apps",
            "type": "array",
            "description": "Package IDs or exact HTTPS Google Play details URLs. Up to 1000 inputs; duplicate inputs are removed.",
            "items": {
              "type": "string"
            },
            "default": [
              "com.whatsapp"
            ]
          },
          "searchTerms": {
            "title": "Search keywords",
            "type": "array",
            "description": "Used only in search mode, up to 1000 terms.",
            "items": {
              "type": "string"
            },
            "default": [
              "budget planner"
            ]
          },
          "country": {
            "title": "Country",
            "pattern": "^[a-z]{2}$",
            "type": "string",
            "description": "Lowercase storefront code, not the reviewer location.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Requested Google Play locale; does not guarantee the language of every review.",
            "default": "en"
          },
          "sort": {
            "title": "Review order",
            "enum": [
              "newest",
              "relevant",
              "rating"
            ],
            "type": "string",
            "description": "Source order. Newest is recommended for review monitoring.",
            "default": "newest"
          },
          "rating": {
            "title": "Only this star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Optional exact star filter, 1 to 5."
          },
          "dateFrom": {
            "title": "Reviews from (inclusive)",
            "type": "string",
            "description": "Optional ISO 8601, for example 2026-01-01T00:00:00Z. Date-only values mean midnight UTC."
          },
          "dateTo": {
            "title": "Reviews until (inclusive)",
            "type": "string",
            "description": "Optional ISO 8601. To include a whole day, specify its ending time."
          },
          "maxReviews": {
            "title": "Reviews per app",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Overall per-app delivery ceiling across a continuation chain; source availability may be lower.",
            "default": 1000
          },
          "maxSearchResults": {
            "title": "Listings per keyword",
            "minimum": 1,
            "maximum": 250,
            "type": "integer",
            "description": "Upper limit from the public search page. Google may return fewer; no search pagination is promised.",
            "default": 50
          },
          "maxResults": {
            "title": "Result cap for this run",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop this run after this many useful rows; resume remaining work from CHECKPOINT.",
            "default": 100000
          },
          "maxRunSeconds": {
            "title": "Collection time budget",
            "minimum": 10,
            "maximum": 7200,
            "type": "integer",
            "description": "Soft time budget checked between requests/results. Set Apify Timeout at least 60 seconds higher.",
            "default": 3600
          },
          "resumeCheckpointStoreId": {
            "title": "Continue from checkpoint storage",
            "type": "string",
            "description": "Optional checkpoint store of a controlled stopped run of this Actor. Copy CHECKPOINT.input; keep filters unchanged. No concurrent resume."
          },
          "ratings": {
            "title": "Star rating allow-list",
            "type": "array",
            "description": "Optional multiple stars, e.g. [1,2]. Do not conflict with the single rating field.",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5
            }
          },
          "replyFilter": {
            "title": "Developer reply filter",
            "enum": [
              "any",
              "with_reply",
              "without_reply"
            ],
            "type": "string",
            "description": "Keep all reviews, only reviews with a developer reply, or only reviews without one.",
            "default": "any"
          },
          "keywords": {
            "title": "Text contains any keyword",
            "type": "array",
            "description": "Optional case-insensitive literal matches; any keyword may match. Up to 30.",
            "items": {
              "type": "string"
            }
          },
          "appVersions": {
            "title": "App version allow-list",
            "type": "array",
            "description": "Optional exact app version allow-list; missing versions do not match.",
            "items": {
              "type": "string"
            }
          },
          "minThumbsUp": {
            "title": "Minimum helpful votes",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Only deliver reviews with this many helpful votes or more.",
            "default": 0
          },
          "includeAppDetails": {
            "title": "Free app context",
            "type": "boolean",
            "description": "In reviews mode, fetch app title/developer plus app aggregates for APPS. No result event for context. Extra source/platform usage applies; context failure does not discard reviews.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}