Russia Jobs Feed Вакансии: hh.ru, Habr Career, Rabota.ru & More avatar

Russia Jobs Feed Вакансии: hh.ru, Habr Career, Rabota.ru & More

Pricing

from $1.12 / 1,000 job postings

Go to Apify Store
Russia Jobs Feed Вакансии: hh.ru, Habr Career, Rabota.ru & More

Russia Jobs Feed Вакансии: hh.ru, Habr Career, Rabota.ru & More

Russian job vacancies (вакансии) from hh.ru, Habr Career (Хабр Карьера), Rabota.ru, Работа России (Trudvsem) and Zarplata.ru in one feed. Same fields from every board: RUB pay with the gross or net flag, 85 regions, metro, duplicate groups, and new, updated or closed jobs on each scheduled run.

Pricing

from $1.12 / 1,000 job postings

Rating

0.0

(0)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

🇷🇺 Russia Jobs Feed Вакансии: hh.ru, Habr Career, Rabota.ru & More

Five Russian job boards. One clean feed.
Search hh.ru, Хабр Карьера, Работа.ру, Работа России and Зарплата.ру in one run. Every job comes back in the same format, with rouble pay, the employer's own gross or net flag, region and metro, and what changed since your last run.
🗂️ One format
Same fields from every board, so you sort and compare without cleanup.
💰 Gross or net, stated
До вычета налогов or на руки, only when the employer says so.
🔔 What changed
New, updated and closed jobs between scheduled runs.
🧬 One row per job
The same job on two boards shares a group id, or keep just one copy.

Recruiters and analysts who follow the Russian job market usually open one board at a time and then line up pay, places and titles by hand. This feed reads hh.ru (HeadHunter), Хабр Карьера (Habr Career), Работа.ру (Rabota.ru), Работа России (the government job portal) and Зарплата.ру (Zarplata.ru) in a single run. It applies the same filters to all of them and returns one table you can sort, export or schedule.

🔎 What does Russia Jobs Feed do?

You give it keywords, cities or regions, and filters. It searches every board you select, turns what each board publishes into the same fields, and marks which rows are new since your last run. Russian and English keywords both work. Nothing is guessed: if a board does not publish a value, the field is left out.

BoardStrongest forGood to know
hh.ru HeadHunterThe largest general board: every industry, every regionPay with the employer's gross or net flag, metro, work format, schedule, employer rating and reviews. Shows at most 2,000 jobs per search, so very wide searches are best narrowed by keyword or region. On by default.
Habr Career Хабр КарьераIT jobs: developers, QA, analysts, DevOps, designersSkills, seniority (Junior to Lead) and specialisation on every job. Few jobs publish pay; Habr's own pay estimate is kept apart and labelled as an estimate. On by default.
Rabota.ru Работа.руMass-market and blue-collar jobs: drivers, warehouse, retail, salesPay on most jobs, often with a gross or net flag. Searches one city at a time (Moscow, Saint Petersburg, Moscow and Leningrad regions and 14 large cities).
Работа России TrudvsemThe government portal, strong in the regions and the public sectorPay on almost every job. The slowest board: each page of results takes several seconds.
Zarplata.ru Зарплата.руExtra regional listingsMost of its jobs are the same hh.ru postings. With hh.ru also selected, only the jobs posted on Zarplata.ru itself are delivered, so nothing comes twice.

hh.ru and Habr Career are selected by default. Add Rabota.ru, Работа России and Zarplata.ru under Job boards when you need them.

🎯 Who uses it

  • I am a recruiter sourcing Python and Java developers in Moscow and Kazan, comparing what employers offer on hh.ru and Habr Career in one table.
  • I am a compensation analyst benchmarking rouble pay by region and role, and I need to know which figures are before tax and which are take-home.
  • I am a labour-market researcher tracking how many jobs open and close each week, by region and federal district, with scheduled runs.
  • I run an HR team at a company with Russian offices and watch what local competitors advertise for the roles we hire.
  • I build job data pipelines and want one stable row format and a group id that stops one posting from showing up twice.

🚀 How it works

STEP 1
Pick boards and a search
Choose boards, keywords, cities and filters, or paste a board link.
STEP 2
Get one table
Every row has the same fields, whichever board it came from.
STEP 3
Schedule it
Name a monitor and each run flags new, updated and closed jobs.

Start small. The default search (hh.ru and Habr Career, Python, Moscow, 25 rows) finishes in seconds. Raise the limits once the rows look right.

Places

Enter cities or regions in Russian or English: Moscow, Санкт-Петербург, Казань, Татарстан, Свердловская область, Подмосковье. All 85 federal subjects and about 170 cities are known. Every row gets its region in Russian and English, the region code and the federal district. Enter Remote for remote jobs, or Russia (or leave the list empty) for the whole country. An unknown place is reported with suggestions and never widened to the whole country.

Pay you can compare

  • The original salary wording is kept, for example "от 150 000 ₽ за месяц на руки".
  • salaryMin and salaryMax keep the published figures in their own currency and period.
  • salaryGrossOrNet is gross (до вычета налогов) or net (на руки), only when the board states it. hh.ru and Rabota.ru state it on most paid jobs.
  • salaryMinMonthlyRub and salaryMaxMonthlyRub give one monthly rouble figure for comparison. Yearly pay is divided by 12. Hourly and shift pay is never converted by guesswork; where hh.ru publishes its own monthly figure for it, that figure is used.
  • A salary without a stated period is read as monthly, the usual practice on Russian boards, and the row says so (salaryPeriodAssumed).
  • Habr Career's own pay estimate is kept in platformData.habrSalaryEstimate and labelled as an estimate. It never fills the salary fields or the pay filters.

Filters that work on every board

  • Pay: minimum and maximum monthly roubles, or only jobs that show pay.
  • Job type and work format: full time, part time, project work, internship, temporary, rotation (вахта) or volunteer, and remote or hybrid jobs.
  • Experience and education: the four hh.ru experience bands (no experience, 1 to 3, 3 to 6, more than 6 years), and "at least" an education level.
  • Freshness and words: posted within N days, words to exclude, and company names to keep.
  • Unknown values: a job that does not state the value you filter on is dropped, so a filter never lets unchecked rows through. Habr Career does not state experience, and Rabota.ru states it only on the job page (turn on full descriptions), so an experience filter mostly returns hh.ru and Работа России rows.

Same job on several boards

Rows that share a title, employer and region get the same clusterId. Legal forms such as ООО, АО or ПАО and quotation marks are ignored when names are compared. Turn on uniqueOnly to keep one row per job, the one with the most information. A Cyrillic company name and its Latin spelling are not treated as the same employer, so some repeats stay separate.

Monitoring over time

Give monitorScope a name and reuse it on a schedule. Each row is marked NEW, UPDATED, UNCHANGED or REOPENED. A job is marked CLOSED only after two complete scans in a row did not find it, and a scan that stopped at your row limit never counts as complete. Choose changesOnly to receive just the rows that changed. On Работа России a monitor run with a city or region reads only the jobs changed since the previous run, which keeps it fast. If a run reaches its time limit it returns the rows it already has, marks them PARTIAL and leaves your saved history untouched.

Moving from our single-board hh.ru or Habr Career scrapers? Their saved monitor history does not carry over, so the first run here marks every job as new.

Privacy

Recruiter names, phone numbers and e-mail addresses are never collected from any board, also not in the optional source record. When an hh.ru employer is a private person rather than a company, the employer name is left out.

⚙️ Input

FieldTypeRequiredDescription
sourcesarray of enumNoBoards to read: hh-ru, habr-career, rabota-ru, trudvsem, zarplata-ru. Default hh.ru and Habr Career.
startUrlsarray of URLsNoBoard links to read as they are: searches, specialisation and skill pages, or single jobs.
keywordsarray of stringsNoJob titles or skills in Russian or English. Empty browses the newest jobs.
expandKeywordsbooleanNoAlso search Russian titles for common English ones (developer: разработчик, программист).
citiesarray of stringsNoCities or regions in Russian or English, Remote, or Russia for the whole country.
employmentKindarray of enumNoFull time, part time, project, internship, temporary, rotation, volunteer.
remoteOnlybooleanNoOnly remote or hybrid jobs.
experienceenumNoAny, no experience, 1 to 3, 3 to 6, or more than 6 years.
educationenumNoMinimum education: secondary, vocational, higher, master, PhD.
minMonthlySalaryRubintegerNoMinimum monthly pay in roubles.
maxMonthlySalaryRubintegerNoMaximum monthly pay in roubles.
onlyDisclosedSalarybooleanNoDrop jobs without published pay.
postedWithinDaysintegerNoOnly jobs posted or updated within this many days.
companyNamesarray of stringsNoKeep only these employers (part of the name is enough).
excludeKeywordsarray of stringsNoDrop jobs that mention any of these words.
includeDescriptionbooleanNoAdd the description, key skills and listing end date (one extra page per job on most boards).
includeRecruiterSignalsbooleanNoAdd viewer and response counts where the board shows them.
includeSourceFieldsbooleanNoAttach the board's own record, without personal contacts.
convertToUsdbooleanNoAdd monthly pay in US dollars at the current exchange rate.
monitorScopestringNoName for tracking new, updated and closed jobs across runs.
outputModeenumNoAll rows, only new and changed rows, or compact rows.
uniqueOnlybooleanNoKeep one row per job across boards.
includeClosedbooleanNoAdd a short row for each job that closed (monitoring).
maxTotalRowsintegerNoRows for the whole run, shared fairly between boards. Default 25.
maxItemsPerSourceintegerNoRows per board. Default 25.
maxPagesPerSourceintegerNoResult pages per search. Default 5.
proxyConfigurationobjectNoOptional proxy for every board. Not needed for normal runs.
boardOptionsobjectNoPer-board settings, for example the hh.ru sort order or the Habr Career seniority level.

🧪 Example inputs

Copy one into the Input tab (JSON view) and change the values.

Recruiter shortlist: Python and Java developers with published pay

{
"sources": ["hh-ru", "habr-career"],
"keywords": ["Python developer", "Java developer"],
"expandKeywords": true,
"cities": ["Moscow", "Kazan"],
"minMonthlySalaryRub": 200000,
"onlyDisclosedSalary": true,
"postedWithinDays": 14,
"uniqueOnly": true,
"maxTotalRows": 100
}

Pay benchmark: drivers across all five boards

{
"sources": ["hh-ru", "habr-career", "rabota-ru", "trudvsem", "zarplata-ru"],
"keywords": ["водитель"],
"cities": ["Moscow", "Saint Petersburg", "Kazan"],
"employmentKind": ["fulltime"],
"maxTotalRows": 300,
"maxItemsPerSource": 100
}

Weekly market watch: what opened, changed and closed in Moscow

{
"keywords": ["data analyst"],
"cities": ["Moscow"],
"monitorScope": "moscow-data-analysts",
"outputMode": "changesOnly",
"includeClosed": true,
"maxTotalRows": 300
}

Paste a board link instead of filling the form

{
"startUrls": [{ "url": "https://hh.ru/search/vacancy?text=python&area=1" }],
"includeDescription": true,
"maxTotalRows": 50
}

📤 Output

One row per job. A real row from hh.ru (description shortened):

{
"listingKey": "hh-ru:138679153",
"source": "hh-ru",
"sourceJobId": "138679153",
"title": "Преподаватель программирования Python",
"companyName": "АНО ДО Московская школа программистов",
"companyRating": 4.1,
"companyReviewCount": 44,
"trustedEmployer": true,
"region": "Москва",
"regionEn": "Moscow",
"regionCode": "77",
"federalDistrict": "Central",
"city": "Москва",
"district": "Щукино",
"address": "Москва, улица Берзарина, 16",
"metroStation": "Октябрьское поле",
"isRemote": true,
"remoteType": "partial",
"salaryGrossOrNet": "gross",
"salaryCurrency": "RUB",
"salaryMax": 130000,
"salaryPeriod": "month",
"salaryMaxMonthlyRub": 130000,
"experienceRaw": "Опыт 1-3 года",
"experienceMinYears": 1,
"experienceMaxYears": 3,
"employmentTypeRaw": "Частичная занятость",
"employmentTypeEn": "Part-time",
"employmentKind": ["parttime"],
"schedule": "По выходным, Свободный график, Другой график, 2 ч, 4 ч, 6 ч, 8 ч",
"skills": ["Python", "Преподавание", "Математика", "Программирование", "C++"],
"description": "Нам более 25 лет, мы учим детей программированию. Наши выпускники получают работу в ведущих ИТ-компаниях мира...",
"postedAt": "2026-10-26T15:42:15.511Z",
"expiresAt": "2026-11-19T15:42:15.511Z",
"listingUrl": "https://hh.ru/vacancy/138679153",
"recruiterSignals": { "viewers": 2, "responses": 225 },
"lifecycleStatus": "NEW"
}

Each run also writes RUN_SUMMARY (rows per board, limits, monitor state) and RUN_HEALTH (per-board status and plain-language notes) to the run's key-value store.

📋 Data table

FieldTypeDescription
listingKeystringBoard id plus the board's job id. Use it to join runs.
sourcestringBoard the row came from.
titlestringJob title as published.
companyNamestringEmployer as published.
companyRating, companyReviewCountnumberEmployer rating out of 5 and number of reviews, where the board shows them.
trustedEmployerbooleanThe board marks the employer as verified or accredited.
region, regionEn, regionCode, federalDistrictstringFederal subject in Russian and English, its code and the federal district.
city, cityEn, district, address, metroStationstringPlace details as published.
isRemote, remoteTypeboolean, stringRemote, hybrid (partial) or on-site (none).
salaryRawstringSalary wording as published.
salaryMin, salaryMax, salaryCurrency, salaryPeriodnumber, stringPublished pay figures, currency and period.
salaryGrossOrNetstringgross (before tax) or net (take-home), when the board states it.
salaryMinMonthlyRub, salaryMaxMonthlyRubnumberMonthly pay in roubles for comparison.
salaryMinUsd, salaryMaxUsdnumberMonthly pay in US dollars (USD salaries, or with convertToUsd).
experienceRaw, experienceMinYears, experienceMaxYearsstring, numberRequired experience as published and in years.
educationRaw, educationEnstringRequired education in Russian and English.
employmentTypeRaw, employmentTypeEn, employmentKindstring, arrayEmployment type in Russian, English and as categories.
schedulestringWork schedule as published.
seniorityRaw, senioritystring, arraySeniority level, where the board states it.
skills, tagsarrayKey skills and labels.
descriptionstringFull description (with includeDescription).
postedAt, updatedAt, expiresAtstringPublication, last change and end date.
listingUrlstringLink to the job.
clusterId, clusterSize, isCanonicalstring, number, booleanSame-job group across boards.
lifecycleStatus, lifecycleChangedFields, firstSeenAt, lastSeenAtstring, arrayChange tracking between runs.
platformDataobjectEvery other board-specific value, for example the Habr pay estimate or the Работа России company tax number.

💰 Pricing

You pay per job row delivered. Runs that find nothing cost nothing, and there is no subscription. Free plan runs are limited to 25 rows per run, 3 runs per day, and a short wait between runs.

⭐ Enjoying Russia Jobs Feed?

⭐ ⭐ ⭐ ⭐ ⭐
Five boards in one table saves an afternoon of copying and lining up pay by hand.
A 5-star rating takes 10 seconds and helps other recruiters and analysts find it. Your feedback also tells us which board to add next.
★  Rate this Actor on Apify

❓ FAQ

Как выгрузить вакансии с hh.ru и Хабр Карьеры в одну таблицу? Select hh.ru and Habr Career, enter your keywords and cities, and run. Every job comes back in the same format, so you can export both boards as one spreadsheet. Schedule the run to get new jobs every day.

Парсер вакансий с зарплатой: does it show pay before or after tax? Yes, when the employer says. salaryGrossOrNet is gross for "до вычета налогов" and net for "на руки". hh.ru and Rabota.ru state it on most paid jobs. When a board does not say, the field is left empty rather than guessed.

Do I need an hh.ru account, an API key or cookies? No. The Actor reads public job listings only. No login, key or cookie is needed.

Why do I get fewer rows than my limit? Filters drop jobs that do not state the value you filter on, and some searches simply have fewer jobs. RUN_HEALTH explains per board what happened. Zarplata.ru with hh.ru selected can return few rows, because most of its jobs are hh.ru postings that are delivered once from hh.ru.

Can I get Habr Career salary statistics? This feed returns job rows. For Habr Career's salary survey by seniority, use our Habr Career Scraper, which has a separate salary benchmarks dataset.

🔗 Other actors

  • HH.ru Jobs Scraper ↗ - hh.ru vacancies with salaries, skills and employer ratings.
  • Habr Career Scraper ↗ - Habr Career IT vacancies plus the Habr salary survey by seniority.
  • China Jobs Feed ↗ - the main Chinese job boards in one run, with the same monitoring.
  • Japan Jobs Feed ↗ - Japanese job boards in one run, with yen pay and prefecture labels.
  • Israel Jobs Feed ↗ - Israeli job boards in one run, with change tracking.