{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store & Google Play Scraper: Keyword Ranks, Charts, Details",
    "description": "Apple App Store and Google Play app data in one schema: App Store keyword search ranks (ASO), top free/paid/grossing charts by country and category, and app details by URL or ID (rating, installs, price, version). Rank-change alerts. $1 per 1,000 rank rows, $1.50 per 1,000 apps.",
    "version": "0.1",
    "x-build-id": "bfK0hc9ICdaGXeCDe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cprussin~app-store-apps/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cprussin-app-store-apps",
        "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/cprussin~app-store-apps/runs": {
      "post": {
        "operationId": "runs-sync-cprussin-app-store-apps",
        "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/cprussin~app-store-apps/run-sync": {
      "post": {
        "operationId": "run-sync-cprussin-app-store-apps",
        "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 scrape",
            "enum": [
              "keywordRanks",
              "topCharts",
              "appDetails"
            ],
            "type": "string",
            "description": "Keyword ranks: where apps rank in App Store search for your keywords. Top charts: top free / paid / grossing apps on the App Store and Google Play. App details: full metadata for the apps you list.",
            "default": "keywordRanks"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keyword ranks mode: App Store search terms. Each result is one row with its rank (1 = top) and the app's metadata. App Store only: Google Play search isn't supported.",
            "items": {
              "type": "string"
            }
          },
          "trackedApps": {
            "title": "Only these apps",
            "type": "array",
            "description": "Optional. Keyword ranks mode: output only these App Store apps (URL, id123... or apple:bundle.id) for each keyword, plus a \"notRanked\" row when an app isn't in the top results. Pays for your apps only, not the whole result list.",
            "items": {
              "type": "string"
            }
          },
          "charts": {
            "title": "Charts",
            "type": "array",
            "description": "Top charts mode: which charts to fetch for each store.",
            "items": {
              "type": "string",
              "enum": [
                "topFree",
                "topPaid",
                "topGrossing"
              ],
              "enumTitles": [
                "Top free",
                "Top paid",
                "Top grossing"
              ]
            },
            "default": [
              "topFree"
            ]
          },
          "stores": {
            "title": "Stores",
            "type": "array",
            "description": "Top charts mode: App Store, Google Play or both.",
            "items": {
              "type": "string",
              "enum": [
                "apple",
                "google"
              ],
              "enumTitles": [
                "App Store",
                "Google Play"
              ]
            },
            "default": [
              "apple",
              "google"
            ]
          },
          "category": {
            "title": "Category",
            "enum": [
              "all",
              "games",
              "books",
              "business",
              "education",
              "entertainment",
              "finance",
              "foodAndDrink",
              "healthAndFitness",
              "lifestyle",
              "medical",
              "music",
              "navigation",
              "news",
              "photoAndVideo",
              "productivity",
              "shopping",
              "socialNetworking",
              "sports",
              "travel",
              "utilities",
              "weather"
            ],
            "type": "string",
            "description": "Top charts mode: chart category. \"All\" is the overall App Store chart, and the all-apps (non-game) chart on Google Play.",
            "default": "all"
          },
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "App details mode: App Store or Google Play URLs or IDs, store detected automatically: https://apps.apple.com/us/app/id324684580, id324684580 = App Store; https://play.google.com/store/apps/details?id=com.spotify.music or com.spotify.music = Google Play. Prefix apple: for an iOS bundle ID (apple:com.spotify.client).",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter store country (us, gb, de, fr, jp, br, in, ...). Ranks, charts, prices and availability are per country.",
            "default": "us"
          },
          "language": {
            "title": "Language (Google Play)",
            "type": "string",
            "description": "Two-letter language code (en, de, es, ...) for Google Play names and descriptions. App Store text comes in the country's default language.",
            "default": "en"
          },
          "maxResults": {
            "title": "Max ranks per keyword / chart",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How deep to go: top N results per keyword or chart. App Store search returns up to 200, App Store charts up to 100, Google Play charts up to 200. Each row is billed as one rank row.",
            "default": 50
          },
          "rankChangesOnly": {
            "title": "Rank changes only (monitoring)",
            "type": "boolean",
            "description": "Keyword ranks and top charts: output only apps whose rank changed since the last run with the same input (up, down, new, dropped), with the previous rank. The first run outputs everything as a baseline. Schedule it daily for rank alerts. State is kept in the key-value store \"app-store-apps-ranks\" in your account.",
            "default": false
          },
          "minRankChange": {
            "title": "Min rank change",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Rank changes only: ignore moves smaller than this many places, including slides just across the top-N cut-off. Apple's search order jitters by a place or two between calls, so 3 is a good value for keyword alerts.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}