HeadHunter (hh.ru) Scraper: Russia & CIS Jobs

The NanoScrape HH.ru Scraper is an Apify actor that extracts job listings from hh.ru. It returns 73 fields per result including title, location, city, address, description, priced at $5/1k full job, with no API key or monthly subscription required.

HeadHunter hh.ru (General, CIS): Russian job board via the official public REST API (source platform). Covers Russia, Kazakhstan, Uzbekistan, Belarus. Salary gross/net flag, metro stations, IT accreditation badge.

Open on Apify → Read the docs
Pricing
$5.00 / 1,000 full job detail result
Runtime
Cloud (Apify)
Proxy
None
Coverage
RU

What you can scrape — 73 fields per result

FieldTypeExampleGroupFill %
_typestringjobCore100%
idstring138558559Core100%
titlestringМенеджер по развитию бизнеса / Business Development Manager (e-commerce и производство)Core100%
job_urlstringhttps://hh.ru/vacancy/138558559Core100%
source_urlstringhttps://hh.ru/vacancy/138558559Core100%
source_platformstringhh.ruCore100%
company_namestring | nullКосмо КрафтCore100%
company_idstring | null12172706Core100%
company_urlstring | nullhttps://hh.ru/employer/12172706Core100%
company_logo_urlstring | null(populated when data available)Core80%
schedule_idstring | nullfullDayCore100%
experience_level_idstring | nullmoreThan6Core100%
contact_namestring | null(populated when data available)Core—
company_trustedboolean | nulltrueCompany100%
company_categorystring | nullCOMPANYCompany100%
company_websitestring | null(populated when data available)Company60%
company_accredited_itboolean | nullfalseCompany100%
company_ratingstring | null4.6Company100%
company_reviews_countinteger | null7Company100%
company_descriptionstring | null(populated when data available)Company—
company_industrystring | null(populated when data available)Company—
company_open_vacanciesinteger | null(populated when data available)Company—
host_regionstringruLocation100%
locationstringМосква, Кутузовский проспект, 36с3Location100%
countrystringRULocation100%
regionstring | nullРоссияLocation100%
region_codestring | null1Location100%
citystring | nullМоскваLocation100%
addressstring | nullМосква, Кутузовский проспект, 36с3Location80%
descriptionstring | nullО компании и роли Мы — крупная e-commerce компания и крупнейший производитель детских п...Description100%
salary_minnumber | null140000Salary60%
salary_maxnumber | null160000Salary80%
salary_currencystring | nullRUBSalary80%
salary_grossboolean | nullfalseSalary80%
salary_modestring | nullMonthlySalary80%
salary_frequencystring | nullTwice per monthSalary60%
salary_textstring | null140000 - 160000 RUBSalary80%
employment_typestring | nullFull-timeEmployment100%
employmentstring | nullFull-timeEmployment100%
employment_formstring | nullFull-timeEmployment100%
working_hoursarray["8 hours"]Employment100%
civil_law_contractsarray[]Employment—
working_daysarray[]Employment—
working_time_modesarray[]Employment—
accept_labor_contractbooleantrueEmployment100%
night_shiftsbooleanfalseEmployment100%
experience_levelstring | null6+ yearsRequirements100%
key_skillsarray[]Requirements80%
languagesarray[]Requirements—
posted_at_textstring | null2026-10-16T14:44:57.492+03:00Metadata100%
posted_at_datetimestring | null2026-10-16T11:44:57ZMetadata100%
updated_at_datetimestring | null2026-10-16T12:00:38ZMetadata100%
scraped_atstring2026-10-22T04:17:53ZMetadata100%
metro_stationsarray["Кутузовская", "Парк Победы"]Other80%
schedulestring | nullFull-dayOther100%
work_formatsarray["On-site"]Other100%
work_schedule_by_daysarray["5/2"]Other100%
snippetstring | null(populated when data available)Other—
professional_rolesarray[]Other—
industriesarray[]Other—
driver_licensesarray[]Other—
accept_temporarybooleanfalseOther100%
accept_incomplete_resumesbooleanfalseOther100%
is_internshipbooleanfalseOther100%
has_testbooleanfalseOther100%
response_letter_requiredbooleanfalseOther100%
is_archivedbooleanfalseOther100%
detail_statusstring | nullokOther100%
contact_emailsarray[]Other—
contact_phonesarray[]Other—
vacancy_codestring | null(populated when data available)Other—
vacancy_typestring | null(populated when data available)Other—
search_querystring | nullпрограммист in МоскваOther100%

Input example — showcase (full detail)

{
  "searchQueries": [
    "программист",
    "аналитик данных",
    "менеджер по продажам"
  ],
  "hostRegion": "ru",
  "location": "Москва",
  "maxResults": 30,
  "maxResultsPerQuery": 10,
  "includeJobDetails": true,
  "includeCompanyDetails": true,
  "maxConcurrency": 3
}

Output example — real dataset item (PII scrubbed)

{
  "_type": "job",
  "id": "138558559",
  "title": "Менеджер по развитию бизнеса / Business Development Manager (e-commerce и производство)",
  "job_url": "https://hh.ru/vacancy/138558559",
  "source_url": "https://hh.ru/vacancy/138558559",
  "source_platform": "hh.ru",
  "host_region": "ru",
  "company_name": "Космо Крафт",
  "company_id": "12172706",
  "company_url": "https://hh.ru/employer/12172706",
  "company_logo_url": null,
  "company_trusted": true,
  "company_category": "COMPANY",
  "company_website": null,
  "company_accredited_it": false,
  "company_rating": "4.6",
  "company_reviews_count": 7,
  "company_description": null,
  "company_industry": null,
  "company_open_vacancies": null,
  "location": "Москва, Кутузовский проспект, 36с3",
  "country": "RU",
  "region": "Россия",
  "region_code": "1",
  "city": "Москва",
  "address": "Москва, Кутузовский проспект, 36с3",
  "metro_stations": [
    "Кутузовская",
    "Парк Победы"
  ],
  "posted_at_text": "2026-10-16T14:44:57.492+03:00",
  "posted_at_datetime": "2026-10-16T11:44:57Z",
  "updated_at_datetime": "2026-10-16T12:00:38Z",
  "employment_type": "Full-time",
  "schedule": "Full-day",
  "schedule_id": "fullDay",
  "employment": "Full-time",
  "employment_form": "Full-time",
  "experience_level": "6+ years",
  "experience_level_id": "moreThan6",
  "work_formats": [
    "On-site"
  ],
  "work_schedule_by_days": [
    "5/2"
  ],
  "working_hours": [
    "8 hours"
  ],
  "civil_law_contracts": [],
  "salary_min": 140000,
  "salary_max": 160000,
  "salary_currency": "RUB",
  "salary_gross": false,
  "salary_mode": "Monthly",
  "salary_frequency": "Twice per month",
  "salary_text": "140000 - 160000 RUB",
  "description": "О компании и роли\nМы — крупная e-commerce компания и крупнейший производитель детских площадок для частного сектора в СНГ. Сами придумываем и разрабатываем товары, производим их на контрактных фабриках и продаём через Ozon, Wildberries, Яндекс Маркет и другие каналы. В 2025 году выручка компании превысила 600 млн ₽, цель на 2026 год — более 1 млрд ₽.\nСейчас мы ищем менеджера по развитию бизнеса для работы напрямую с собственником компании. Это не продажи и не поиск клиентов. Ваша задача — брать новые бизнес-идеи и сложные проекты и превращать их в работающий результат.\nЗадачи могут быть совершенно разными: запустить с нуля новое направление или офлайн-магазин, собрать под него команду, найти ключевого сотрудника, подрядчиков или поставщиков, внедрить новую систему или полностью разобраться в незнакомом для компании рынке.\nЗдесь можно получить уникальный опыт развития бизнеса изнутри: самостоятельно запускать проекты, собирать команды, участвовать в ключевых решениях и видеть результат своей работы. Большая свобода действий, прямой контакт с собственником и минимум бюрократии.\nРабота из нашего современного офиса в Москве — 5 минут от м. Кутузовская и 10 минут от м. Парк Победы. Лофт-пространство, молодой коллектив и комфортная рабочая атмосфера.\nОбязанности:\nЗапускать новые бизнес-направления и проекты с идеи до готового результата.\nИсследовать новые рынки и возможности, считать экономику и готовить конкретный план запуска.\nСамостоятельно находить всё необходимое для реализации проекта: сотрудников, подрядчиков, поставщиков, помещения, оборудование и другие ресурсы\nСобирать команды под новые направления и организовывать их работу.\nВести переговоры, сравнивать предложения и добиваться выгодных условий для компании.\nКоординировать реализацию проектов: контролировать сроки, бюджет, качество и конечный результат.\nРешать нестандартные бизнес-задачи собственника, в том числе в совершенно новых для компании областях.\nТребования:  Опыт в развитии бизнеса, запуске новых направлений или самостоятельном ведении сложных проектов.\nСильные аналитические способности: умение быстро погружаться в незнакомую тему, разбираться в цифрах и принимать решения.\nПредпринимательский подход — способность видеть не только задачу, но и самостоятельно находить лучший способ её решить.\nВысокая самостоятельность: не ждать подробного ТЗ и пошаговых инструкций.\nУмение находить нужных людей, подрядчиков, поставщиков и договариваться с ними.\nУверенное владение Excel / Google Таблицами и современными рабочими инструментами.\nВысокая скорость работы, системность и способность одновременно вести несколько направлений.\nИнициативность и ответственность за конечный результат, а не только за выполнение своей части работы.\nСпособность быстро учиться и разбираться в новых областях — для нас это важнее опыта в какой-то одной отрасли.\nУсловия:  Зарплата 140 000 – 160 000 ₽ на руки + премии за успешно реализованные проекты. Чем больше ответственности и результатов — тем выше доход.\nРабота напрямую с собственником компании и участие в развитии бизнеса с оборотом 600+ млн ₽ и целью более 1 млрд ₽.\nПроекты, которые можно реально построить с нуля: новые направления, офлайн-бизнес, команды, процессы, системы — и увидеть конечный результат своей работы.\nБольшая свобода действий и минимум бюрократии: есть задача и цель, способ реализации во многом определяете вы сами.\nВозможность получить за несколько лет опыт сразу в разных областях бизнеса, а не годами заниматься одним направлением.\nРабота в современном офисе в Москве — 5 минут пешком от м. Кутузовская или 10 минут от м. Парк Победы. Лофт-пространство, молодой коллектив, вокруг кафе, спортзалы и сервисы.\nГрафик 5/2, работа из офиса. Оформление по ТК РФ, выплаты всегда вовремя.\nСильная перспектива роста: успешный человек на этой позиции сможет брать на себя всё более крупные направления и со временем вырасти в одного из ключевых управленцев компании.",
  "snippet": null,
  "key_skills": [],
  "professional_roles": [],
  "industries": [],
  "languages": [],
  "driver_licenses": [],
  "working_days": [],
  "working_time_modes": [],
  "accept_temporary": false,
  "accept_labor_contract": true,
  "accept_incomplete_resumes": false,
  "night_shifts": false,
  "is_internship": false,
  "has_test": false,
  "response_letter_required": false,
  "is_archived": false,
  "detail_status": "ok",
  "contact_name": null,
  "contact_emails": [],
  "contact_phones": [],
  "vacancy_code": null,
  "vacancy_type": null,
  "search_query": "программист in Москва",
  "scraped_at": "2026-10-22T04:17:53Z"
}

Cost math

Priced at $0.0050 per full job detail result. 10 full job detail results ≈ $0.05, 100 ≈ $0.50, 1,000 ≈ $5.00. The first runs land inside Apify's $5/mo free-tier credit — pay only for what you extract, no monthly subscription.

About this actor

Extract job listings from **HeadHunter** -- Russia's #1 job board and the largest employment platform in the CIS region. Powered by the **official, MIT-licensed HeadHunter public REST API** (api.hh.ru). No browser required, no anti-bot hurdles. Full input schema, output examples, and pricing available on the Apify actor page.

Related tutorials

Part of the NanoScrape jobs stack. See How to Scrape Every Job Online for the full playbook covering 86 job scrapers across 29 countries.

Integrations

Run this actor directly on Apify (no code)

Click Open on Apify above to run hh-ru-scraper in your browser - no code, no install. In the Apify console you get:

Get your Apify API token

To run this actor from your own code you need an Apify API token. Get one in about a minute:

  1. Sign up for a free Apify account (Google, GitHub, or email).
  2. Go to Settings → Integrations → API tokens.
  3. Click Create a new API token. Copy it and keep it secret.

Free tier: Apify credits your account with $5 of platform usage every month, no credit card required. Enough to test any actor meaningfully. How many results that covers depends on the actor's price per result.

Call from code

Run this actor from any language via the Apify REST API. Replace YOUR_TOKEN with your API token and adapt the input JSON to your needs.

curl -X POST "https://api.apify.com/v2/acts/santamaria-automations~hh-ru-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
// npm install apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('santamaria-automations/hh-ru-scraper').call({});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
# pip install apify-client
from apify_client import ApifyClient

client = ApifyClient('YOUR_TOKEN')
run = client.actor('santamaria-automations/hh-ru-scraper').call(run_input={})
items = list(client.dataset(run['defaultDatasetId']).iterate_items())
print(items)
// dotnet add package Apify.Client
using Apify.Client;

var client = new ApifyClient("YOUR_TOKEN");
var run = await client.Actor("santamaria-automations/hh-ru-scraper").CallAsync(new { });
var items = await client.Dataset(run.DefaultDatasetId).ListItemsAsync();
// Maven: com.apify:apify-client
import com.apify.client.ApifyClient;

ApifyClient client = new ApifyClient("YOUR_TOKEN");
ActorRun run = client.actor("santamaria-automations/hh-ru-scraper").call(Map.of());
List<Map<String,Object>> items = client.dataset(run.getDefaultDatasetId()).listItems();

Use with AI agents (MCP)

This actor is available on the Apify MCP server, so you can drive it from any MCP-compatible AI client - Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or a custom agent - without writing any code.

https://mcp.apify.com?tools=santamaria-automations/hh-ru-scraper

Example prompt once connected:

"Use <code>hh-ru-scraper</code> to run a scrape on my target list and give me the results as a table."

Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically via add-actor.

Use with no-code platforms

Trigger this actor from your favorite automation tool. Every platform below can call the Apify API in a few clicks - no code required.

  1. Add the n8n Apify node (installed by default on n8n Cloud; on self-hosted install @apify/n8n-nodes-apify).
  2. Set Actor to santamaria-automations/hh-ru-scraper.
  3. Choose operation Run Actor and get dataset, paste your input JSON, and connect a downstream node (Google Sheets, Postgres, webhook, ...).
  1. Create a new Zap with any trigger.
  2. Add a Webhooks by Zapier POST action to https://api.apify.com/v2/acts/santamaria-automations~hh-ru-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN.
  3. Body: your input JSON. Content-Type: application/json.
  1. Create a new scenario.
  2. Add an HTTP module: URL https://api.apify.com/v2/acts/santamaria-automations~hh-ru-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN, method POST, body raw JSON.
  3. Parse the response with a JSON module to iterate items downstream.
  1. Create a new workflow.
  2. Add an HTTP Request step: POST to https://api.apify.com/v2/acts/santamaria-automations~hh-ru-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN.
  3. Access steps.http.$return_value in subsequent steps.
  1. Install the API Connector plugin.
  2. Add a new API: POST https://api.apify.com/v2/acts/santamaria-automations~hh-ru-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN, body type JSON.
  3. Initialize the call with your input, then reference the response array in workflow actions.

FAQ

How much does the hh-ru-scraper cost?

$5.00 / 1,000 full job detail result, billed per result on Apify. Apify's $5/month free tier covers the first runs. No monthly subscription — you only pay for what you extract.

What fields does it return?

73 fields per result. Full field catalog is listed in the 'What you can scrape' table above — includes core identifiers, descriptive text, dates, and any category-specific data.

Is scraping this site legal?

Scraping publicly available data is generally permitted in most jurisdictions, but GDPR applies to any personal data you collect. Review your local rules and consult a lawyer for commercial use.

Do I need an API key from the source platform?

No. This actor reads public pages over plain HTTP, without a proxy. No API key, no OAuth, no rate-limit management on your side.

How fresh is the data?

Every run pulls live data at execution time. Set up a schedule (daily/hourly/weekly cron) in the Apify console to keep your dataset current automatically.

Related actors in this category

Open on Apify → Read the docs