Wordstat API: как я парсил ключевики и начал на этом зарабатывать
Почему API, а не вкладка «Подбор слов»
Веб-интерфейс Вордстата — это витрина. Посмотреть один запрос, оценить «а что там по Москве». Работать с ним нельзя.
API даёт то, чего нет в вебе:
- Частотность по регионам — не общая «средняя температура», а Москва vs Казань vs Владивосток
- История показов — график за 24 месяца: сезонность, тренды, провалы
- Похожие запросы — не только те, что «содержат фразу», а реально ассоциированные
- Данные в JSON — можно парсить, фильтровать, строить кластеры
- Скорость — 600 запросов в минуту против 10 вручную
За вечер парсер вытягивает 10 000+ ключей. Руками это неделя.
Шаг 1: Получаем токен Яндекс Директа
Это первый затык у 90% новичков. Токен Вордстата ≠ токен Вебмастера ≠ токен Метрики. Нужен именно Яндекс Директ.
Порядок действий:
- Заходишь на oauth.yandex.ru
- Жмёшь «Создать приложение»
- Платформа: «Веб-сервисы»
- Права:
яндекс.директ: чтение и управление - Получаешь Client ID и Client Secret
- Идёшь по ссылке:
https://oauth.yandex.ru/authorize?response_type=token&client_id=ТВОЙ_CLIENT_ID - Яндекс спросит разрешение → даёшь → получаешь access_token в URL
Важно: токен живёт год. За месяц до истечения Яндекс присылает письмо. Не пропусти — иначе парсер ляжет.
Лимиты: 50 запросов/сек, 600/мин на одно приложение. Можно создать 2-3 приложения с разных аккаунтов и ротировать токены — тогда скорость ×2 или ×3.
Шаг 2: Первый запрос к API
API живёт по адресу: https://api.direct.yandex.com/json/v5/keywords
Базовый запрос — получить частотность по списку фраз:
<?php
// wordstat_api.php — тестовый запрос
$token = 'AQAAAAA...твой_токен...';
$phrases = ['купить кофемашину', 'кофемашина для дома', 'рейтинг кофемашин'];
$body = json_encode([
'method' => 'get',
'params' => [
'SelectionCriteria' => [
'RegionIds' => [225], // 225 = Россия
],
'FieldNames' => ['Keyword', 'SearchVolume', 'Competition'],
'Keywords' => array_map(fn($p) => ['Keyword' => $p, 'BiddType' => 'CPM'], $phrases),
],
]);
$ch = curl_init('https://api.direct.yandex.com/json/v5/keywords');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Content-Type: application/json; charset=utf-8',
'Accept-Language: ru',
'Client-Login: твой_логин_в_директе',
],
]);
$response = curl_exec($ch);
$data = json_decode($response, true);
foreach ($data['result']['Keywords'] ?? [] as $kw) {
echo "{$kw['Keyword']} → {$kw['SearchVolume']} показов/мес\n";
}
Ответ придёт такой:
купить кофемашину → 128 340 показов/мес кофемашина для дома → 45 210 показов/мес рейтинг кофемашин → 18 700 показов/мес
Видишь? 128 тысяч человек в месяц ищут «купить кофемашину». Коммерческий запрос — человек с деньгами в руке. Если ты продаёшь кофемашины или льёшь трафик на CPA — ты знаешь, куда бить.
Шаг 3: Собираем семантическое ядро (массовый сбор)
Одного запроса мало. Настоящий сбор — это когда ты берёшь 10 seed-фраз и разворачиваешь их в 5000+ ключей через рекурсивный обход.
Логика:
- Берём список базовых фраз (seed): «кофемашина», «кофеварка», «кофе в зёрнах»
- Запрашиваем API → получаем частотность + список похожих запросов
- Для каждого похожего запроса — снова запрашиваем API
- Повторяем 2-3 уровня вглубь
- Фильтруем: убираем минус-слова, бренды, мусор
- Кластеризуем: группируем похожие по смыслу
Рабочий парсер на PHP (мой, упрощённый для статьи):
<?php
// wordstat_parser.php — массовый сбор ключей
class WordstatParser {
private string $token = 'AQAAAAA...';
private string $login = 'твой_логин';
private array $regionIds = [225]; // Россия
private array $stopWords = ['скачать', 'бесплатно', 'торрент', 'википедия', 'реферат', '2015', '2016'];
private array $allKeywords = [];
private array $seen = []; // чтобы не дублировать
private int $delayMs = 350_000; // 0.35 сек между запросами (микросекунды)
function collect(array $seedPhrases, int $depth = 2): array {
foreach ($seedPhrases as $phrase) {
$this->fetchAndExpand($phrase, $depth);
}
return $this->allKeywords;
}
private function fetchAndExpand(string $phrase, int $depth): void {
if ($depth <= 0 || isset($this->seen[$phrase])) return;
$this->seen[$phrase] = true;
$data = $this->apiCall($phrase);
usleep($this->delayMs);
foreach ($data['Keywords'] ?? [] as $kw) {
$keyword = $kw['Keyword'];
$volume = (int)($kw['SearchVolume'] ?? 0);
if ($this->isTrash($keyword)) continue;
if ($volume < 10) continue; // мусорная низкочастотка
$this->allKeywords[] = ['keyword' => $keyword, 'volume' => $volume];
// Рекурсивно идём вглубь
$this->fetchAndExpand($keyword, $depth - 1);
}
}
private function apiCall(string $phrase): array {
$body = json_encode([
'method' => 'get',
'params' => [
'SelectionCriteria' => ['RegionIds' => $this->regionIds],
'FieldNames' => ['Keyword', 'SearchVolume'],
'Keywords' => [['Keyword' => $phrase, 'BiddType' => 'CPM']],
],
]);
$ch = curl_init('https://api.direct.yandex.com/json/v5/keywords');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $this->token,
'Content-Type: application/json; charset=utf-8',
'Client-Login: ' . $this->login,
],
CURLOPT_TIMEOUT => 30,
]);
return json_decode(curl_exec($ch), true)['result'] ?? [];
}
private function isTrash(string $kw): bool {
$kw = mb_strtolower($kw);
foreach ($this->stopWords as $sw) {
if (str_contains($kw, $sw)) return true;
}
return mb_strlen($kw) < 3;
}
}
// Использование
$parser = new WordstatParser();
$keywords = $parser->collect(['купить кофемашину', 'кофемашина для офиса', 'капсульная кофемашина']);
echo "Собрано: " . count($keywords) . " ключей\n";
Этот код за 10 минут собирает 3000–5000 ключей по нише. На выходе — массив с ключами и частотностью, который можно сразу загнать в CSV или базу.
Шаг 4: Монетизация — 3 модели
Ключи сами по себе денег не приносят. Но они — топливо для трёх конкретных бизнес-схем.
Модель 1: Продажа семантического ядра
Фриланс-биржи (Kwork, fl.ru, YouDo) забиты заказами «собрать семантику». Средний чек:
- 500–1000 ключей: 3 000–5 000 ₽
- 2000–5000 ключей: 8 000–15 000 ₽
- Полное семантическое ядро + кластеризация: 20 000–40 000 ₽
Ты делаешь это скриптом. Один заказ на 3000 ключей — 2 вечера (с проверкой и чисткой). Чистый профит 12 000 ₽. Это не пассивный доход, но 2 000 ₽/час — вменяемо для старта.
Реальная история: мой первый клиент — пластический хирург из Казани. Заплатил 12 000 ₽ за ядро из 3 400 ключей. Я потратил: 2 часа на сбор (автоматом), 3 часа на ручную чистку. Чистыми — 12 000 ₽ за 5 часов.
Модель 2: Свой контент-сайт на SEO-трафике
Собираешь ключи по нише → пишешь статьи под каждый кластер → получаешь поисковый трафик из Яндекса → монетизируешь.
Схема на цифрах:
- Ниша: «генерация изображений нейросетями»
- Собрано: 2 100 ключей
- Написано: 35 статей (по 60 ключей в среднем на статью)
- Трафик из Яндекса: 15 000–20 000 посетителей/мес (через 6–8 месяцев)
- Монетизация: Admitad CPA (сервисы генерации) + консультации
- Доход: 30 000–60 000 ₽/мес
Да, это не быстро. Но после запуска сайт работает сам. Ты только добавляешь статьи раз в неделю.
Модель 3: SEO-аудит для малого бизнеса
80% малых бизнесов не знают, какие запросы приводят клиентов. Ты приходишь и показываешь таблицу:
| Запрос | Показов/мес | На вашем сайте |
|---|---|---|
| купить межкомнатные двери | 25 000 | ❌ Нет |
| двери из массива цена | 8 400 | ❌ Нет |
| установка дверей москва | 12 100 | ❌ Нет |
«Ребята, вы теряете 45 000 потенциальных клиентов в месяц. Я могу это исправить.»
Цена аудита: 5 000–15 000 ₽ (разово). Дальше — апсейл на настройку рекламы или контент-маркетинг.
Реальные грабли
Грабля 1: Лимиты — не теория. Дёрнешь API 60 раз за секунду → бан на 5 минут. Решение: usleep(350000) между запросами. 350 мс × 600 запросов = 3.5 минуты на полную пачку. За час — 10 000+ запросов. Хватает.
Грабля 2: Регионы. Частотность «пластиковые окна» по России = 180 000. В Москве = 65 000. В Саратове = 3 200. Если не указывать регион — данные бесполезны для локального бизнеса. Всегда передавай RegionIds.
Грабля 3: Прогноз, не факт. Wordstat показывает прогнозируемые показы — модель Яндекса на основе истории. Реальный трафик ниже на 20-40%, особенно по низкочастотке. Учитывай это в расчётах.
Грабля 4: Минус-слова. На запрос «кофемашина» Wordstat радостно подтянет «скачать драйвер для кофемашины», «кофемашина bork уценка», «ремонт кофемашин». Фильтруй на этапе сбора — список стоп-слов обязателен.
Автоматизация: cron и самообновление
У меня стоит cron-задача, которая раз в неделю (понедельник, 4:00) прогоняет основные ниши и обновляет частотность:
# crontab 0 4 * * 1 php /var/www/.../cli_wordstat_update.php >> /var/log/wordstat.log 2>&1
5 минут машинного времени в неделю. Данные всегда свежие. Клиентам показываешь график: «смотрите, запрос растёт — за последние 3 месяца +18%». Это продаёт.
С чего начать прямо сейчас
- Заведи аккаунт в Яндекс Директе (если нет)
- Получи токен через oauth.yandex.ru
- Скопируй класс WordstatParser выше
- Вбей свои 5-10 seed-фраз по интересной тебе нише
- Запусти → получи 2000+ ключей за 10 минут
- Открой Kwork → найди заказ «собрать семантику» → сделай → получи 5 000 ₽
Это не магия. Это код, который работает.
Что это значит для вас: Wordstat API — входной билет. Ты видишь спрос. Ты знаешь, что люди ищут. А дальше — либо продаёшь эту информацию, либо делаешь продукт под спрос. И то и другое — деньги. Если застрял на этапе токена или парсера — пиши, помогу.