hh.ru Job Scraper avatar

hh.ru Job Scraper

Pricing

from $1.49 / 1,000 results

Go to Apify Store
hh.ru Job Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

5

Bookmarked

176

Total users

27

Monthly active users

3 hours ago

Last modified

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?

FieldDescription
titleVacancy title
companyEmployer name
locationCity and address when available
salaryHuman-readable salary summary
salary_from / salary_toSalary range bounds when published
salary_currencyCurrency code such as RUR
salary_is_grossWhether salary is shown gross or net
experienceRequired experience level
employment_typeFull time, part time, project, or similar
scheduleWork schedule such as full day or remote
work_formatRemote, office, or hybrid labels
skillsKey skills listed for the role
description_textPlain text job description
description_htmlHTML job description
date_postedPublication timestamp
date_expiresExpiry timestamp when available
urlDirect vacancy URL
apply_urlDirect apply link
sourceSource label hh.ru
scraped_atCollection timestamp

How to use hh.ru Jobs Scraper

  1. Open the Actor on the Apify Store.
  2. Enter a search keyword such as python developer.
  3. Choose a region code (1 for Moscow, 2 for Saint Petersburg, 113 for all of Russia).
  4. Set optional filters such as experience level or remote work.
  5. Set the maximum number of jobs to collect.
  6. Run the Actor and download the dataset or connect it to a workflow.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNo-Start from a specific hh.ru search URL or a single vacancy URL. Overrides the other search fields.
textStringNo-Search keyword such as a role title or skill.
areaStringNo1Region code. 1 = Moscow, 2 = Saint Petersburg, 113 = all of Russia.
experienceStringNo-Experience filter: noExperience, between1And3, between3And6, moreThan6.
scheduleStringNo-Schedule filter: remote, fullDay, shift, flexible, flyInFlyOut.
employmentStringNo-Employment filter: full, part, project, volunteer, probation.
results_wantedIntegerNo20Maximum number of vacancies to collect (1 to 10,000).
max_pagesIntegerNo20Safety limit for search result pages (1 to 100).
api_onlyBooleanNotrueFast path only. When a vacancy detail is unavailable, keeps the summary record and continues.
include_raw_dataBooleanNofalseInclude the large raw source payload in each item.
proxyConfigurationObjectNoOffProxy settings for reliable large-volume runs. Residential proxies are recommended.

Usage Examples

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 developer or product manager for cleaner matches.
  • Narrow the dataset with area, experience, schedule, and employment filters.
  • Start with 20-100 results for a test run, then increase limits for production runs.
  • Use max_pages as 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.

Scraping public web data can be legal, but you are responsible for complying with applicable laws, website terms, and privacy rules.

Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

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.