hh.ru Scraper - HeadHunter Jobs, Salaries & Skills avatar

hh.ru Scraper - HeadHunter Jobs, Salaries & Skills

Pricing

from $1.75 / 1,000 results

Go to Apify Store
hh.ru Scraper - HeadHunter Jobs, Salaries & Skills

hh.ru Scraper - HeadHunter Jobs, Salaries & Skills

Scrape job vacancies from hh.ru (HeadHunter), the #1 job board in Russia & CIS: title, company, salary, city, work format, experience, key skills, application counts and full description. Export to JSON, CSV or Excel.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

hh.ru Scraper πŸ‡·πŸ‡Ί

Extract job vacancies from hh.ru (HeadHunter) β€” the #1 job board in Russia & the CIS β€” into clean, structured data. Search by keyword, region or filters and export thousands of jobs with salary, company, city, work format, required experience, key skills, application counts, geolocation and the full job description. Built for recruiters, job aggregators, salary benchmarking, market research and talent analytics.

Actor Market Salary Key skills Output Pagination Remote filter No code Maintained


🎯 What does hh.ru Scraper do?

HeadHunter (hh.ru) is the largest employment marketplace in Russia and across the CIS β€” including hh.kz (Kazakhstan) and hh.uz (Uzbekistan) β€” with hundreds of thousands of active vacancies in every industry and region. This actor turns any hh.ru search into a structured dataset you can download or feed into your own tools.

Give it a search URL (or just a keyword) and it will:

  • πŸ”Ž Open the hh.ru results page and read every vacancy on it
  • πŸ“„ Automatically paginate through all result pages until it reaches your limit
  • πŸ’° Capture structured salary β€” from / to / currency / gross-net / period
  • 🧠 Extract key skills and the full description (optional detail mode)
  • πŸ“Š Include application counts β€” a unique signal of how competitive a role is
  • 🌍 Flag remote / hybrid / on-site and add metro station & geo-coordinates
  • 🧹 Return clean, deduplicated, structured records β€” no HTML, no clutter
  • ⬇️ Export to JSON, CSV, Excel, HTML or via API in one click

No login, no browser extensions, no manual copy-paste. Point it at a search and get a spreadsheet.


✨ Key features

FeatureDescription
Keyword or URL inputPaste an hh.ru / hh.kz / hh.uz search URL, or just type keywords like python, marketing, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€.
Structured salarySalary from, to, currency, gross/net flag and period β€” ready for benchmarking.
Key skillsThe role's tagged skills (e.g. Java, Spring, SQL) β€” perfect for demand analysis.
Application countsHow many people have already applied β€” a competition/demand signal you won't find elsewhere.
Full descriptionOptional detail mode adds the complete job description and public contacts.
Remote filterToggle Only remote jobs to keep just remote-friendly roles.
Geo & metroCity, full address, nearest metro station and latitude/longitude.
Experience & work formatRequired experience level, employment type and remote/hybrid/on-site format.
Automatic paginationWalks through all result pages up to your maxItems limit.
Deduplicated outputEach vacancy appears once, identified by its unique hh.ru ID.
Clean exportsJSON, CSV, Excel, HTML table, RSS or JSON API.

πŸ“₯ Input

The actor accepts a simple, no-code input form. You can drive it two ways:

Option A β€” by keyword (easiest)

{
"keywords": ["python", "data analyst"],
"area": "1",
"maxItems": 200
}

area is an optional hh.ru region ID (e.g. 1 = Moscow, 2 = Saint Petersburg, 113 = all Russia, 40 = Kazakhstan). Leave it empty to search everywhere.

Option B β€” by search URL (most control)

Configure any filters you like on hh.ru (region, salary, experience, work format, schedule…), copy the URL from your browser, and paste it in:

{
"startUrls": [
{ "url": "https://hh.ru/search/vacancy?text=java&area=1&salary=200000&only_with_salary=true" }
],
"includeDescription": true,
"onlyRemote": true,
"maxItems": 500
}

Input parameters

FieldTypeDescription
startUrlsarrayhh.ru / hh.kz / hh.uz results-page URLs. Configure your filters on the site, then paste the URL.
keywordsarrayJob keywords to search. Used when no startUrls are given.
areastringOptional region ID to combine with keywords.
includeDescriptionbooleanAlso fetch each detail page for full description, key skills and contacts. Default false.
onlyRemotebooleanKeep only remote-friendly vacancies. Default false.
maxItemsintegerMaximum number of vacancies to collect. Default 200.
proxyConfigurationobjectProxy settings. A proxy is recommended for reliable results.

πŸ“€ Output

Each vacancy is returned as a clean JSON object:

{
"id": 133213936,
"url": "https://hh.ru/vacancy/133213936",
"title": "Backend Team Lead (Java)",
"company": "BANK URALSIB",
"companyId": 89,
"companyUrl": "https://hh.ru/employer/89",
"salaryFrom": 300000,
"salaryTo": 424400,
"salaryCurrency": "RUR",
"salaryGross": false,
"salaryPeriod": "MONTH",
"city": "Moscow",
"address": "Moscow, Efremova, 8",
"metro": ["Frunzenskaya"],
"latitude": 55.727462,
"longitude": 37.58022,
"workSchedule": "remote",
"workFormats": ["REMOTE", "HYBRID"],
"experience": "6+ years",
"employment": "FULL",
"responsesCount": 1035,
"onlineUsers": 14,
"publishedAt": "2026-08-13T20:15:23.203+03:00",
"description": "We are looking for a backend team lead…",
"keySkills": ["Java", "Spring Framework", "REST", "SQL", "Spring Boot"],
"contactName": null,
"contactEmail": null,
"contactPhones": null
}

Output fields

FieldTypeDescription
idnumberUnique hh.ru vacancy ID.
urlstringDirect link to the vacancy.
titlestringJob title.
company / companyId / companyUrlEmployer name, ID and profile link.
salaryFrom / salaryTonumberSalary range bounds (null when not stated).
salaryCurrencystringCurrency code (RUR, USD, EUR, KZT…).
salaryGrossbooleanWhether the salary is gross (before tax).
salaryPeriodstringSalary period (e.g. MONTH).
city / addressstringLocation city and full address.
metroarrayNearest metro station(s), when available.
latitude / longitudenumberOffice geo-coordinates, when available.
workSchedulestringWork schedule (remote, full day…).
workFormatsarrayWork format tags (REMOTE, HYBRID, ON_SITE).
experiencestringRequired experience (No experience, 1-3 years, 3-6 years, 6+ years).
employmentstringEmployment type (FULL, PART…).
responsesCountnumberNumber of applications already received.
onlineUsersnumberUsers currently viewing the vacancy.
publishedAtstringPublish date/time (ISO 8601).
descriptionstringFull job description (when includeDescription is enabled).
keySkillsarrayTagged key skills (when includeDescription is enabled).
contactName / contactEmail / contactPhonesPublic recruiter contacts (when shown and enabled).

You can download the dataset as JSON, CSV, Excel, HTML, RSS or XML, or fetch it programmatically through the Apify API.


πŸš€ How to use hh.ru Scraper (step by step)

  1. Click Try for free / Start.
  2. Type a keyword (e.g. python) and an optional region ID β€” or paste an hh.ru search URL with your filters.
  3. (Optional) Enable Include full description & key skills and/or Only remote jobs.
  4. Set maxItems to how many vacancies you want.
  5. Click Save & Start.
  6. When the run finishes, open the Dataset tab and Export to your preferred format β€” or grab it via API.

That's it. No code required.


πŸ’‘ Use cases

  • Salary benchmarking β€” Aggregate structured salary ranges by role, region, experience and skill to build compensation datasets.
  • Recruitment & sourcing β€” Monitor who is hiring for which roles across Russia and the CIS, and reach out directly.
  • Skills-demand analytics β€” Quantify which key skills are most requested per role or region over time.
  • Job boards & aggregators β€” Feed fresh CIS vacancies into your own portal or newsletter.
  • Competitive intelligence β€” Track a competitor's open roles (and how many applicants they attract) to infer growth and hiring priorities.
  • Market research β€” Measure demand by region, experience level, remote-work share and application volume.
  • HR & talent teams β€” Benchmark your own postings and salaries against the live market.

πŸ“ˆ Why the application count matters

Unlike a plain job list, this actor also returns how many people have already applied to each vacancy (responsesCount) and how many are viewing it right now (onlineUsers). That's a direct signal of demand and competition β€” invaluable for sourcing strategy, salary negotiation and market analysis.


⏱️ How many jobs can I collect?

As many as the search returns (hh.ru shows up to ~2,000 results per search). Set maxItems to control the volume, and split large sweeps by region or keyword across multiple runs for the freshest, most complete coverage.


πŸ”Œ Integrations & automation

Because this runs on Apify, you can:

  • πŸ“… Schedule runs (hourly, daily, weekly) to keep a live feed of new vacancies.
  • πŸ”— Push results to Google Sheets, Airtable, Slack, Zapier, Make, or any webhook.
  • 🧩 Call it from your backend with the Apify API and SDKs (JavaScript / Python).
  • πŸ”” Use webhooks to trigger downstream workflows the moment a run completes.

Call via API (example)

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["python"],
"area": "1",
"maxItems": 200
}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('YOUR_ACTOR_ID').call({
keywords: ['java'],
includeDescription: true,
maxItems: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

❓ FAQ

Do I need an hh.ru account or API key? No. Just provide a keyword or a search URL.

Does it include salary? Yes β€” when the employer states it. Salary is returned as structured from / to / currency / gross-net / period. Many listings hide salary; those fields are simply null.

Can I get the full job description and key skills? Yes. Enable Include full description & key skills and each vacancy's detail page is fetched for the complete description, skill tags and any public contacts.

Does it work with hh.kz (Kazakhstan) and hh.uz (Uzbekistan)? Yes. Paste a search URL from those regional sites and it works the same way.

Can I filter by region, salary, experience or work format? Yes. Apply any filters on hh.ru itself, then paste the resulting URL into startUrls. All of the site's filters are supported this way. You can also pass a keywords + area combination.

Can I get only remote jobs? Yes β€” enable Only remote jobs.

Are results deduplicated? Yes. Each vacancy is uniquely identified and appears only once per run.

What formats can I export? JSON, CSV, Excel, HTML, RSS and XML β€” via the dashboard or the API.

How do I keep data fresh? Schedule the actor to run on the interval you need; each run returns the current live listings.


πŸ“Œ Tips for best results

  • Start narrow, then widen. Test with a single keyword and a small maxItems, confirm the fields look right, then scale up.
  • Use search URLs for precision. hh.ru's own filters (region, salary, experience, work format) give you exactly the segment you want β€” just paste the URL.
  • Enable descriptions only when you need them. The list already includes salary, skills-context and metadata; turn on detail mode when you want the full text and key skills.
  • Split large sweeps. For nationwide coverage, run several searches (by region or role) in parallel for speed and completeness.
  • Schedule for freshness. The job market moves daily; a scheduled run keeps your dataset current.

This actor is intended for lawful data collection such as market research, analytics and recruitment. You are responsible for how you use the collected data. Only collect publicly available information, respect the target website's Terms of Service and robots.txt, and comply with all applicable laws and regulations, including data-protection rules such as the GDPR when processing any personal data. Do not use the data for spam or any unlawful purpose. This actor is an independent tool and is not affiliated with, endorsed by, or connected to HeadHunter (hh.ru) or its subsidiaries. All trademarks belong to their respective owners.


πŸ›Ÿ Support

Questions, feature requests or an issue with the data? Open an issue on the actor's page β€” feedback is welcome and helps improve the tool.


⭐ If this actor saves you time, please leave a review β€” it really helps!