HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings avatar

HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings

Pricing

from $0.98 / 1,000 job postings

Go to Apify Store
HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings

HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings

Scrape job vacancies from HH.ru (HeadHunter), Russia's largest job board. Search by keyword, city, experience, salary range, and remote flag. Returns title, salary, employer name, rating, review count, trusted-employer flag, viewer count, key skills, and full descriptions. No API key needed.

Pricing

from $0.98 / 1,000 job postings

Rating

5.0

(1)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

33

Total users

16

Monthly active users

5 hours ago

Last modified

Share

🇷🇺 HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings

Two ways into the Russian job market. HH.ru covers every industry across Russia. Habr Career narrows to tech roles with its own salary benchmark survey.
RUSSIA JOBS & TECH TALENT   •  HH.ru general hiring and Habr Career's tech-specific listings
 HH.ru Jobs
➤ You are here
 Habr Career
Tech-only roles, salary benchmarks
More than one job board? Russia Jobs Feed covers the main ones in one run.
Ищете вакансии на нескольких сайтах? Russia Jobs Feed собирает главные из них за один запуск.
Russia's largest job board, with the employer signals recruiters check first
Search HH.ru by keyword, city, salary range, and experience level. Get numeric salary fields, employer ratings, trust badges, and live viewer counts as clean JSON. No login or API key required.
💰 Structured salary
Numeric min, max, and currency per vacancy, no manual parsing
⭐ Employer trust signals
Rating, review count, and trusted-employer badge on every listing
👀 Live viewer counts
See how many people are viewing each vacancy right now
🔍 Flexible filters
Keyword, city, salary range, experience level, and remote flag

🔍 What does HH.ru Jobs Scraper do?

HeadHunter, hh.ru (ХедХантер), is Russia's largest job board, with millions of active vacancies across every industry and region. This actor searches the platform and returns clean, structured data for every matching listing.

By default, each vacancy includes: title, canonical URL, salary text and numeric min/max fields, experience requirement, employer name and logo, employer rating and review count, office address, nearest metro station, remote flag, trusted-employer badge, and a live viewer count showing how many people are looking at that vacancy right now.

Enable Fetch full details to also get the complete vacancy description and a key skills array per listing. Useful for skills-gap analysis or building searchable job databases.

Turn on Find employer emails to add a public contact email for each company, taken from the company's own website when it publishes one. Each company is looked up once per run, and every vacancy from that company carries the same email. It is optional and off by default.

👥 Who uses it?

HR analysts tracking compensation: "We benchmark Python developer salaries across Moscow, Saint Petersburg, and Novosibirsk every quarter. Copying salary text by hand used to take a full afternoon. Now we get salaryFrom, salaryTo, and salaryCurrency as numbers, ready for a pivot table."

Staffing agencies building pipelines: "We monitor 50 IT employers on HH.ru every week. Employer rating, review count, and the trusted-employer flag let us filter out weak clients before our recruiters ever pick up the phone."

Job board builders: "We aggregate Russian tech listings for a niche job board. Title, URL, key skills, remote flag, and salary arrive as clean JSON from one scheduled run, with nothing left to reformat."

🚀 How it works

STEP 1
Set your search
Enter keywords, pick a city, and add salary range, experience, or remote filters.
STEP 2
Run in the cloud
The actor reads live HH.ru pages in seconds. No login or API key needed.
STEP 3
Download your data
Export as JSON, CSV, or Excel, or connect to Sheets and BigQuery.

⚙️ Input

FieldTypeRequiredDescription
keywordsstringNoJob title, skill, or keyword to search (e.g. Python, менеджер проекта).
citystringNoCity name in Russian or English (e.g. Москва, Moscow, Санкт-Петербург). Resolved automatically. Overridden by areaId.
areaIdintegerNoHH.ru area ID. Default: 113 (all Russia). 1 = Moscow, 2 = Saint Petersburg.
salaryFromintegerNoMinimum salary filter in the vacancy's posted currency.
salaryTointegerNoMaximum salary filter.
experienceenumNoRequired work experience: noExperience, between1And3, between3And6, or moreThan6.
employmentarrayNoEmployment type(s): full, part, project, volunteer, or probation.
onlyRemotebooleanNoReturn only remote-schedule listings when checked.
orderByenumNoSort order: relevance (default), publication_time, salary_desc, or salary_asc.
maxItemsintegerNoMaximum number of vacancies to return. Default: 25.
fetchDetailsbooleanNoOpen each vacancy page to extract full description and key skills. Default: off.
proxyConfigurationproxyNoApify proxy settings. Datacenter proxy is the default and sufficient for most runs.
enrichEmailsbooleanNoFind a public contact email on each company's own website. Each company is looked up once per run. Choose 512 MB of memory or more when this is on. Default: off.
monitorModebooleanNoReturn only vacancies that are new or changed since the last run with the same monitor name. Default: off.
monitorNamestringNoA short name that identifies this monitor's memory (e.g. python-moscow). Reuse it on each run or schedule. Required when monitorMode is on.

📧 Employer emails (optional)

Turn on Find employer emails to get a way to contact the companies behind the vacancies.

  • 🏢 For each company, the actor visits the company's own website and looks for the contact email it publishes there, such as info@, hr@ or a careers address.
  • ✅ When a company lists its website on its HH.ru page, that exact website is used. Otherwise the actor finds the company's official site and only keeps an email that was found on it.
  • 🔁 Each company is looked up once per run. All of its vacancies get the same email, website and status.
  • 🧑‍💼 Individual entrepreneurs (ИП) only get a general company address, never a personal one.
  • 🚫 When a company's website shows no email, the vacancy is marked not_found. The actor never guesses or builds an address.
  • 💳 You pay for an email only when one is found, and only once per company per run.
  • 🧠 Email lookups make the run slower, because each company's website is visited. For runs with this on, choose 512 MB of memory or more so every company gets looked up.

Not every company publishes an email on its website, so some vacancies will come back without one.

🔁 Monitoring mode (optional)

Watching a search over time? Turn on Monitoring mode and give it a monitor name.

  • 🆕 Each run returns only the vacancies that are new or have changed since the last run that used the same monitor name. Unchanged vacancies are left out.
  • 🏷️ Every returned vacancy is tagged changeType (new or updated), with firstSeen and lastSeen dates.
  • 🗂️ Reuse the same monitor name on a schedule (e.g. daily) to get a clean feed of what moved, without re-processing everything each time.
  • 🔕 The first run with a new name returns everything as new; later runs stay quiet until something changes.

📤 Data table

Each row is one HH.ru vacancy.

FieldTypeDescription
vacancyIdstringUnique HH.ru vacancy ID.
titlestringVacancy title as shown on HH.ru.
urlstringCanonical link to the vacancy page (tracking parameters removed).
salaryFromnumberMinimum salary as a number. Null when not disclosed by the employer.
salaryTonumberMaximum salary as a number. Null when not disclosed.
salaryCurrencystringSalary currency code: RUR, USD, EUR, or KZT.
salaryGrossbooleanTrue = gross (before tax), false = net. Null when not specified.
salaryPeriodstringWhat the figure is paid for: month, shift, hour, day, week, or year. Left out when HH.ru does not say.
salaryTextstringRaw salary text as displayed on HH.ru (e.g. от 150 000 ₽).
experiencestringRequired experience label (e.g. Опыт 3-6 лет).
employerNamestringEmployer company name.
employerLogoUrlstringURL of the employer's logo image.
employerRatingnumberEmployer rating from HH.ru reviews (e.g. 4.2).
employerReviewCountnumberTotal number of HH.ru reviews for this employer.
employerIdstringThe company's HH.ru ID.
employerUrlstringLink to the company's page on HH.ru.
employerWebsitestringThe company's own website. Shown when it comes from the company's HH.ru page, or when an email was found on it. Requires enrichEmails: true.
employerEmailstringPublic contact email found on the company's website. Left out when none was found. Requires enrichEmails: true.
employerEmailKindstringgeneric for a shared mailbox (info@, hr@, office@) or named for a person's address. Requires enrichEmails: true.
employerEmailDomainstringThe domain part of the email. Requires enrichEmails: true.
employerEmailSourceUrlstringThe page of the company's website where the email was found. Requires enrichEmails: true.
emailEnrichmentStatusstringfound, not_found (the website shows no email), failed (the website could not be read) or skipped (not looked up in this run). Requires enrichEmails: true.
addressstringOffice city or full address as shown on the listing.
metroStationstringNearest metro station name (Russian cities).
isRemotebooleanTrue if the vacancy allows remote work.
isTrustedEmployerbooleanTrue if HH.ru has awarded the employer a trusted badge.
viewerCountnumberNumber of people currently viewing this vacancy.
descriptionstringFull vacancy description text. Requires fetchDetails: true.
keySkillsarrayRequired skills list (e.g. ["Python", "PostgreSQL", "FastAPI"]). Requires fetchDetails: true.
postedAtstringISO 8601 date the vacancy was published. Left out when HH.ru does not expose it.
validThroughstringISO 8601 date the posting stops accepting applications. Requires fetchDetails: true.
scrapedAtstringISO 8601 timestamp of when the row was scraped.
changeTypestringnew or updated. Only present with monitorMode: true.
firstSeenstringISO 8601 date the monitor first saw this vacancy. Only present with monitorMode: true.
lastSeenstringISO 8601 date of the monitor run that returned this row. Only present with monitorMode: true.

💰 Pricing

This actor charges per vacancy returned. Empty runs cost nothing. There are no monthly subscriptions or seat fees. If you turn on Find employer emails, each company email found is billed once per run. Companies with no email found cost nothing extra.

⭐ Enjoying HH.ru Jobs Scraper?

⭐ ⭐ ⭐ ⭐ ⭐
Turned HH.ru's salary text into clean numeric fields instead of parsing it by hand?
A 5-star rating takes 10 seconds and helps other HR analysts and staffing agencies find it. Your feedback also tells us what to build next.
★  Rate this Actor on Apify

❓ FAQ

Does this actor require an HH.ru account or API key? No. It reads the public HH.ru website directly. No registration, no developer app, and no API key are needed to run it.

What cities and regions does it support? All of Russia and CIS regions covered by HH.ru. Enter a city name in Russian or English (e.g. Москва, Moscow, Екатеринбург, Yekaterinburg). For the full area list, pass an areaId directly. The reference is at api.hh.ru/areas/113.

Как скачать вакансии с HH.ru в Excel или Google Sheets? (How do I export HH.ru vacancies to Excel or Google Sheets?) Enter your keyword and city in the input form, run the actor, and click Export in the Apify Console. Choose Excel, CSV, or Google Sheets. Each vacancy becomes one row, with salary split into separate numeric columns for easy filtering.

Why do some vacancies show no salary data? HH.ru lets employers hide their salary offer. When it is not disclosed, all salary fields return null. The actor never fills in guesses or placeholder values.

Can I get the employer's email address? Yes. Turn on Find employer emails and the actor adds a public contact email from each company's own website when the company publishes one there. Each company is looked up once per run, and you pay only when an email is found.

Why do some companies have no email? Many companies do not publish an email on their website, or only offer a contact form. Those vacancies are marked not_found. The actor never guesses an address or fills in a placeholder.

Why is my run slower with emails on? Each company's website has to be visited to find its email. Companies are looked up several at a time, and each one only once per run. Choose 512 MB of memory or more for these runs so every company gets looked up.

🔗 Other actors