spb.hh.ru — это только UI. Для интеграции нужны три домена: api.hh.ru (endpoints), dev.hh.ru (регистрация OAuth-приложений), github.com/hhru/api (документация + OpenAPI). После 15 декабря 2025 публичный API для соискателей закрыт — остались анонимные read-only endpoints, employer-side API и серая зона UI-эмуляции.
HH.ru исторически имел открытый публичный API через OAuth 2.0 — с тремя уровнями доступа (anonymous, application, user). На основе этого API выросла экосистема: ATS-интеграции (Huntflow, Talantix), скрипты автоматизации, AI-ассистенты, MCP-серверы для LLM-агентов.
15 декабря 2025 года HH одним движением закрыл одну сторону этой экосистемы — сторону соискателя. Официальная мотивация: борьба с мошенничеством и нерелевантными авто-откликами. Эффект: любая интеграция, действующая от имени кандидата, перестала работать.
POST /negotiations, action-endpoints на стороне соискателя.@sargonpiraev/hh-api-client archived 23.04.2026).gmen1057/headhunter-mcp-server покрывает поиск, но action-tool'ы под риском.Выбор интеграционного канала однозначно определяется стороной (employer vs job-seeker) и action vs read-only. Поток ниже работает как чек-лист.
готовое action под риском
Python 3.10+, MIT, 10 tools. Поиск, vacancy, employer, similar, areas, dictionaries, resumes*, apply*, negotiations*.
Идеально для: read-only job-search assistant, агент-агрегатор.
Слабое место: hh_apply_to_vacancy и hh_get_negotiations — это job-seeker API, частично заблокированы 15.12.2025.
серая зона
Готовые MCP-endpoints от easyapi/hh-ru-job-scraper и scrapestorm. Работают через HTML-парсинг, а не официальный API.
Идеально для: когда anonymous endpoints не хватает, риск приемлем.
Слабое место: нарушение ToS HH, периодические поломки от антибот-мер.
полный контроль
OpenAPI HH (api.hh.ru/openapi/redoc) → генерируешь клиент → оборачиваешь в MCP tools через @modelcontextprotocol/sdk или mcp (Python).
Идеально для: production employer-сценарии, кастомные workflows.
Слабое место: требует разработки и поддержки.
hh_search_vacancies, hh_get_areas, hh_get_dictionaries — анонимные, должны работать. hh_apply_to_vacancy, hh_get_negotiations — практически наверняка нет на стороне соискателя.
{
"mcpServers": {
"headhunter": {
"type": "stdio",
"command": "/path/to/venv/bin/python",
"args": ["/path/to/headhunter-mcp-server/server.py"],
"env": {
"HH_CLIENT_ID": "...",
"HH_CLIENT_SECRET": "...",
"HH_APP_TOKEN": "...",
"HH_REDIRECT_URI": "https://your-domain.com/oauth/callback"
}
}
}
}
Два сценария авторизации. Application — для server-to-server без участия пользователя. User (authorization code) — для действий от имени конкретного employer-менеджера.
Authorization: Bearer <token> для авторизованных + header User-Agent: AppName/Version (contact@email) для всех, включая anonymous. Без User-Agent ответ 400. Только домен api.hh.ru — m.hh.ru deprecated для OAuth.
| Endpoint / возможность | Авторизация | Статус | Кому применимо |
|---|---|---|---|
GET /vacancies — поиск |
anonymous | открыт | все |
GET /vacancies/{id} — детали |
anonymous | открыт | все |
GET /vacancies/{id}/similar_vacancies |
anonymous | открыт | все |
GET /dictionaries, /areas, /industries |
anonymous | открыт | все |
GET /employers/{id} — публичная info |
anonymous | открыт | все |
POST /vacancies — создание |
employer OAuth | открыт | employer |
GET /negotiations на свои вакансии |
employer OAuth | открыт | employer |
GET /resumes — поиск кандидатов |
employer OAuth + подписка | открыт | employer |
| Webhook subscriptions на employer-события | employer OAuth | открыт | employer |
POST /negotiations — отклик соискателя |
user OAuth (job-seeker) | закрыт 15.12.2025 | — |
| Программное чтение своих переписок | user OAuth (job-seeker) | закрыт 15.12.2025 | — |
| AI-агент от имени кандидата | user OAuth (job-seeker) | закрыт 15.12.2025 | — |
| HTML-скрейпинг страниц | — | запрещён ToS всегда | — |
curl -H 'User-Agent: TestApp/0.1 (test@example.com)' \
'https://api.hh.ru/vacancies?text=python&area=2&per_page=5'
# area=2 — Санкт-Петербург; area=1 — Москва
hh.ru (employer или соискатель)dev.hh.ru/admin → «Создать приложение» → название, описание, redirect_uriclient_id, client_secret, опционально app_tokendev.hh.ru/admin/developer_agreementcurl https://api.hh.ru/openapi/openapi.json > hh-openapi.jsonopenapi-generator-cli generate -i hh-openapi.json -g typescript-fetch -o ./client@modelcontextprotocol/sdk~/.claude.json с переменными окружения для токеновgmen1057.