hh.ru Job Scraper
Pricing
from $1.49 / 1,000 results
hh.ru Job Scraper
Instantly extract job listings from HeadHunter (hh.ru), the leading recruitment platform in Russia and the CIS. This blazing-fast scraper delivers detailed vacancy data in seconds. Supercharge your HR analytics and job market research with high-speed, structured data extraction.
Pricing
from $1.49 / 1,000 results
Rating
5.0
(4)
Developer
Shahid Irfan
Maintained by CommunityActor stats
5
Bookmarked
176
Total users
27
Monthly active users
3 hours ago
Last modified
Categories
Share
What does hh.ru Jobs Scraper do?
Extracts job vacancies from hh.ru, the largest job board in Russia, and returns them as a clean structured dataset. Provide a keyword, a region, and optional filters (experience level, work schedule, employment type), and the Actor collects matching vacancies with titles, companies, salaries, locations, schedules, full descriptions, skills, and apply links. You can also start from any public hh.ru search URL or a single vacancy page.
Because the official hh.ru API restricts unauthenticated access, this Actor collects the same publicly available vacancy data from hh.ru's public search JSON endpoint and web pages, so no account or API key is needed to run it.
Why use hh.ru Jobs Scraper?
- Reliable dataset creation - Collect structured vacancy data without manual copy-paste or spreadsheet entry.
- Complete records - Each row can include the full job description, skills, salary details, schedule, and apply link.
- Flexible entry points - Search by keyword and filters, reuse a saved search URL, or scrape a single vacancy.
- Automation-ready output - Export to JSON, CSV, Excel, or XML, or connect results to Google Sheets, webhooks, Make, or Zapier.
- Schedule-friendly - Run hourly, daily, or weekly to keep a vacancy dataset fresh.
- Deduplicated output - Repeats and empty fields are removed automatically.
What data can you extract from hh.ru?
| Field | Description |
|---|---|
title | Vacancy title |
company | Employer name |
location | City and address when available |
salary | Human-readable salary summary |
salary_from / salary_to | Salary range bounds when published |
salary_currency | Currency code such as RUR |
salary_is_gross | Whether salary is shown gross or net |
experience | Required experience level |
employment_type | Full time, part time, project, or similar |
schedule | Work schedule such as full day or remote |
work_format | Remote, office, or hybrid labels |
skills | Key skills listed for the role |
description_text | Plain text job description |
description_html | HTML job description |
date_posted | Publication timestamp |
date_expires | Expiry timestamp when available |
url | Direct vacancy URL |
apply_url | Direct apply link |
source | Source label hh.ru |
scraped_at | Collection timestamp |
How to use hh.ru Jobs Scraper
- Open the Actor on the Apify Store.
- Enter a search keyword such as
python developer. - Choose a region code (
1for Moscow,2for Saint Petersburg,113for all of Russia). - Set optional filters such as experience level or remote work.
- Set the maximum number of jobs to collect.
- Run the Actor and download the dataset or connect it to a workflow.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | - | Start from a specific hh.ru search URL or a single vacancy URL. Overrides the other search fields. |
text | String | No | - | Search keyword such as a role title or skill. |
area | String | No | 1 | Region code. 1 = Moscow, 2 = Saint Petersburg, 113 = all of Russia. |
experience | String | No | - | Experience filter: noExperience, between1And3, between3And6, moreThan6. |
schedule | String | No | - | Schedule filter: remote, fullDay, shift, flexible, flyInFlyOut. |
employment | String | No | - | Employment filter: full, part, project, volunteer, probation. |
results_wanted | Integer | No | 20 | Maximum number of vacancies to collect (1 to 10,000). |
max_pages | Integer | No | 20 | Safety limit for search result pages (1 to 100). |
api_only | Boolean | No | true | Fast path only. When a vacancy detail is unavailable, keeps the summary record and continues. |
include_raw_data | Boolean | No | false | Include the large raw source payload in each item. |
proxyConfiguration | Object | No | Off | Proxy settings for reliable large-volume runs. Residential proxies are recommended. |
Usage Examples
Basic keyword search
Collect the first 50 Python developer vacancies in Moscow:
{"text": "python developer","area": "1","results_wanted": 50}
Remote data analyst jobs across Russia
Collect remote data analyst roles that require 1-3 years of experience:
{"text": "data analyst","area": "113","experience": "between1And3","schedule": "remote","results_wanted": 100,"max_pages": 10}
Start from a saved search URL
Reuse an existing hh.ru search URL with saved filters:
{"startUrl": "https://hh.ru/search/vacancy?area=99&saved_search_id=88196915&no_magic=true&employer_id=3388&experience=between1And3&search_field=description","results_wanted": 25,"max_pages": 5}
Start from a single vacancy URL
Collect one fully detailed vacancy:
{"startUrl": "https://hh.ru/vacancy/132160978","results_wanted": 1}
Larger run with proxy
For large collections, enable a residential proxy:
{"text": "golang","area": "1","results_wanted": 120,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
One vacancy record with the most common fields:
{"vacancy_id": "114811554","title": "SQL-программист / Разработчик баз данных","company": "Аптечная сеть Ваша №1 х Таблетка.ру","employer_id": "3344320","employer_url": "https://hh.ru/employer/3344320","location": "Москва","salary": "from 150000 RUR net","salary_from": 150000,"salary_currency": "RUR","salary_is_gross": false,"experience": "between3And6","schedule": "fullDay","work_format": ["ON_SITE"],"skills": ["SQL", "Python", "PostgreSQL", "MS SQL"],"description_text": "Full plain text vacancy description...","date_posted": "2026-07-17T11:51:56.233+03:00","url": "https://hh.ru/vacancy/114811554","source": "hh.ru","scraped_at": "2026-08-10T07:14:35.150Z"}
Tips for Best Results
- Use focused keywords such as
python developerorproduct managerfor cleaner matches. - Narrow the dataset with
area,experience,schedule, andemploymentfilters. - Start with 20-100 results for a test run, then increase limits for production runs.
- Use
max_pagesas a safety cap so runs stay predictable. - Enable a residential proxy for large collections and scheduled monitoring.
- Some vacancies do not publish every attribute. Only available fields are returned.
- Public pages can change over time. If a field disappears, report it through the Issues tab.
Integrations
- Google Sheets - Export vacancy data for spreadsheet analysis.
- Airtable - Build searchable vacancy databases.
- Looker Studio and BI tools - Create hiring trend dashboards.
- Webhooks - Send run results to downstream systems.
- Make and Zapier - Connect results to no-code automations.
- API - Access datasets programmatically from your own systems.
Export Formats
- JSON, CSV, Excel, XML, and HTML via the Apify dataset download menu.
Frequently Asked Questions
Can I scrape all of Russia instead of one city?
Yes. Set area to 113 for nationwide collection, or leave it empty for all regions.
Does this Actor collect full job descriptions?
Yes. When available, each record includes description_text and description_html, plus skills, salary, and schedule details.
How do I get only remote jobs?
Set schedule to "remote" in the input.
Can I start from a saved hh.ru search URL?
Yes. Provide any public hh.ru search URL in startUrl. It can include saved filters such as employer or experience.
Can I export the data to CSV or Excel?
Yes. Apify datasets can be downloaded in JSON, CSV, Excel, XML, and other supported formats.
Can I run this Actor on a schedule?
Yes. Schedule the Actor in Apify Console to refresh data hourly, daily, weekly, or at another interval.
Why are some fields missing from a record?
Some vacancies do not publish every attribute. Only available, non-empty fields are returned.
Does this Actor use the official hh.ru API?
No. The official hh.ru API restricts unauthenticated access. This Actor collects the same public vacancy data from hh.ru's public search JSON endpoint and web pages, so no account or API key is needed.
Is it legal to scrape hh.ru?
Scraping public web data can be legal, but you are responsible for complying with applicable laws, website terms, and privacy rules.
Related Actors
- Dice Job Scraper - Extract technology job vacancies from Dice.
- Stepstone Job Scraper - Collect job vacancies from StepStone across Europe.
- Remote Job Scraper - Find remote-friendly job listings from multiple boards.
Support
For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.
Legal Notice
This Actor is designed for legitimate data collection from publicly available sources. Users are responsible for using the data responsibly and complying with applicable laws and website terms.