{
  "openapi": "3.0.1",
  "info": {
    "title": "App Store keyword research & Google Play ASO keyword ideas",
    "description": "ASO keyword tool for App Store and Google Play keyword research: turn seed keywords or any app into keyword ideas with keyword popularity (Apple's own Search Popularity on iOS), keyword difficulty and an opportunity score. Built by the team behind trysonar.app.",
    "version": "0.1",
    "x-build-id": "OzZ5o07ZUd9gykcgI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/petersutarik~aso-keyword-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-petersutarik-aso-keyword-finder",
        "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/petersutarik~aso-keyword-finder/runs": {
      "post": {
        "operationId": "runs-sync-petersutarik-aso-keyword-finder",
        "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/petersutarik~aso-keyword-finder/run-sync": {
      "post": {
        "operationId": "run-sync-petersutarik-aso-keyword-finder",
        "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": {
          "seedKeywords": {
            "title": "Seed keywords",
            "maxItems": 20,
            "type": "array",
            "description": "Words that describe your app, to start the keyword research from (up to 20). Each seed is searched on the store: you get the seed itself plus the store's autocomplete suggestions for it, each with popularity, difficulty and an opportunity score. Add seed keywords, app IDs, or both.",
            "items": {
              "type": "string"
            }
          },
          "appIds": {
            "title": "Your app or competitor apps (optional)",
            "maxItems": 10,
            "type": "array",
            "description": "Find keywords from an app's listing — your own or a competitor's (up to 10). The actor reads each app's name and description, keeps the strongest terms as extra seeds, and researches them like seed keywords. Use the numeric App Store ID (571800810), the iOS bundle ID or Android package name (com.calm.android), or the store URL. An App Store app can seed Google Play research and vice versa.",
            "items": {
              "type": "string"
            }
          },
          "store": {
            "title": "Store",
            "enum": [
              "ios",
              "android",
              "both"
            ],
            "type": "string",
            "description": "Which store to research. With Both, each store gets its own keyword list (up to the maximum below per store).",
            "default": "ios"
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "jp",
              "kr",
              "cn",
              "in",
              "br",
              "it",
              "es",
              "nl",
              "se",
              "no",
              "dk",
              "fi",
              "ch",
              "at",
              "be",
              "pt",
              "pl",
              "ru",
              "tr",
              "tw",
              "hk",
              "sg",
              "th",
              "id",
              "vn",
              "ph",
              "my",
              "mx",
              "ar",
              "co",
              "cl",
              "sa",
              "ae",
              "il",
              "eg",
              "ng",
              "za",
              "nz",
              "ie",
              "cz",
              "ro",
              "hu",
              "gr",
              "ua",
              "sk",
              "kz",
              "uz",
              "az",
              "by",
              "bg",
              "hr",
              "si",
              "lt",
              "lv",
              "ee",
              "is",
              "pe",
              "ec",
              "uy",
              "qa",
              "kw",
              "ma",
              "dz",
              "tn",
              "pk",
              "lk"
            ],
            "type": "string",
            "description": "The storefront to research. Covers Sonar's 72 keyword-research markets (Google Play: all except China).",
            "default": "us"
          },
          "maxKeywords": {
            "title": "Maximum keywords per store",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "The most keyword ideas to store (and charge) per store. Each seed yields up to 10 ideas; use depth 2 or more seeds to reach larger numbers.",
            "default": 50
          },
          "depth": {
            "title": "Depth",
            "minimum": 1,
            "maximum": 2,
            "type": "integer",
            "description": "1 = your seeds and their suggestions. 2 = also search each suggestion for its own suggestions (best opportunity first) until the maximum is reached — more long-tail ideas from the same seeds.",
            "default": 1
          },
          "seedsPerApp": {
            "title": "Seeds per app",
            "minimum": 1,
            "maximum": 15,
            "type": "integer",
            "description": "How many terms to take from each app's metadata as seeds. Noise (stopwords, URL fragments, boilerplate like \"subscription\") is removed first.",
            "default": 5
          },
          "minPopularity": {
            "title": "Minimum popularity",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep keywords with at least this popularity (0–100). Keywords below it are not stored and not charged. Keywords with unknown popularity are dropped once this is above 0.",
            "default": 0
          },
          "maxDifficulty": {
            "title": "Maximum difficulty",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep keywords with at most this difficulty (0–100). Keywords above it are not stored and not charged.",
            "default": 100
          },
          "includeAppNames": {
            "title": "Include app-name suggestions",
            "type": "boolean",
            "description": "App Store autocomplete also suggests app titles, like \"sleep sounds: calm rain, white noise, nature, fan\". They're skipped (and not charged) by default because nobody targets them as keywords. Turn this on to keep them.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}