hh.ru Job Scraper avatar

hh.ru Job Scraper

Pricing

Pay per usage

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

Pay per usage

Rating

5.0

(1)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

1

Bookmarked

15

Total users

7

Monthly active users

7 days ago

Last modified

Share

hh.ru Jobs Scraper

Extract comprehensive job vacancy data from hh.ru with fast, automated collection. Gather job titles, salary information, skills, schedule details, and full descriptions in one structured dataset. Built for recruiting teams, labor market research, and job trend monitoring.

Features

  • Complete Vacancy Records - Collects rich job details for every vacancy, not just list-level summaries.
  • Powerful Search Filters - Search by keywords, region, experience level, schedule, and employment type.
  • Clean Structured Output - Returns normalized records with empty and null values removed.
  • Pagination at Scale - Continues through result pages until your target result count is reached.
  • Ready for Automation - Works well in scheduled workflows and downstream data pipelines.

Use Cases

Recruitment Intelligence

Track open roles, salary bands, and required skills across employers to improve hiring strategy.

Labor Market Analysis

Build datasets for demand trends, role distribution, and regional hiring activity.

Competitive Monitoring

Monitor how similar companies position roles, compensation, and requirements over time.

Job Data Products

Feed job boards, analytics dashboards, and reporting workflows with regularly refreshed vacancy data.


Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringNo-Start from a specific hh.ru vacancy search URL.
textStringNo-Search query such as a role title or keyword.
areaStringNo"1"Region code (for example 1 for Moscow, 113 for all 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_wantedIntegerNo100Maximum number of vacancies to collect.
max_pagesIntegerNo20Maximum number of result pages to process.
proxyConfigurationObjectNoResidential proxy presetProxy settings for stable large-volume runs.

Output Data

Each dataset item includes job-relevant fields when available:

FieldTypeDescription
vacancy_idStringVacancy identifier.
titleStringVacancy title.
companyStringEmployer name.
employer_idStringEmployer identifier.
employer_urlStringEmployer profile URL.
locationStringVacancy location.
addressObjectStructured address details (when available).
salaryStringHuman-readable salary string.
salary_fromNumberSalary lower bound.
salary_toNumberSalary upper bound.
salary_currencyStringSalary currency code.
salary_is_grossBooleanSalary tax mode indicator.
experienceStringRequired experience level.
employment_typeStringEmployment type label.
employment_formStringEmployment form label.
scheduleStringWork schedule label.
work_formatArrayWork format values.
working_hoursArrayWorking hour options.
work_schedule_daysArraySchedule-by-days values.
working_time_intervalsArrayShift interval values.
working_time_modesArrayTime mode values.
skillsArrayKey skills.
professional_rolesArrayProfessional role labels.
specializationsArraySpecialization labels.
languagesArrayLanguage requirements.
description_htmlStringVacancy description in HTML.
description_textStringPlain text description.
requirement_snippetStringShort requirements snippet (if present).
responsibility_snippetStringShort responsibilities snippet (if present).
date_postedStringVacancy publication timestamp.
date_createdStringVacancy creation timestamp.
date_first_createdStringInitial creation timestamp.
urlStringVacancy URL.
apply_urlStringDirect apply URL.
premiumBooleanPremium listing indicator.
archivedBooleanArchived listing indicator.
has_testBooleanTest assignment indicator.
response_letter_requiredBooleanCover letter requirement indicator.
accept_temporaryBooleanTemporary work acceptance.
accept_incomplete_resumesBooleanIncomplete resume acceptance.
internshipBooleanInternship flag.
night_shiftsBooleanNight shifts flag.
sourceStringData source label.
scraped_atStringCollection timestamp.
api_dataObjectFull cleaned vacancy payload with empty fields removed.

Usage Examples

{
"text": "python developer",
"area": "1",
"results_wanted": 50
}

Remote Jobs With Experience Filter

{
"text": "data analyst",
"area": "113",
"experience": "between1And3",
"schedule": "remote",
"results_wanted": 100,
"max_pages": 10
}

Start From a Custom Search URL

{
"startUrl": "https://hh.ru/search/vacancy?text=frontend&area=2",
"results_wanted": 80
}

Proxy Configuration Example

{
"text": "golang",
"area": "1",
"results_wanted": 120,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Sample Output

{
"vacancy_id": "125985240",
"title": "Python Developer",
"company": "Example Company",
"employer_id": "5756414",
"location": "Moscow",
"salary": "from 200000 to 300000 RUR net",
"salary_from": 200000,
"salary_to": 300000,
"salary_currency": "RUR",
"experience": "От 1 года до 3 лет",
"employment_type": "Полная занятость",
"schedule": "Удаленная работа",
"skills": ["Python", "FastAPI", "PostgreSQL"],
"description_text": "Full plain text vacancy description...",
"date_posted": "2026-02-16T10:15:00+0300",
"url": "https://hh.ru/vacancy/125985240",
"apply_url": "https://hh.ru/applicant/vacancy_response?vacancyId=125985240",
"source": "hh.ru API",
"scraped_at": "2026-02-16T10:30:00.000Z"
}

Tips for Best Results

Search Strategy

  • Use focused role keywords (for example, python developer, product manager).
  • Narrow by area when you need region-specific insights.
  • Add experience, schedule, and employment filters to reduce noise.

Collection Size

  • Start with results_wanted between 20 and 100 for test runs.
  • Increase limits gradually for production collections.
  • Use max_pages as a safety cap for predictable run size.

Reliability

  • Use residential proxies for larger runs.
  • Run on schedules to keep your dataset fresh.
  • Monitor run output metrics (totalResults, durationSeconds, averageSpeed).

Integrations

Connect your dataset with:

  • Google Sheets - Share and analyze data quickly.
  • Airtable - Build searchable vacancy databases.
  • Looker Studio / BI tools - Create hiring trend dashboards.
  • Webhooks - Push records into custom pipelines.
  • Make - Automate no-code workflows.
  • Zapier - Trigger downstream actions.

Export Formats

  • JSON - Development and API workflows.
  • CSV - Spreadsheet analysis.
  • Excel - Business reporting.
  • XML - System integration workflows.

Frequently Asked Questions

Does this actor collect full job details automatically?

Yes. Every collected vacancy is enriched with full available details and stored in a clean record.

Are empty and null fields included in output?

No. Output records are cleaned so empty and null values are removed.

Can I scrape all Russia instead of one city?

Yes. Use area: "113" for nationwide collection.

How can I get remote-only jobs?

Set schedule to "remote" in the input.

What if some fields are missing in a vacancy?

Some vacancies do not publish every attribute. Only available non-empty fields are returned.

Can I run this actor on a schedule?

Yes. You can schedule runs in Apify to keep job data continuously updated.


Support

For issues or feature requests, contact support through the Apify Console.

Resources


This actor is intended for legitimate data collection and analysis. You are responsible for complying with website terms, platform policies, and applicable laws in your jurisdiction.