{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Play App Details Scraper",
    "description": "Extract public Google Play application details, ratings, installs, developers, and categories.",
    "version": "1.0",
    "x-build-id": "3tNqzAqI3wRlBjfjA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/googleapi~google-play-app-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-googleapi-google-play-app-details-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/googleapi~google-play-app-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-googleapi-google-play-app-details-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/googleapi~google-play-app-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-googleapi-google-play-app-details-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": {
          "appIds": {
            "title": "App IDs",
            "maxItems": 100,
            "type": "array",
            "description": "Android package IDs such as com.example.reader. At most 100 unique sources are accepted.",
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$",
              "maxLength": 200
            }
          },
          "appId": {
            "title": "Single app ID",
            "pattern": "^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)+$",
            "maxLength": 200,
            "type": "string",
            "description": "Compatibility alias for one Android package ID. Do not combine it with a conflicting appIds value."
          },
          "startUrls": {
            "title": "Google Play listing URLs",
            "maxItems": 100,
            "type": "array",
            "description": "Public HTTPS Google Play app detail URLs. An explicit URL hl or gl parameter takes precedence over actor-level locale fields.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "Public listing URL",
                  "description": "HTTPS Google Play app detail URL containing a package id.",
                  "type": "string",
                  "maxLength": 2000
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false
            }
          },
          "sourceUrls": {
            "title": "Source URL aliases",
            "maxItems": 100,
            "type": "array",
            "description": "Compatibility alias for an array of public Google Play app detail URLs.",
            "items": {
              "type": "string",
              "maxLength": 2000
            }
          },
          "urls": {
            "title": "URL aliases",
            "maxItems": 100,
            "type": "array",
            "description": "Compatibility alias for an array of public Google Play app detail URLs.",
            "items": {
              "type": "string",
              "maxLength": 2000
            }
          },
          "url": {
            "title": "Single listing URL",
            "maxLength": 2000,
            "type": "string",
            "description": "Compatibility alias for one public HTTPS Google Play app detail URL."
          },
          "language": {
            "title": "Language",
            "pattern": "^[a-zA-Z]{2}$",
            "maxLength": 2,
            "type": "string",
            "description": "Two-letter language used when app IDs are converted into listing URLs.",
            "default": "en"
          },
          "country": {
            "title": "Country",
            "pattern": "^[a-zA-Z]{2}$",
            "maxLength": 2,
            "type": "string",
            "description": "Two-letter Google Play country used when app IDs are converted into listing URLs.",
            "default": "US"
          },
          "locale": {
            "title": "Locale",
            "pattern": "^[a-zA-Z]{2}(?:[-_][a-zA-Z]{2})?$",
            "maxLength": 10,
            "type": "string",
            "description": "Optional locale alias such as en-US. It must agree with language and country when those fields are also supplied."
          },
          "maxResults": {
            "title": "Maximum app records",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Global maximum of normal app records saved across all sources.",
            "default": 50
          },
          "maxItems": {
            "title": "Maximum records alias",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Compatibility alias for maxResults. Takes precedence when maxResults is unset or at its default; otherwise conflicting values are rejected."
          },
          "page": {
            "title": "Page",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Fixed at 1 because each source is a direct app-detail listing rather than a paginated search.",
            "default": 1
          },
          "maxPages": {
            "title": "Maximum pages per listing",
            "minimum": 1,
            "maximum": 1,
            "type": "integer",
            "description": "Fixed at 1 because app listings are not paginated. The two linked-page enrichment switches can request at most one additional page each per app.",
            "default": 1
          },
          "deduplicate": {
            "title": "Deduplicate apps",
            "type": "boolean",
            "description": "Deduplicate normal output by package ID, then canonical URL, across all sources.",
            "default": true
          },
          "includeMedia": {
            "title": "Include app media",
            "type": "boolean",
            "description": "Include the icon, screenshots, and bounded media metadata belonging to the app listing.",
            "default": true
          },
          "includeDataSafety": {
            "title": "Include data-safety summary",
            "type": "boolean",
            "description": "Include the public data-safety summary and link shown on the listing page.",
            "default": true
          },
          "includeDataSafetyDetails": {
            "title": "Fetch detailed data-safety disclosures",
            "type": "boolean",
            "description": "Opt in to one additional HTTPS request to the app's linked Google Play Data safety page for specific data types, optionality, and purposes. Disabled by default.",
            "default": false
          },
          "includeDeveloperProfile": {
            "title": "Fetch developer profile details",
            "type": "boolean",
            "description": "Opt in to one additional HTTPS request to the app's linked Google Play developer profile for its public description, website link, and visible app cards. The publisher website itself is not fetched. Disabled by default.",
            "default": false
          },
          "includeRelatedApps": {
            "title": "Include related apps",
            "type": "boolean",
            "description": "Include bounded public developer-app and similar-app cards when visible on the listing.",
            "default": true
          },
          "includeWhatsNew": {
            "title": "Include update section",
            "type": "boolean",
            "description": "Include the public What’s new text and update date when visible.",
            "default": true
          },
          "requestDelayMs": {
            "title": "Delay between sources (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Delay before a worker starts its next source request; concurrent workers may still overlap. Range: 0–10000 ms.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Bounded number of public source requests processed at once.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Maximum request retries",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Finite retries for timeouts and transient 5xx responses; access blocks are not retried.",
            "default": 1
          },
          "requestTimeoutMs": {
            "title": "Request timeout (ms)",
            "minimum": 1000,
            "maximum": 60000,
            "type": "integer",
            "description": "Timeout for each public listing request. A conflicting non-default requestTimeoutSecs value is rejected.",
            "default": 25000
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Compatibility alias for requestTimeoutMs in seconds. Takes precedence when requestTimeoutMs is unset or at its default; otherwise conflicting values are rejected."
          },
          "maxResponseBytes": {
            "title": "Maximum response bytes",
            "minimum": 100000,
            "maximum": 5000000,
            "type": "integer",
            "description": "Fail closed when a public app listing response exceeds this byte limit.",
            "default": 2500000
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional active Apify Proxy or proxyUrls configuration. It is wired into HTTP requests through a standard proxy dispatcher; it does not bypass CAPTCHA or access controls."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}