Habr Career Scraper: Вакансии Хабр Карьера, Навыки и Зарплаты avatar

Habr Career Scraper: Вакансии Хабр Карьера, Навыки и Зарплаты

Pricing

from $1.05 / 1,000 job postings

Go to Apify Store
Habr Career Scraper: Вакансии Хабр Карьера, Навыки и Зарплаты

Habr Career Scraper: Вакансии Хабр Карьера, Навыки и Зарплаты

Scrape Habr Career (Хабр Карьера) tech job vacancies with structured skill tags, specialization, and full description, plus real, large-sample Russian IT salary benchmarks by seniority level from Habr's own public salary survey. Includes a new-postings monitor for a saved search. No login required.

Pricing

from $1.05 / 1,000 job postings

Rating

0.0

(0)

Developer

GetAScraper

GetAScraper

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

9 days ago

Last modified

Share

💼 Habr Career Scraper: Вакансии Хабр Карьера, Навыки и Зарплаты

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
Every industry, all of Russia
 Habr Career
➤ You are here
More than one job board? Russia Jobs Feed covers the main ones in one run.
Ищете вакансии на нескольких сайтах? Russia Jobs Feed собирает главные из них за один запуск.
Real Russian IT salary data, not just job postings.
Get tech vacancies from Хабр Карьера (Habr Career) with skill tags and specialization. Then check them against Habr's own salary survey: real pay by seniority level, from more than 41,000 responses.
💰 Real salary benchmarks
Min, p25, median, p75, max, and sample size per seniority level, straight from Habr's own survey.
🏷️ Structured skill tags
Skills come back as named tags you can filter on, not one long keyword string.
🎯 Level-matched pay
Each vacancy's seniority (Junior to Lead) matches a benchmark row, so you can compare any offer to the market.
🔔 New-posting alerts
Run it on a schedule and get only the vacancies you haven't seen before.

🔍 What does Habr Career Scraper do?

Habr Career (Хабр Карьера) is Russia's leading job board for tech roles: developers, QA, analysts, DevOps, and IT management. This Actor searches its public listings and returns clean, structured data for every matching vacancy. No account or login is required.

Each vacancy comes back with its title, employer name, logo and rating, salary when disclosed, location, remote flag, employment type, seniority level, full description, posting date, and expiry date. Skills and specialization arrive as named tags, not a loose keyword string.

Turn on salary benchmarks and you also get a second dataset from Habr's own public compensation survey. It has the minimum, 25th percentile, median, 75th percentile, and maximum monthly pay for each seniority level, from Junior to Lead. Every row shows how many survey responses it is based on, and which half-year the survey covers.

A vacancy's seniority level uses the same names as the benchmark rows. A Middle vacancy can be compared with the Middle benchmark straight away, with no extra matching work.

👥 Who uses it?

Tech recruiters tired of HH.ru's noise: "HH.ru mixes every industry together. We only place developers and DevOps engineers, so we run this against Habr Career instead and get an IT-only feed with skill tags we can filter on directly."

HR and comp teams benchmarking offers: "Before we send an offer, we check the Salary Benchmarks dataset for that seniority level. It tells us in seconds whether our number is competitive or we're about to lose a candidate."

Candidates sanity-checking a job offer: "I pulled the Middle-level salary range before my final interview. Knowing the real median gave me a number to negotiate from instead of guessing."

Existing HH.ru Jobs Scraper users: "We already run HH.ru Jobs Scraper for general hiring. This actor is the tech-specific complement: same shape of data, plus salary benchmarks HH.ru doesn't have."

🚀 How to use it

STEP 1
Set your search
Enter keywords, a skill, a specialization, or a city. Salary benchmarks stay on by default.
STEP 2
Run in the cloud
The Actor reads Habr Career's public pages for you. No login, no API key.
STEP 3
Download your data
Export vacancies and salary benchmarks as JSON, CSV, or Excel, or connect to Sheets and BigQuery.

Want a standing watch instead of a one-off pull? Turn on Alert on new listings and give it a State Name. Every scheduled run after that returns only vacancies posted since the last check.

⚙️ Input

FieldTypeRequiredDescription
KeywordsstringNoFree-text search, for example python or backend. Combines with City.
Vacancy URLsarray of URLsNoSpecific vacancy links or numeric IDs to collect directly instead of searching.
Division (Specialization)enumNoOne specialization to browse, for example development/backend. Takes priority over Skills, Keywords and City.
SkillsarrayNoA skill tag to filter by, for example docker or kubernetes. Only the first value is used.
CityenumNoRussian city to filter by. Combines with Keywords.
Include salary benchmarksbooleanNoAdds Habr's salary survey as a second dataset. On by default.
Maximum vacanciesintegerNoMost vacancies to return in one run. Default 20.
Alert on new listingsbooleanNoReturns only vacancies not seen in an earlier run with the same State name. Off by default.
State namestringNoNames the saved search that the new-listings check belongs to. Default default.
Reset statebooleanNoClears the saved new-listings history for this State name before the run. Off by default.
Proxy configurationproxyNoApify proxy settings. The default works for almost every run.

📤 Output

Every vacancy becomes one row. This is a real result (description shortened here):

{
"vacancyId": "1000166249",
"title": "Pentester",
"url": "https://career.habr.com/vacancies/1000166249",
"salaryFrom": 170000,
"salaryTo": 200000,
"salaryCurrency": "RUR",
"employerName": "СПЕЦПО",
"isTrustedEmployer": false,
"address": "Россия, Санкт-Петербург",
"isRemote": false,
"employmentType": "Полный рабочий день",
"qualification": "Middle",
"skills": [
{ "title": "OWASP", "slug": "owasp" },
{ "title": "Burp Suite", "slug": "burp_suite" },
{ "title": "Linux", "slug": "linux" }
],
"division": { "title": "Пентестер", "slug": "infosec/pentester" },
"description": "Pentester(Middle)Red team ...",
"datePosted": "2026-10-09",
"validThrough": "2026-11-08",
"scrapedAt": "2026-10-16T20:47:19.912Z"
}

The salary benchmarks dataset has one row per seniority level. This is the Middle row:

{
"level": "Middle",
"title": "По Middle IT-специалистам",
"min": 77500,
"p25": 108333,
"median": 166666,
"p75": 233333,
"max": 310485,
"sampleSize": 18400,
"currency": "RUB",
"asOfPeriod": "2-е пол. 2026",
"scrapedAt": "2026-10-16T20:47:22.467Z"
}

Download results as JSON, CSV, Excel or HTML. The Output tab has four ready-made views: Vacancies, Skills & Specialization, Employer Directory and Posting Lifecycle.

📊 Data table

This actor produces two datasets: Vacancies (the default output) and Salary Benchmarks (when Include Salary Benchmarks is on).

Vacancies

FieldTypeDescription
vacancyIdstringUnique Habr Career vacancy ID.
titlestringVacancy title.
urlstringLink to the vacancy page.
salaryFromnumberMinimum disclosed salary. Omitted when not disclosed.
salaryTonumberMaximum disclosed salary. Omitted when not disclosed.
salaryCurrencystringSalary currency code as Habr shows it. RUR means Russian rubles.
employerNamestringEmployer company name.
employerLogoUrlstringURL of the employer's logo image.
employerRatingnumberEmployer star rating from Habr's own company reviews.
isTrustedEmployerbooleanTrue when Habr marks the employer as accredited.
addressstringVacancy location.
isRemotebooleanTrue when the vacancy is remote-friendly.
employmentTypestringEmployment type as shown on Habr (e.g. full-time).
qualificationstringSeniority level (e.g. Junior, Middle, Senior, Lead). Matches the Salary Benchmarks level field.
skillsarrayStructured skill tags, each with a name and canonical slug.
divisionobjectPrimary specialization, with a name and slug matching the Salary Benchmarks taxonomy.
descriptionstringFull vacancy description as published, with Habr's formatting.
datePostedstringDate the vacancy was first published.
validThroughstringDate the vacancy listing expires.
scrapedAtstringDate and time the row was collected (UTC).

Salary Benchmarks

FieldTypeDescription
levelstringSeniority level: All, Intern, Junior, Middle, Senior, or Lead.
titlestringHabr's own description of this breakdown.
minnumberLowest monthly pay in the sample, in rubles.
p25number25th percentile monthly pay.
mediannumberMedian monthly pay.
p75number75th percentile monthly pay.
maxnumberMaximum monthly pay in the sample.
sampleSizenumberReal number of survey responses this row is computed from.
currencystringAlways RUB. Figures are monthly, before tax.
asOfPeriodstringThe most recent period Habr's survey reports, so you know how fresh the numbers are.
scrapedAtstringDate and time this snapshot was taken (UTC).

💰 Pricing

You pay per vacancy returned. Salary benchmark rows are included at no extra charge. Empty runs cost nothing, and there are no monthly subscriptions or seat fees. Set Maximum vacancies to keep any run within your budget.

⭐ Enjoying Habr Career Scraper?

⭐ ⭐ ⭐ ⭐ ⭐
If the salary benchmarks helped you make a real hiring or negotiation decision, we'd love to hear it.
A 5-star rating takes 10 seconds and helps other recruiters and HR teams find it. Your feedback also tells us what to build next.
★  Rate this Actor on Apify

❓ FAQ

Do I need a Habr Career account or API key?

No. The Actor reads the public Habr Career website. No registration, login or key is needed.

Как узнать реальную зарплату разработчика на Хабр Карьере?

Turn on Include salary benchmarks. The Actor adds a second dataset with the real minimum, median and maximum monthly pay for each seniority level, taken from Habr's own public salary survey. The numbers are in rubles.

Why do some vacancies show no salary?

Habr lets employers hide their salary offer, and many do. When it is not disclosed, the salary fields are left out of that row instead of showing a guess or a zero. The salary benchmarks dataset is the better source for typical pay.

Is the salary data broken down by specialization?

No. The benchmarks are by seniority level: Intern, Junior, Middle, Senior, Lead, and all levels together. Each vacancy carries a qualification value with the same level names, so you can compare a vacancy with its benchmark row. Each vacancy also has its own specialization (division) for filtering.

Does the salary benchmarks dataset reset on every run?

No. It keeps growing, and each row has its own scrapedAt date. Sort or filter by that date to get the latest figures, or compare snapshots to see whether pay has moved.

Can I combine a keyword search with a specialization filter?

Habr Career itself applies only one kind of filter at a time. Division comes first, then Skills, then Keywords and City. The run log shows which filters were used, so you always know what ran.

How many vacancies can I collect in one run?

The default is 20. Runs have a time limit, so very large pulls (roughly over 100 vacancies) can stop early and return what was collected. For bigger lists, run several narrower searches, for example one per specialization or city.

How do I get only new vacancies?

Turn on Alert on new listings and keep the same State name. Each scheduled run then returns only vacancies posted since the last check.

🛟 Support

Found a bug or need an extra field? Open an issue on the Issues tab of this Actor and it will be reviewed. Custom versions and larger data pulls are available on request.

🔗 Other actors