База живых компаний по трафику сайта - почти бесплатно

Если продукт нужен компаниям определенного размера, их проще искать не в LinkedIn, а по сайтам. Есть посещаемость - значит компания живая, а по трафику видно, насколько она большая.

Что получится на выходе

$0списки сайтов от Google
~$0.13классификация 1000 сайтов в Jev
от $3трафик по 1000 доменов в TabAPI

Способ подходит, когда важен размер компании, а сфера вторична или ее можно отобрать классификатором. Если ваши клиенты - B2B-ниши с крошечными сайтами, сюда они почти не попадут: в списки Google входят только сайты, которые заметно посещают из Chrome.

Что приготовить

Часть 1

Как это устроено

1

Список сайтов из CrUX

Chrome UX Report - открытые данные Google о сайтах, которые реально открывают в Chrome. Там есть ранг популярности, по нему и отбирается нужный размер.

2

Поиск LinkedIn на сайте

Скрипт открывает главную и ищет ссылку linkedin.com/company/. Нет страницы компании - сайт дальше не идет.

3

Классификация в Jev

Текст главной без тегов уходит в Jev с двумя вопросами: коммерческий ли это сайт и к какой сфере он относится.

4

Трафик в TabAPI

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

Порядок шагов - от дешевого к дорогому

Каждый шаг отсеивает часть списка, а следующий работает только с оставшимися. Jev стоит дешевле TabAPI, поэтому классификация идет до проверки трафика.

Часть 2

Списки сайтов

Весь мир

Готовый топ-1 млн с ежемесячным обновлением лежит на GitHub: zakird/crux-top-lists. Это CSV с двумя колонками: адрес сайта и ранг. Скачивать руками не нужно, промпт ниже сделает это сам.

Конкретная страна

Страновых файлов на GitHub нет, они берутся из BigQuery - это сервис Google Cloud, где лежит весь CrUX. Бесплатного месячного лимита хватает с запасом, но для проекта Google попросит привязать карту.

Открываете консоль BigQuery, вставляете запрос и сохраняете результат в CSV. В примере - Германия (country_de) и август 2026 (202608). Код страны - две буквы, месяц - последний доступный: данные выходят во второй вторник следующего месяца.

SQL для BigQuery
SELECT DISTINCT origin, experimental.popularity.rank AS rank
FROM `chrome-ux-report.country_de.202608`
WHERE experimental.popularity.rank IN (50000, 100000, 500000)

Малому бизнесу трудно попасть в мировой топ, поэтому для него страновые списки обычно полезнее мирового.

Ранг - это корзина, а не место в рейтинге

Сайты в CrUX не пронумерованы по порядку. Ранг показывает корзину: топ-1k, 5k, 10k, 50k, 100k, 500k, 1M и дальше. Корзина 50000 означает "в топ-50k, но не в топ-10k", а внутри корзины порядок случайный. Выбирать нужно корзины, а не "строки с 20 000 по 80 000".

Часть 3

Jev: классификатор за копейки

Jev - модель от TypeSafe AI, доступна через OpenRouter. Это не LLM: текст она не пишет. Ей дают материал и вопрос с вариантами ответа, она выбирает вариант и возвращает вероятность по каждому. Умеет выбор из списка, да/нет и оценку по шкале.

Платный только вход - $0.042 за 1 млн токенов, ответ бесплатный. Главная страница - это около 3 тыс. токенов, поэтому тысяча сайтов обходится примерно в $0.13.

Проверить ключ за минуту

Создаете ключ на openrouter.ai/settings/keys, пополняете баланс и отправляете тестовый запрос. Вместо sk-or-... вставьте свой ключ. В ответе придет выбранный вариант и вероятности.

Терминал macOS
curl
export OPENROUTER_API_KEY="sk-or-..."
curl https://openrouter.ai/api/alpha/decisions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "typesafe/jev-1.13",
  "state": {"site": "Семейная стоматология в Казани. Лечение, имплантация, детский прием. Запись онлайн."},
  "questions": {
    "commercial": {
      "type": "choice",
      "instructions": "Это сайт компании, которая продает товары или услуги?",
      "criteria": {
        "yes": "Коммерческая компания: продает товары или услуги",
        "no": "Госорган, вуз, СМИ, блог, некоммерческая организация"
      }
    },
    "sphere": {
      "type": "choice",
      "instructions": "К какой сфере относится компания?",
      "criteria": {
        "medicine": "Медицина и стоматология",
        "retail": "Розничная торговля и интернет-магазины",
        "it": "IT и разработка",
        "construction": "Строительство и ремонт",
        "other": "Другое"
      }
    }
  }
}'
PowerShell Windows
PowerShell
$env:OPENROUTER_API_KEY = "sk-or-..."
$body = @'
{
  "model": "typesafe/jev-1.13",
  "state": {"site": "Семейная стоматология в Казани. Лечение, имплантация, детский прием. Запись онлайн."},
  "questions": {
    "commercial": {
      "type": "choice",
      "instructions": "Это сайт компании, которая продает товары или услуги?",
      "criteria": {
        "yes": "Коммерческая компания: продает товары или услуги",
        "no": "Госорган, вуз, СМИ, блог, некоммерческая организация"
      }
    },
    "sphere": {
      "type": "choice",
      "instructions": "К какой сфере относится компания?",
      "criteria": {
        "medicine": "Медицина и стоматология",
        "retail": "Розничная торговля и интернет-магазины",
        "it": "IT и разработка",
        "construction": "Строительство и ремонт",
        "other": "Другое"
      }
    }
  }
}
'@
Invoke-RestMethod -Method Post -Uri "https://openrouter.ai/api/alpha/decisions" `
  -Headers @{ Authorization = "Bearer $env:OPENROUTER_API_KEY" } `
  -ContentType "application/json; charset=utf-8" `
  -Body ([System.Text.Encoding]::UTF8.GetBytes($body)) | ConvertTo-Json -Depth 10

Что важно знать про Jev

Часть 4

TabAPI: реальный трафик

TabAPI по домену отдает визиты по месяцам, ранги, отказы, страны и разбивку источников: органика, платная реклама, прямые заходы, соцсети, AI-ассистенты.

ЧтоСколько
$11000 кредитов, без подписки, не сгорают
Трафик по домену1 кредит за месяц истории, минимум 3 - от $0.003
Ошибкине списываются
При регистрации100 кредитов, без карты

Источник данных TabAPI на сайте не раскрывает. Для маленьких сайтов любые сервисы оценки трафика дают приблизительную цифру - ее стоит читать как порядок величины, а не как точное число.

Калибровка на бесплатных кредитах

Заранее неизвестно, в какой корзине CrUX лежат сайты с 5-100 тыс. визитов - это зависит от страны. 100 бесплатных кредитов хватает примерно на 30 доменов: по 5-10 случайных из каждой корзины. После этого видно, какие корзины брать, и большой прогон не тратит деньги на лишнее.

Часть 5

Промпт

Отправляете это в Claude Code или Codex. Сначала он задаст вопросы и остановится, потом соберет скрипт, прогонит его на небольшой выборке и покажет смету на полный список.

промпт - читать не нужно, просто скопируйте
Собери мне пайплайн, который находит живые компании по трафику их сайта.

--------------------------------------------------------------------
СНАЧАЛА СПРОСИ МЕНЯ И ОСТАНОВИСЬ

Одним сообщением, нумерованным списком:

1. Какая страна или весь мир. Для страны нужен список из BigQuery:
   если у меня его нет, объясни, как его выгрузить, или предложи
   начать с мирового списка.

2. Какие корзины популярности CrUX брать. По умолчанию предложи
   50k, 100k и 500k. Объясни, что это корзины, а не места в рейтинге.

3. Что я продаю и кому. Три-пять строк своими словами.

4. Список сфер для классификации: мой или твой из 20-30 групп
   под мой продукт.

5. Какой диапазон трафика нужен. По умолчанию 5 000-100 000
   визитов в месяц.

6. Сколько сайтов прогнать в первый раз. По умолчанию 200.

Не начинай собирать, пока я не отвечу.

--------------------------------------------------------------------
КЛЮЧИ

OPENROUTER_API_KEY и TABAPI_KEY читай из файла .env в папке проекта.
Если файла нет, создай .env с пустыми значениями и попроси меня
вписать ключи самому. Ключи в чате не проси, в код и логи не выводи.
Добавь .env в .gitignore.

--------------------------------------------------------------------
ИСТОЧНИКИ

Актуальный формат API проверь по документации, а не по памяти.

- CrUX, мировой список:
  https://raw.githubusercontent.com/zakird/crux-top-lists/main/data/global/current.csv.gz
  Колонки origin и rank. Страновые списки - из BigQuery, таблица
  chrome-ux-report.country_XX.YYYYMM, поле experimental.popularity.rank.
- Jev: https://openrouter.ai/docs/guides/community/jev-tutorial
  POST https://openrouter.ai/api/alpha/decisions, модель typesafe/jev-1.13.
  Версию закрепи, не используй latest.
- TabAPI: https://tabapi.com/docs
  GET https://tabapi.com/api/v1/domains/{domain}/traffic?months=3

--------------------------------------------------------------------
ПОРЯДОК - ОТ ДЕШЕВОГО К ДОРОГОМУ

Каждый шаг отсеивает часть списка, следующий работает только
с оставшимися.

1. Нормализация. origin превращай в домен: без https:// и www.,
   поддомены одной компании склей. Выкинь зоны gov, edu, mil, int
   и корзины 1k и 5k.

2. Главная страница. Обычный HTTP-запрос, таймаут 15 секунд,
   5-10 запросов параллельно, честный User-Agent. Браузер (Playwright)
   - только для сайтов, где ссылки подгружает JavaScript.
   Ищи ссылку linkedin.com/company/ на главной. Если ее нет -
   на /about, /contact и их вариантах на языке сайта.
   Сохрани текст главной без тегов, обрежь до 8 000 символов.

3. Jev - только по сайтам, где нашелся LinkedIn. Два вопроса типа
   choice в одном запросе:
   - коммерческая компания или нет. Отдельными вариантами - казино,
     адалт, СМИ, госорганы и вузы;
   - сфера из моего списка. Если сфер больше 30, классифицируй
     в два шага: сначала группа, потом подсфера внутри группы.
   Сохраняй confidence. Сайты с confidence ниже 0.6 помечай
   "проверить вручную", не выкидывай.

4. TabAPI - только по коммерческим. Визиты за 3 месяца и источники
   трафика. Оставь тех, кто попал в мой диапазон.

--------------------------------------------------------------------
ДО БОЛЬШОГО ЗАПУСКА

- Калибровка. Возьми по 5-10 случайных доменов из каждой выбранной
  корзины, проверь их трафик в TabAPI и покажи таблицу
  "корзина -> медиана визитов в месяц". Я скажу, какие корзины оставить.

- Пробный прогон всего пайплайна на выборке, которую я назвал.
  Покажи результат и фактические расходы на Jev и TabAPI, посчитай
  смету на полный список и жди моего подтверждения.

--------------------------------------------------------------------
НАДЕЖНОСТЬ

- Кэшируй результат каждого шага по домену: повторный запуск
  не ходит заново на сайты и не тратит кредиты.
- После обрыва запуск продолжается с места остановки.
- Ошибки (403, таймауты, Cloudflare) пиши в колонку статуса,
  а не роняй весь прогон.

--------------------------------------------------------------------
РЕЗУЛЬТАТ

CSV с колонками: домен, корзина CrUX, ссылка на LinkedIn,
коммерческий (да/нет + confidence), сфера (+ confidence),
визиты в месяц, доля органики, доля рекламы, доля прямых заходов,
статус.

В конце - сводка: сколько сайтов осталось после каждого шага
и сколько потрачено.

Потом в двух абзацах объясни, что где лежит и как запустить
пайплайн на другой стране.

Где спотыкаются

Что дальше

Страница компании в LinkedIn - еще не контакт. Дальше по каждой компании ищут ЛПР и их контакты, а готовую базу загружают в CRM. Как подключить CRM к Claude, ChatGPT, DeepSeek или другому harness - в гайде CRM внутри Claude и ChatGPT. Как обогащать новые сделки данными о компании - в гайде про обогащение сделок.

Jev пригодится и за пределами этой задачи: везде, где нужно не написать текст, а выбрать ответ из списка - отсеять нерелевантные сайты, проставить сферу, ответить да/нет по анкете.

Цены и форматы API проверены 08.10.2026 по документации CrUX, crux-top-lists, Jev на OpenRouter и TabAPI. У новых сервисов цены меняются часто - перед большим прогоном стоит перепроверить.