惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
Latest news
Latest news
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
V
V2EX
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
小众软件
小众软件
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
G
GRAHAM CLULEY
罗磊的独立博客
T
Tor Project blog
C
Cisco Blogs
美团技术团队
博客园 - Franky
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Latest
Security Latest
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
Spread Privacy
Spread Privacy
J
Java Code Geeks
C
CERT Recently Published Vulnerability Notes
大猫的无限游戏
大猫的无限游戏
S
Securelist
The Cloudflare Blog
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Project Zero
Project Zero

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Wordstat API в Yandex Cloud Search API: разбор endpoints, подводные камни, минимальный Python wrapper (2026)
viktdo · 2026-05-01 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение9 мин

Охват и читатели228

Туториал

Понадобилась мне семантика - не в смысле «один раз глянуть Wordstat в браузере», а программно, чтобы прогонять по 50-100 фраз в день и складывать результаты в свою базу. Контекст: веду контент-маркетинг для агентства разработки чат-ботов BotKraft, статьи под Яндекс Нейро. Веб-Wordstat для такого объёма не вариант - копировать вручную из таблички полдня. Direct API - слишком дорогой вход: нужен рекламный аккаунт, отдельный OAuth, у меня этого не было и заводить ради одного метода не хотелось.

Случайно полез в новые сервисы Yandex Cloud AI Studio (там сейчас живёт YandexGPT) и обнаружил, что Wordstat теперь есть в Search API v2 - отдельным сервисом без зависимости от Direct. Доступ - обычный API-ключ из AI Studio, тот же что и для YandexGPT. По сути в один клик получаешь ещё и доступ к семантике.

Подключал, по дороге собрал коллекцию граблей. Этим и поделюсь.

Где это вообще лежит

Не путаем три разных сервиса с похожим названием:

  • Search API for sites - старый сервис «поиск по сайту», возвращает SERP по запросам, оплата за выдачу

  • Search API v2 (новый) - то что в AI Studio, включает Web Search, Image Search, Generative Search и Wordstat

  • Yandex Direct API → Reports.Wordstat - старый путь через рекламный аккаунт

Меня интересует второе. Endpoint root для Wordstat: https://searchapi.api.cloud.yandex.net/v2/wordstat/...

Под капотом - gRPC c REST-обёрткой через google.api.http annotations. Полная proto-спецификация в публичном yandex-cloud/cloudapi - рекомендую смотреть туда, а не в гипертекстовую документацию: в proto всё точнее и без неоднозначностей.

Четыре метода:

Метод

Path

Назначение

GetTop

/topRequests

топ похожих запросов с частотностью за 30 дней + ассоциации

GetDynamics

/dynamics

частотность по времени (день/неделя/месяц)

GetRegionsDistribution

/regions

география запроса по регионам/городам

GetRegionsTree

/getRegionsTree

справочник всех регионов с ID

Ничего сверхъестественного. Operators (!слово+слово[слово]) и сравнение нескольких фраз в одном запросе - отсутствуют, об этом ниже.

Авторизация и история про folder

Авторизация - заголовок Authorization: Api-Key <ключ>. Ключ создаётся в AI Studio привязанным к Service Account, тот живёт в каком-то folder. Folder ID - обязательное поле folderId в JSON-теле каждого запроса. Без него - ошибка INVALID_ARGUMENT.

И вот тут первая засада: где взять folder ID? В UI AI Studio это, конечно, есть, но прятано за пару кликов в консоли Yandex Cloud → Folders. Документация AI Studio (на момент моего тыка) folder в инструкциях явно не упоминала - будто все априори знают.

Я узнал свой folder через крайне дурацкий путь. Сначала пытался вызвать YandexGPT с подставленным gpt://test/yandexgpt/latest (просто чтобы проверить что ключ работает). API ответил:

Specified folder ID 'test' does not match with service account folder ID 'b1g0gj00k72p1kr6dsc5'

Спасибо ребятам, что зашили имя реального folder в текст ошибки - буквально лайфхак на ровном месте. Тот же folder подошёл и для Wordstat-эндпоинтов.

Если у вас тоже не сразу очевидно где folder - можно либо тыкать в Cloud Console, либо вот так через текст ошибки. Гарантированно даст актуальный.

topRequests - основной метод

Этот метод я использую в 80% случаев. Он возвращает не просто частотность одной фразы, а топ похожих формулировок (results) и семантически близкие запросы (associations). Последнее - золото, об этом отдельно.

Минимальный запрос:

curl -X POST 'https://searchapi.api.cloud.yandex.net/v2/wordstat/topRequests' \
  -H "Authorization: Api-Key $YANDEX_AI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "phrase": "чат бот для бизнеса",
    "numPhrases": 20,
    "regions": ["213"],
    "folderId": "b1g0gj00k72p1kr6dsc5"
  }'

Параметры:

  • phrase - основной запрос (до 400 символов, обязательно)

  • numPhrases - сколько результатов вернуть, 1-2000, по умолчанию 20

  • regions - массив региональных ID (["213"] - Москва, ["2"] - Санкт-Петербург). Опционально

  • devices - массив ["DEVICE_ALL"|"DEVICE_DESKTOP"|"DEVICE_PHONE"|"DEVICE_TABLET"]. Опционально

  • folderId - обязательно

Ответ:

{
  "totalCount": "21500",
  "results": [
    {"phrase": "чат боты для бизнеса", "count": "1100"},
    {"phrase": "чат бот для бизнеса макс", "count": "145"},
    {"phrase": "ии чат бот для бизнеса", "count": "102"}
  ],
  "associations": [
    {"phrase": "чатбот", "count": "7371"},
    {"phrase": "чатбот нейросеть", "count": "372"}
  ]
}

Почему count - строки, а не числа? Это особенность gRPC→JSON преобразования: protobuf int64 сериализуется в JSON как string, чтобы не терять точность в больших значениях (а JS-number - int53). Чисто гигиенически - оборачивайте int(...) перед арифметикой, иначе словите сюрприз на сравнениях.

Зачем смотреть на associations

Реальная история. Я готовил статью «Чат-бот для бизнеса: как выбрать», уверенный что основной запрос - чат бот для бизнеса. Запросил topRequests, получил totalCount: 21500 и top-1 «чат боты для бизнеса» - 1100 в месяц. Не густо.

Дальше посмотрел в associations. Первая позиция - слово «чатбот» одно. Просто слитное написание. Частотность - 7371. В семь раз больше моего «правильного» запроса.

Ну и кто из нас был «прав». Маркетолог с многолетней практикой Wordstat это бы заметил глазами - там всё это на одном экране. Я как технарь без regular-практики решил: «возьму то что напрашивается». А API заставил меня посмотреть на associations отдельным полем - и уберёг от очевидного, но проигнорированного бага.

Если вы внедряете Wordstat в автоматический пайплайн (а зачем ещё API?) - обязательно дёргайте обе колонки и сравнивайте totalCount ассоциаций с основным запросом. На свой H1 я в итоге поставил «чатбот», а не «чат бот для бизнеса». Прикинул бы вы такое глазами на 50 фразах в день?

dynamics - графики во времени

Возвращает частотность по периодам. Полезно для оценки сезонности: запускать ли ниши в межсезонье, какой месяц брать за baseline.

curl -X POST 'https://searchapi.api.cloud.yandex.net/v2/wordstat/dynamics' \
  -H "Authorization: Api-Key $YANDEX_AI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "phrase": "чат бот для бизнеса",
    "period": "PERIOD_MONTHLY",
    "fromDate": "2026-01-01T00:00:00Z",
    "toDate": "2026-03-31T23:59:59Z",
    "folderId": "b1g0gj00k72p1kr6dsc5"
  }'

period - PERIOD_DAILY / PERIOD_WEEKLY / PERIOD_MONTHLYС префиксом PERIOD_ - это enum в proto, и API строго проверяет. Без префикса - INVALID_ARGUMENT.

Даты - RFC3339 timestamps. И вот тут второй грабль: для PERIOD_MONTHLY поле toDate ОБЯЗАНО быть последним днём месяца. Поставил 2026-04-01T00:00:00Z - получил:

{
  "code": 3,
  "message": "rpc error: code = InvalidArgument desc = The to field value should be the last day of the month",
  "details": [...]
}

Аналогично - для PERIOD_WEEKLY нужен последний день недели. В proto этого ограничения нет, написано просто google.protobuf.Timestamp. Узнаёшь из ответа сервера. Если делаете календарную автоматизацию - закладывайте функцию last_day_of_period(date, period).

Отдаёт response в виде:

{
  "results": [
    {"date": "2026-01-31T00:00:00Z", "count": "1050", "share": 0.0000087},
    {"date": "2026-02-28T00:00:00Z", "count": "1180", "share": 0.0000094},
    {"date": "2026-03-31T00:00:00Z", "count": "1100", "share": 0.0000091}
  ]
}

share - доля запроса от всех Yandex-запросов в этом периоде. Полезно для нормировки если сравниваете тренды разных ниш.

regions - география запросов

Чтобы понимать, где запускать рекламу или какой регион таргетить контентом.

curl -X POST 'https://searchapi.api.cloud.yandex.net/v2/wordstat/regions' \
  -H "Authorization: Api-Key $YANDEX_AI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "phrase": "чат бот для бизнеса",
    "region": "REGION_REGIONS",
    "folderId": "b1g0gj00k72p1kr6dsc5"
  }'

region - три варианта: REGION_ALL (всё подряд), REGION_CITIES (только города), REGION_REGIONS (только субъекты РФ).

В каждом элементе ответа интересно поле affinityIndex:

{
  "region": "1",
  "count": "235",
  "share": 0.0000109,
  "affinityIndex": 120.4
}

affinityIndex - отношение доли запроса в этом регионе к доле по стране. Больше 100 - «горячее» среднего, меньше 100 - слабее. Я использую так: при выборе ниши для лендинга смотрю топ-10 регионов с affinityIndex > 130 - там запрос реально греется, можно ехать с офером.

Минус: region в ответе - это ID, а не название. Чтобы превратить в человекочитаемое - нужен справочник из четвёртого метода.

getRegionsTree - справочник регионов

Самый скучный, но без него географические данные мало понятны. Возвращает дерево всех регионов Yandex с ID и label (название). Я его дёргаю один раз и кэширую в локальный JSON, дальше - просто маппинг id→name.

curl -X POST 'https://searchapi.api.cloud.yandex.net/v2/wordstat/getRegionsTree' \
  -H "Authorization: Api-Key $YANDEX_AI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"folderId": "b1g0gj00k72p1kr6dsc5"}'

В ответе - рекурсивная структура regions: [{id, label, children: [...]}]. Размер JSON - около 200 KB, в нём пара тысяч регионов вплоть до районов городов.

Минимальный Python wrapper

Свой воркшоп в 60 строк, без сторонних библиотек (только stdlib):

import json
import os
import ssl
import sys
import urllib.request
import urllib.error

KEY = os.environ["YANDEX_AI_API_KEY"]
FOLDER = os.environ.get("YANDEX_FOLDER_ID", "b1g0gj00k72p1kr6dsc5")
API_BASE = "https://searchapi.api.cloud.yandex.net/v2/wordstat"

# macOS Python: системный CA-bundle часто не подтянут - отключаем строгую проверку.
# В проде - ставьте certifi и нормальный context, тут для локальных скриптов сойдёт.
SSL_CTX = ssl.create_default_context()
SSL_CTX.check_hostname = False
SSL_CTX.verify_mode = ssl.CERT_NONE


def call(path: str, body: dict) -> dict:
    body.setdefault("folderId", FOLDER)
    req = urllib.request.Request(
        f"{API_BASE}/{path}",
        data=json.dumps(body).encode("utf-8"),
        headers={
            "Authorization": f"Api-Key {KEY}",
            "Content-Type": "application/json",
        },
        method="POST",
    )
    try:
        with urllib.request.urlopen(req, timeout=30, context=SSL_CTX) as resp:
            return json.loads(resp.read().decode("utf-8"))
    except urllib.error.HTTPError as e:
        return {"_http_error": e.code, "_body": e.read().decode("utf-8", errors="replace")}


def top(phrase: str, num: int = 20) -> None:
    res = call("topRequests", {"phrase": phrase, "numPhrases": num})
    if "_http_error" in res:
        sys.exit(f"HTTP {res['_http_error']}: {res['_body'][:200]}")

    print(f"\n«{phrase}» - всего {res['totalCount']} запросов/мес\n")
    print("ТОП:")
    for r in res.get("results", []):
        print(f"  {int(r['count']):>8}   {r['phrase']}")
    if res.get("associations"):
        print("\nАССОЦИАЦИИ:")
        for r in res["associations"]:
            print(f"  {int(r['count']):>8}   {r['phrase']}")


if __name__ == "__main__":
    top(sys.argv[1] if len(sys.argv) > 1 else "чат бот для бизнеса", num=10)

Запускаешь python3 wordstat.py "ваша фраза" - видишь топ + ассоциации. На основе этого скелета у меня выросли отдельные команды dynamicsregionsbatch (последняя - прогон по списку из файла, чтобы проверить SEO-семантику разом).

Я специально ушёл от requests и взял голый urllib: меньше зависимостей, легче ставить в CI, никаких внезапных breaking changes от сторонней либы.

Подводные камни (сводно)

  1. Folder ID нигде явно не упомянут в инструкциях - узнаётся через текст ошибки YandexGPT (см. выше). В перспективе наверняка добавят в quickstart, но сейчас так

  2. PERIOD_MONTHLY требует toDate - последний день месяца. Аналогично для weekly. В proto не описано, узнаёте от сервера

  3. macOS Python без сертификатов: ssl.SSLCertVerificationError. Решение - ssl.CERT_NONE для локалки или установить certifi для прода

  4. count приходит строкой (proto-quirk для int64). Не забывайте int(...) перед операциями

  5. associations может отсутствовать на узких нишевых запросах - пустой массив, не null. Не assume что ключ всегда есть с данными

Чего НЕТ vs веб-Wordstat

До переезда с веб-Wordstat на API стоит понимать что в API чего-то не будет:

  • Операторы (!слово+слово[слово]) - не поддерживаются. Передать в phrase можно, но точная фразовая частотность не гарантируется

  • Сравнение нескольких фраз в одном запросе - нет. Только по одной за вызов

  • Левая колонка / правая колонка отдельно - API возвращает только results + associations, без полного списка ассоциаций без частот

  • История запросов пользователя - нет (что логично)

Если вам нужна тонкая работа с операторами - открываете wordstat-2.yandex.ru в браузере. Если массовая проверка тысячи фраз для контентного пайплайна - этот API.

Куда я это вписал

Конкретно у меня - в пайплайн проверки H1 / подзаголовков / FAQ. Перед публикацией статьи запускаю wordstat.py top "<черновой H1>" - смотрю что там в associations. Часто переписываю H1 под более популярную формулировку. Время - секунды, выгода - часы недописанного контента, который никто не нашёл бы.

Из побочного: автоматизировал проверку «не пишем ли мы про мёртвую тему». Если totalCount < 200/мес - статья слишком узкая, или бы взять смежный широкий запрос.

Цены и квоты

Приятный сюрприз: Wordstat API в составе AI Studio Search API на момент написания бесплатен. По общей политике AI Studio без оплаты идут API-вызовы (в том числе Wordstat и embedding-сервисы), хранилище файлов и поисковые индексы; платить вы будете только за токены LLM-моделей через Model Gallery (YandexGPT и подобные). Wordstat сюда не попадает.

Актуальный статус всё-таки лучше глянуть на странице тарифов AI Studio — Yandex иногда меняет правила, особенно когда сервис выходит из беты.

Rate limit, конечно, есть — стандартный для Yandex Cloud, где-то 5-10 RPS. Я не упирался при разумном использовании. Для batch-обходов на сотни ключей закладываю time.sleep(0.2) между вызовами просто из вежливости и чтобы не словить 429.

Когда брать, когда нет

Брать, если:

  • Регулярно нужна семантика (10+ запросов в день)

  • Уже есть Yandex Cloud-аккаунт с AI Studio (зачастую под YandexGPT)

  • Не хочется заводить рекламный аккаунт ради Wordstat

Не брать, если:

  • Запросов на Wordstat - 5 в неделю. Веб-интерфейс быстрее

  • Нужны операторы и тонкая работа с ассоциациями

  • Уже глубоко используете Direct API и Wordstat там устраивает

Полезные ссылки

В целом — практичный API за разумные деньги. Главное переживите грабли с folder ID и месячными датами, дальше всё прозрачно.