{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store ASO Keyword Rank Tracker & Top Charts",
    "description": "ASO keyword rank tracker and App Store top charts (free, paid, grossing, by category) in 175 countries. Track your app's and competitors' keyword ranks, get keyword suggestions with top-10 competition data, rank changes vs the last run and an only-changes mode. No proxies.",
    "version": "0.2",
    "x-build-id": "rWCWB5Z9FhH7hZ5JF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gazidev~app-store-top-charts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gazidev-app-store-top-charts",
        "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/gazidev~app-store-top-charts/runs": {
      "post": {
        "operationId": "runs-sync-gazidev-app-store-top-charts",
        "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/gazidev~app-store-top-charts/run-sync": {
      "post": {
        "operationId": "run-sync-gazidev-app-store-top-charts",
        "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": {
          "charts": {
            "title": "Charts",
            "type": "array",
            "description": "App Store top charts to download (Apple's public RSS feeds, up to 100 apps each). Leave empty to track keywords only.",
            "items": {
              "type": "string",
              "enum": [
                "topfreeapplications",
                "toppaidapplications",
                "topgrossingapplications",
                "topfreeipadapplications",
                "toppaidipadapplications",
                "topgrossingipadapplications",
                "newapplications",
                "newfreeapplications",
                "newpaidapplications",
                "topfreemacapps"
              ],
              "enumTitles": [
                "Top Free iPhone Apps",
                "Top Paid iPhone Apps",
                "Top Grossing iPhone Apps",
                "Top Free iPad Apps",
                "Top Paid iPad Apps",
                "Top Grossing iPad Apps",
                "New iPhone Apps",
                "New Free iPhone Apps",
                "New Paid iPhone Apps",
                "Top Free Mac Apps"
              ]
            },
            "default": []
          },
          "countries": {
            "title": "Countries (App Store storefronts)",
            "type": "array",
            "description": "Two-letter storefront codes: us, gb, de, fr, jp, tr, br... (175 supported). Use \"top\" for the 30 largest markets or \"all\" for every storefront. Applies to charts and keywords.",
            "default": [
              "us"
            ],
            "items": {
              "type": "string"
            }
          },
          "genres": {
            "title": "Categories (genres)",
            "type": "array",
            "description": "Overall chart and/or category charts (e.g. Games, Finance, Games: Puzzle). Applied to top free/paid/grossing iPhone and iPad charts; Apple ignores categories on \"New\" and Mac feeds.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "6000",
                "6001",
                "6002",
                "6003",
                "6004",
                "6005",
                "6006",
                "6007",
                "6008",
                "6009",
                "6010",
                "6011",
                "6012",
                "6013",
                "6014",
                "6015",
                "6016",
                "6017",
                "6018",
                "6020",
                "6021",
                "6022",
                "6023",
                "6024",
                "6025",
                "6026",
                "6027",
                "7001",
                "7002",
                "7003",
                "7004",
                "7005",
                "7006",
                "7007",
                "7008",
                "7009",
                "7011",
                "7012",
                "7013",
                "7014",
                "7015",
                "7016",
                "7017",
                "7018",
                "7019"
              ],
              "enumTitles": [
                "All apps (overall chart)",
                "Business (6000)",
                "Weather (6001)",
                "Utilities (6002)",
                "Travel (6003)",
                "Sports (6004)",
                "Social Networking (6005)",
                "Reference (6006)",
                "Productivity (6007)",
                "Photo & Video (6008)",
                "News (6009)",
                "Navigation (6010)",
                "Music (6011)",
                "Lifestyle (6012)",
                "Health & Fitness (6013)",
                "Games (6014)",
                "Finance (6015)",
                "Entertainment (6016)",
                "Education (6017)",
                "Books (6018)",
                "Medical (6020)",
                "Magazines & Newspapers (6021)",
                "Catalogs (6022)",
                "Food & Drink (6023)",
                "Shopping (6024)",
                "Stickers (6025)",
                "Developer Tools (6026)",
                "Graphics & Design (6027)",
                "Games: Action (7001)",
                "Games: Adventure (7002)",
                "Games: Casual (7003)",
                "Games: Board (7004)",
                "Games: Card (7005)",
                "Games: Casino (7006)",
                "Games: Dice (7007)",
                "Games: Educational (7008)",
                "Games: Family (7009)",
                "Games: Music (7011)",
                "Games: Puzzle (7012)",
                "Games: Racing (7013)",
                "Games: Role Playing (7014)",
                "Games: Simulation (7015)",
                "Games: Sports (7016)",
                "Games: Strategy (7017)",
                "Games: Trivia (7018)",
                "Games: Word (7019)"
              ]
            },
            "default": [
              "0"
            ]
          },
          "chartLimit": {
            "title": "Apps per chart",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many ranks to return per chart (Apple's feeds stop at 100).",
            "default": 100
          },
          "enrichWithLookup": {
            "title": "Add rating, version, size (iTunes Lookup)",
            "type": "boolean",
            "description": "One extra Apple call per chart adds rating, ratingCount, version, releaseDate, currentVersionReleaseDate, sizeMB, bundleId and content rating. Same price per row.",
            "default": true
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search terms to check. Each keyword is searched in every country; the result order is the rank.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "trackApps": {
            "title": "Apps to track (yours and competitors)",
            "type": "array",
            "description": "App Store IDs (e.g. 942571931), App Store URLs or bundle IDs. For keywords you get each app's rank, or 'not ranked' if it is not in the top results.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordOutput": {
            "title": "Keyword rows",
            "enum": [
              "tracked",
              "all"
            ],
            "type": "string",
            "description": "Without tracked apps, all ranked apps are returned.",
            "default": "tracked"
          },
          "searchDepth": {
            "title": "Search depth",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many search results to scan per keyword (the iTunes Search API returns at most 200). Apps below this depth are reported as not ranked.",
            "default": 200
          },
          "platform": {
            "title": "Device for keyword search",
            "enum": [
              "iphone",
              "ipad"
            ],
            "type": "string",
            "description": "Which device's search results to rank: iPhone apps or iPad apps.",
            "default": "iphone"
          },
          "suggestionSeeds": {
            "title": "Seed keywords for suggestions",
            "type": "array",
            "description": "Optional. For each seed (e.g. \"budget\") the Actor reads the top 200 iTunes Search API results and mines related keywords from the app names and subtitles (e.g. \"budget planner\", \"expense tracker\"), ranked by how many top apps use them. Leave empty to skip. Uses only the official Search API (no autocomplete endpoint). Suggestion rows are always output in full, also in 'Only changes' mode.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "suggestionsPerSeed": {
            "title": "Suggestions per seed",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many related keywords to return per seed and country (1 row each).",
            "default": 20
          },
          "suggestionCompetition": {
            "title": "Add top-10 competition data",
            "type": "boolean",
            "description": "One extra Search API call per suggestion: the top 10 apps for that keyword with median and total ratings, average rating, how many use the exact keyword in their name, apps under 1k ratings, a 0-100 competitionScore and low/medium/high. Same price per row; slower because of Apple's ~20 calls/minute limit.",
            "default": true
          },
          "suggestionMinApps": {
            "title": "Minimum apps using a term",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "A suggestion must appear in at least this many of the seed's search results (filters one-off brand names).",
            "default": 2
          },
          "outputMode": {
            "title": "Output",
            "enum": [
              "all",
              "changes"
            ],
            "type": "string",
            "description": "'Only changes' is ideal for scheduled runs: unchanged ranks are not output or charged. The first run of each list outputs everything as a baseline.",
            "default": "all"
          },
          "compareWithPreviousRun": {
            "title": "Compare with the previous run",
            "type": "boolean",
            "description": "Adds previousRank, rankChange and changeType by saving each ranking in a named key-value store.",
            "default": true
          },
          "historyStoreName": {
            "title": "History store name",
            "type": "string",
            "description": "Named key-value store that keeps the last ranking of each chart and keyword. Use different names for independent trackers.",
            "default": "app-store-rank-history"
          },
          "chartsOnlyTrackedApps": {
            "title": "Charts: only output tracked apps",
            "type": "boolean",
            "description": "Only output chart rows for the apps in 'Apps to track' (and those that left the chart).",
            "default": false
          },
          "maxRows": {
            "title": "Max rows",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many rows (0 = no limit). The run also stops cleanly at your maximum cost per run.",
            "default": 0
          },
          "maxRequestsPerMinute": {
            "title": "Max Apple API calls per minute",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Apple documents a limit of about 20 calls per minute for the iTunes Search/Lookup API. RSS feeds are capped at 30 per minute.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}