{
  "openapi": "3.0.1",
  "info": {
    "title": "Yandex Wordstat API — Keyword Volume, Trends & Regions",
    "description": "Yandex Wordstat keyword tool: monthly search volume, up to 2,000 related keywords, similar queries, trends since 2018 and demand by city. Bulk.",
    "version": "1.0",
    "x-build-id": "ABhly0bMjaztIRv4u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cheapapi~yandex-wordstat-keyword-tool/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cheapapi-yandex-wordstat-keyword-tool",
        "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/cheapapi~yandex-wordstat-keyword-tool/runs": {
      "post": {
        "operationId": "runs-sync-cheapapi-yandex-wordstat-keyword-tool",
        "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/cheapapi~yandex-wordstat-keyword-tool/run-sync": {
      "post": {
        "operationId": "run-sync-cheapapi-yandex-wordstat-keyword-tool",
        "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",
        "required": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "maxItems": 2000,
            "type": "array",
            "description": "One keyword per line, as people type it into Yandex (Russian, Kazakh, Belarusian, Uzbek, Turkish or English; up to 400 characters). Duplicates are removed.<br>• Yandex Wordstat operators work: <code>\"купить iphone\"</code> (only these words), <code>!купить</code> (this exact word form), <code>[iphone купить]</code> (this word order), <code>купить iphone -бу</code> (exclude a word).<br>• Speed: Yandex currently allows this Actor about 100 statistics requests per hour, i.e. about 100 keywords per hour with the default reports. Longer lists keep running and wait for the limit automatically; one run handles up to 2,000 statistics requests (about 20 hours; volume + related = 1 request per keyword, each extra match type, the trend and the regions report add 1), split bigger lists.",
            "items": {
              "type": "string"
            }
          },
          "reports": {
            "title": "Reports",
            "type": "array",
            "description": "What to get for every keyword. Each delivered row is one charged result; a keyword with no searches costs only a small no-data fee (see Pricing in the README).",
            "items": {
              "type": "string",
              "enum": [
                "volume",
                "related",
                "similar",
                "trend",
                "regions"
              ],
              "enumTitles": [
                "Search volume — 1 row per keyword",
                "Related keywords — top queries that contain the keyword (up to 2,000)",
                "Similar keywords — other queries of the same people (up to 20)",
                "Trend — monthly, weekly or daily searches over time (1 row per keyword)",
                "Regions — searches by city or region"
              ]
            },
            "default": [
              "volume",
              "related"
            ]
          },
          "regions": {
            "title": "Regions (optional)",
            "maxItems": 100,
            "type": "array",
            "description": "Only count searches made in these places: city, region or country names in English or Russian (\"Moscow\", \"Saint Petersburg\", \"Kazakhstan\", \"Москва\") or Yandex region IDs (213 = Moscow). Empty = all regions. Up to 100. Applies to volume, related, similar and trend (the Regions report always covers every region).",
            "items": {
              "type": "string"
            }
          },
          "device": {
            "title": "Device",
            "enum": [
              "all",
              "desktop",
              "phone",
              "tablet"
            ],
            "type": "string",
            "description": "Only count searches made on this type of device.",
            "default": "all"
          },
          "maxPhrasesPerKeyword": {
            "title": "Related keywords per keyword",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many related keywords to return for each keyword (most searched first). Each one is a charged row, so this is the main cost control. Yandex returns up to 2,000.",
            "default": 50
          },
          "minSearches": {
            "title": "Minimum monthly searches",
            "minimum": 0,
            "type": "integer",
            "description": "Skip related and similar keywords with fewer monthly searches than this (skipped keywords are not charged).",
            "default": 0
          },
          "excludeWords": {
            "title": "Exclude words",
            "type": "array",
            "description": "Leave out every query containing one of these words (one word per line, e.g. <code>бесплатно</code>, <code>бу</code>). Applies to every report.",
            "items": {
              "type": "string"
            }
          },
          "matchTypes": {
            "title": "Search volume match types",
            "type": "array",
            "description": "Volume numbers to add to the Search volume row. Phrase and exact match are what SEO specialists call the real (\"clean\") frequency. Each extra match type is one more request (it counts toward the hourly request limit), but the row is still charged once. Not available for keywords that already use operators (their phrase/exact columns stay empty).",
            "items": {
              "type": "string",
              "enum": [
                "broad",
                "phrase",
                "exact"
              ],
              "enumTitles": [
                "Broad — all queries containing the words (Wordstat default)",
                "Phrase — only queries made of exactly these words (\"…\")",
                "Exact — exactly these words in this form (\"!…\")"
              ]
            },
            "default": [
              "broad"
            ]
          },
          "maxSimilarPerKeyword": {
            "title": "Similar keywords per keyword",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many similar keywords to return per keyword (Yandex gives up to 20).",
            "default": 20
          },
          "trendPeriod": {
            "title": "Trend: period",
            "enum": [
              "monthly",
              "weekly",
              "daily"
            ],
            "type": "string",
            "description": "Granularity of the trend report.",
            "default": "monthly"
          },
          "trendFrom": {
            "title": "Trend: from date",
            "type": "string",
            "description": "Start of the trend (YYYY-MM-DD). Empty = the last 24 months, 52 weeks or 30 days. Moved to the start of a month (monthly) or a Monday (weekly) when needed."
          },
          "trendTo": {
            "title": "Trend: to date",
            "type": "string",
            "description": "End of the trend (YYYY-MM-DD). Empty = the last finished month, week or day."
          },
          "regionLevel": {
            "title": "Regions report: level",
            "enum": [
              "cities",
              "regions",
              "all"
            ],
            "type": "string",
            "description": "Which kind of places the Regions report lists.",
            "default": "cities"
          },
          "maxRegionsPerKeyword": {
            "title": "Regions report: places per keyword",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many places to return per keyword, the ones with the most searches first. Each place is a charged row.",
            "default": 20
          },
          "maxWaitMinutes": {
            "title": "Maximum wait at the hourly limit (minutes)",
            "minimum": 0,
            "maximum": 120,
            "type": "integer",
            "description": "Yandex limits keyword statistics requests per hour and the limit resets within 60 minutes. When it is reached the run waits and continues automatically, up to this many minutes for each request (0–120; keep 60 or more for lists over 100 keywords). After that it stops and keeps what it has; nothing is charged for the waiting.",
            "default": 65
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}