{
  "openapi": "3.0.1",
  "info": {
    "title": "ASO Keyword Rankings API - App Store Keyword Data",
    "description": "App store optimization data as rows: keyword volume, difficulty and reach, where an app ranks for each keyword, the live App Store and Google Play search results for a keyword, suggested keywords, top charts, full store listings and reviews, across 100+ countries. Bring your own key.",
    "version": "0.1",
    "x-build-id": "lbXJEnjMAWAVZZQI0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~aso-keyword-rankings-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-aso-keyword-rankings-api",
        "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/nabeelbaghoor~aso-keyword-rankings-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-aso-keyword-rankings-api",
        "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/nabeelbaghoor~aso-keyword-rankings-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-aso-keyword-rankings-api",
        "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 this run does",
            "enum": [
              "metadata",
              "metrics",
              "keywordRankings",
              "keywordMetrics",
              "keywordSearch",
              "suggestions",
              "topCharts",
              "reviews"
            ],
            "type": "string",
            "description": "A run answers one question. Some modes read about apps and some read about keywords, so the fields belonging to another mode are ignored rather than causing an error.",
            "default": "metadata"
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own account's API token for this provider, copied from its API dashboard. Bring your own key: nothing is shared between runs and the token is never written to the dataset or the log."
          },
          "apps": {
            "title": "Apps",
            "type": "array",
            "description": "Apps to read, one per line. An App Store numeric id such as 284882215, a Google Play package name such as com.facebook.katana, or a store listing URL that carries one. The provider accepts five apps per request, so longer lists are batched for you.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keywords to read, one per line, written as you would type them into the store search box. Used by the keyword metrics and keyword search modes.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two letter country code for the store to read, such as us, gb or de. Store data is per country, so this changes the answer rather than filtering it.",
            "default": "us"
          },
          "device": {
            "title": "Device",
            "enum": [
              "iphone",
              "ipad",
              "android"
            ],
            "type": "string",
            "description": "Which store and form factor to read. iPhone and iPad read the App Store, and android reads Google Play.",
            "default": "iphone"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two letter language code for the listing text, such as en. Leave empty for the country's default language."
          },
          "metrics": {
            "title": "Metrics to read",
            "type": "array",
            "description": "Which metrics the metrics mode asks for. Downloads and revenues cost 500 provider credits per app, while ratings, daily ratings and app power cost 10, so nothing expensive is ever added on your behalf. Leaving this empty reads ratings and app power only.",
            "items": {
              "type": "string",
              "enum": [
                "downloads",
                "revenues",
                "ratings",
                "daily-ratings",
                "app-power"
              ]
            },
            "default": []
          },
          "history": {
            "title": "Read history instead of current",
            "type": "boolean",
            "description": "Read the historical series over the date range rather than the most recent value. Applies to the metrics and keyword metrics modes.",
            "default": false
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "First day to cover, as YYYY-MM-DD. Used when reading history, and by the reviews mode. Defaults to 30 days before the end date."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Last day to cover, as YYYY-MM-DD. Used when reading history, and by the reviews mode. Defaults to yesterday."
          },
          "category": {
            "title": "Store category",
            "type": "string",
            "description": "The category to chart in top charts mode. A number such as 6005 on the App Store, or a name such as GAME_ACTION on Google Play. Passing one store's vocabulary to the other returns nothing rather than an error."
          },
          "chartType": {
            "title": "Chart type",
            "enum": [
              "free",
              "paid",
              "grossing"
            ],
            "type": "string",
            "description": "Which chart to read in top charts mode. The top 500 apps are available for each.",
            "default": "free"
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows this run may store, and so the most it can charge for. A top chart is up to 500 rows and a keyword ranking run is one row per keyword per app, so this is the cap that keeps a run predictable.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 350,
            "type": "integer",
            "description": "How fast this run calls the provider. The documented ceiling is 60 requests per 10 seconds; lower this if your plan is tighter.",
            "default": 300
          },
          "baseUrl": {
            "title": "API base URL",
            "type": "string",
            "description": "Overrides the API host. Only needed if the provider has given your account a different endpoint."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}