Discover/hh API
live

hh APIhh.ru

Search hh.ru job vacancies by salary, region, experience, and industry. Retrieve full job details including skills, employer info, and HTML descriptions.

Endpoint health
verified 6d ago
search_vacancies
get_vacancy
2/2 passing latest checkself-healing
Endpoints
2
Updated
21d ago

What is the hh API?

The hh.ru API provides 2 endpoints to search and retrieve job vacancies from HeadHunter, Russia's largest job board. The search_vacancies endpoint accepts filters for region, salary, experience level, employment type, and industry, returning paginated result sets. The get_vacancy endpoint returns full vacancy details including key skills, employer data, and the complete HTML job description across 15+ fields per record.

Try it
Region ID (1=Moscow, 2=St Petersburg). Multiple values supported.
Page number (0-indexed)
Search keywords (e.g. 'python developer', 'data engineer')
Labels: with_address, accept_handicapped, accept_kids, not_from_agency, accredited_it, low_performance
Minimum salary amount
Salary currency code: RUR, USD, EUR, KZT, UAH, AZN, UZS, GEL, KGS, BYR
Industry ID (numeric)
Sort order: relevance, publication_time, salary_desc, salary_asc
Results per page
Work schedule: fullDay, shift, flexible, remote, flyInFlyOut
Education level: not_required_or_not_specified, secondary, special_secondary, higher, bachelor, master, candidate, doctor
Employment type: full, part, project, volunteer, probation
Required experience: noExperience, between1And3, between3And6, moreThan6
Employer/company ID
Where to search: name, company_name, description
Publication period in days: 1, 3, 7, 30
Enable text snippets in results (true/false)
Show only vacancies with salary specified (true/false)
Professional role ID (numeric)
api.parse.bot/scraper/3ccf546c-1803-406c-902c-9e3df9fe872e/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/3ccf546c-1803-406c-902c-9e3df9fe872e/search_vacancies?area=1&text=python+developer&currency=RUR&per_page=20&schedule=remote&employment=full&experience=between1And3' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace hh-ru-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.hh_ru_vacancy_search_api import HeadHunter, Experience, Schedule, Sort

hh = HeadHunter()

# Search for remote Python developer vacancies requiring 1-3 years experience
for vacancy in hh.vacancysummaries.search(
    text="python developer",
    experience=Experience.BETWEEN_1_AND_3,
    schedule=Schedule.REMOTE,
    order_by=Sort.PUBLICATION_TIME,
):
    print(vacancy.name, vacancy.address, vacancy.salary)

    # Navigate to detailed vacancy info
    detail = vacancy.details()
    print(detail.description, detail.key_skills, detail.hiring_formats)
    break
All endpoints · 2 totalmissing one? ·

Full-text search over hh.ru vacancies with filters for region, experience, employment type, schedule, salary, and more. Returns paginated results. Each vacancy includes id, title, salary, employer, address, experience, and labels. Pagination is page-based (0-indexed). The total matched count is in `found`; `pages` gives total pages available.

Input
ParamTypeDescription
areastringRegion ID (1=Moscow, 2=St Petersburg). Multiple values supported.
pageintegerPage number (0-indexed)
textstringSearch keywords (e.g. 'python developer', 'data engineer')
labelstringLabels: with_address, accept_handicapped, accept_kids, not_from_agency, accredited_it, low_performance
salaryintegerMinimum salary amount
currencystringSalary currency code: RUR, USD, EUR, KZT, UAH, AZN, UZS, GEL, KGS, BYR
industrystringIndustry ID (numeric)
order_bystringSort order: relevance, publication_time, salary_desc, salary_asc
per_pageintegerResults per page
schedulestringWork schedule: fullDay, shift, flexible, remote, flyInFlyOut
educationstringEducation level: not_required_or_not_specified, secondary, special_secondary, higher, bachelor, master, candidate, doctor
employmentstringEmployment type: full, part, project, volunteer, probation
experiencestringRequired experience: noExperience, between1And3, between3And6, moreThan6
employer_idstringEmployer/company ID
search_fieldstringWhere to search: name, company_name, description
search_periodintegerPublication period in days: 1, 3, 7, 30
enable_snippetsstringEnable text snippets in results (true/false)
only_with_salarystringShow only vacancies with salary specified (true/false)
professional_rolestringProfessional role ID (numeric)
Response
{
  "type": "object",
  "fields": {
    "page": "integer - current page number",
    "found": "integer - total vacancies matching filters",
    "pages": "integer - total pages available",
    "per_page": "integer - results per page",
    "vacancies": "array of vacancy summary objects with id, name, url, salary, experience, experience_id, employer, address, labels"
  },
  "sample": {
    "data": {
      "page": 0,
      "found": 3210,
      "pages": 3,
      "per_page": 5,
      "vacancies": [
        {
          "id": "133820538",
          "url": "https://hh.ru/vacancy/133820538",
          "name": "Middle Backend PHP Developer",
          "labels": [
            "Можно удалённо"
          ],
          "salary": null,
          "address": "Санкт-Петербург",
          "employer": {
            "id": "11315084",
            "name": "ОООИзигейт"
          },
          "experience": "Опыт 3-6 лет",
          "experience_id": "between3And6"
        }
      ]
    },
    "status": "success"
  }
}

About the hh API

Search Vacancies

The search_vacancies endpoint runs a full-text search across hh.ru listings and returns paginated summaries. The text parameter accepts free-form keywords such as python developer or data engineer. Results can be narrowed by area (region ID, where 1 = Moscow and 2 = St. Petersburg, with multiple values supported), salary (minimum amount with a paired currency code from RUR, USD, EUR, KZT, and others), industry (numeric ID), and label (flags such as not_from_agency, accept_handicapped, or accredited_it). Sorting is controlled by order_by with options: relevance, publication_time, salary_desc, and salary_asc. Each response includes pagination metadata — page, pages, found, and per_page — alongside an array of vacancy summary objects containing id, name, salary, employer, address, experience, and labels.

Vacancy Detail

The get_vacancy endpoint accepts a numeric vacancy_id obtained from search_vacancies results and returns the full listing record. Key fields include key_skills (array of skill strings), description (full HTML job description), experience (human-readable requirement text), employer (object with id and name), salary, address, and labels. This is the endpoint to use when you need the complete posting content rather than the summary fields available from search.

Coverage and Pagination

Pagination in search_vacancies is 0-indexed via the page parameter. The found field reports the total number of matching vacancies, and pages tells you how many pages are available at the current per_page size. hh.ru covers job listings primarily from Russia and CIS countries; region filtering is ID-based, so callers targeting specific geographies need to know the corresponding numeric area IDs.

Reliability & maintenanceVerified

The hh API is a managed, monitored endpoint for hh.ru — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when hh.ru changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official hh.ru API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate software engineering job postings from Moscow and St. Petersburg filtered by minimum salary in RUR
  • Monitor new vacancies in a specific industry by polling search_vacancies sorted by publication_time
  • Extract key_skills arrays across many vacancies to identify the most in-demand technical skills on the Russian job market
  • Build a job alert system that checks found counts for a given keyword and notifies users when new postings appear
  • Populate a recruiter dashboard with employer names, addresses, and experience requirements from vacancy summaries
  • Filter listings to only agency-free postings using the not_from_agency label parameter
  • Compare salary ranges across industries by searching with different industry IDs and collecting salary fields
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does hh.ru have an official developer API?+
Yes. HeadHunter publishes a public API documented at https://github.com/hhru/api. It requires OAuth registration and has its own access rules. The Parse hh.ru API provides structured access without requiring you to manage OAuth credentials or application registration.
What does `get_vacancy` return that `search_vacancies` does not?+
search_vacancies returns summary fields: id, name, salary, employer, address, experience, and labels. get_vacancy adds the full HTML description, the key_skills array, and the vacancy url. If you need the actual job description text or required skills, you need to call get_vacancy with the id from the search results.
Are there limitations on how many results `search_vacancies` can return?+
The endpoint returns paginated results and exposes found, pages, and per_page so you can iterate through pages. hh.ru enforces its own caps on deep pagination — typically results beyond a few thousand are not accessible regardless of the page parameter, which mirrors the behavior of the source site's own search interface.
Does the API cover resume or applicant profile data?+
Not currently. The API covers job vacancy search via search_vacancies and vacancy detail retrieval via get_vacancy. Resume profiles, applicant data, and employer company pages are not exposed. You can fork this API on Parse and revise it to add an endpoint covering those data types.
Can I filter vacancies by employment schedule or work format?+
The search_vacancies endpoint exposes label values such as accredited_it and not_from_agency for categorical filtering, but granular schedule types (e.g., remote-only, full-day, shift) are not currently a dedicated filter parameter in the API. The vacancy summary and detail objects do include labels fields that may reflect some format tags. You can fork this API on Parse and revise it to add schedule-specific filter parameters.
Page content last updated . Spec covers 2 endpoints from hh.ru.
Related APIs in JobsSee all →
hh.uz API
Search and browse job vacancies across Uzbekistan with filters for location, experience, employment type, and more, while accessing detailed employer profiles and professional role information from HeadHunter Uzbekistan (hh.uz). Retrieve full vacancy details, explore geographic regions, and discover companies by name.
cv.lv API
Search for job listings on CV.lv and access detailed job descriptions, categories, locations, and information about top employers. Find the right opportunity by browsing available positions across different industries and regions.
boss.az API
Search and browse job listings from boss.az with detailed vacancy information, and instantly access company contact details including emails and phone numbers directly from job postings. Filter opportunities by job categories and regions to find positions that match your needs.
nofluffjobs.com API
Search and filter job openings from No Fluff Jobs by category, seniority level, location, and keywords to find IT, marketing, sales, and HR positions tailored to your needs. Retrieve detailed information about specific job postings including requirements, company details, and employment terms to help you make informed application decisions.
monster.com API
Search and retrieve job listings from Monster.com. Supports keyword and location-based search with structured results including job descriptions, salary ranges, company info, and employment details. Also provides access to popular job categories.
hellowork.com API
Search and browse job listings and company profiles on HelloWork, France's leading job board. Filter by keyword, location, contract type, salary, and more.
hotnigerianjobs.com API
Search and browse Nigerian job listings with detailed company information and job requirements all in one place. Discover employment opportunities by filtering through available positions and accessing comprehensive details about roles and hiring companies.
totaljobs.com API
Search and browse job listings from across the UK on TotalJobs, then access detailed information about specific positions including requirements, salary, and application details. Quickly compare opportunities and find roles that match your criteria.