hh.uz APIhh.uz ↗
Search vacancies, employers, and geographic regions on HeadHunter Uzbekistan (hh.uz). Filter by location, salary, experience, and schedule via 6 endpoints.
curl -X GET 'https://api.parse.bot/scraper/07bbb703-b142-467f-b860-09067fa58849/search_vacancies?page=0&text=developer&per_page=20' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for job vacancies on hh.uz with filters for keyword, location, experience, employment type, and more. Returns paginated results parsed from the website.
| Param | Type | Description |
|---|---|---|
| area | string | Area ID (e.g. 2759 for Tashkent) |
| page | integer | Page number (0-based) |
| text | string | Keyword search query |
| salary | integer | Minimum salary |
| order_by | string | Sort order: relevance, publication_time, salary_desc, salary_asc |
| per_page | integer | Items per page (max 100) |
| schedule | string | Work schedule: fullDay, shift, flexible, remote, flyInFlyOut |
| employment | string | Employment type: full, part, project, volunteer, internship |
| experience | string | Experience level: noExperience, between1And3, between3And6, moreThan6 |
| only_with_salary | boolean | Only show vacancies with salary specified |
{
"type": "object",
"fields": {
"page": "integer current page number",
"found": "integer total number of matching vacancies",
"items": "array of vacancy objects with id, name, employer, salary_text, address, url",
"pages": "integer total number of pages",
"per_page": "integer items per page"
},
"sample": {
"data": {
"page": 0,
"found": 200,
"items": [
{
"id": "132650580",
"url": "https://hh.uz/vacancy/132650580",
"name": "Python Backend Developer",
"address": "Ташкент, улица Муминова, 4/4",
"employer": {
"id": "3794511",
"name": "OOOUNITEL LLC"
},
"salary_text": null
}
],
"pages": 10,
"per_page": 20
},
"status": "success"
}
}About the hh.uz API
The hh.uz API provides access to HeadHunter Uzbekistan's job market through 6 endpoints covering vacancy search, employer profiles, and geographic data. search_vacancies accepts filters like area, salary, schedule, and employment type, returning paginated results with vacancy ID, employer name, salary text, and address. Companion endpoints deliver full vacancy descriptions, key skills, employer details, and a structured tree of professional roles.
Vacancy Search and Detail
search_vacancies accepts up to eight filter parameters — including text for keyword search, area for a region ID, salary for a minimum salary floor, and order_by for sort order (relevance, publication_time, salary_desc, salary_asc). Pagination is zero-based via page and per_page (up to 100 items). Each item in the items array carries id, name, employer, salary_text, address, and url. Pass any returned id to get_vacancy_detail to retrieve the full picture: description, key_skills as an array of strings, experience level, and structured employer and location fields.
Employers and Professional Roles
search_employers takes a required text query plus an optional area filter and returns paginated employer objects with id, name, and url. To get depth on a specific company, get_employer_detail returns site_url, description, and open_vacancies count alongside the basic identifiers. The get_professional_roles endpoint requires no parameters and returns a full category tree — each category has id, name, and a roles array — useful for building filter UIs or mapping role taxonomies.
Geographic Coverage
get_areas returns the complete region hierarchy when called without arguments: a nested tree of countries and cities, each node carrying id, name, parent_id, and a child areas array. Supplying an area_id (for example 97 for Uzbekistan or 2759 for Tashkent) scopes the response to that subtree. Area IDs from this endpoint feed directly into the area parameter on search_vacancies and search_employers.
- Aggregate Uzbekistan job listings filtered by city and minimum salary for a local job board
- Track the number of open vacancies per employer over time using
get_employer_detail'sopen_vacanciesfield - Build a role taxonomy browser from
get_professional_rolescategories and roles - Populate a location picker with the full region tree from
get_areasfor a job-search app - Extract
key_skillsarrays fromget_vacancy_detailto analyze in-demand skills by industry - Monitor new vacancies for a specific employer by combining
search_employersandsearch_vacancieswith the employer's area
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 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.
Does hh.uz have an official developer API?+
What does `search_vacancies` return and how granular is salary data?+
search_vacancies returns a salary_text string for each vacancy — a human-readable display value rather than structured numeric fields. The same salary_text field appears in get_vacancy_detail. There are no separate salary_from, salary_to, or currency fields in the current response shape, so salary comparisons require parsing the text string yourself.Is resume or applicant data available through this API?+
How does pagination work across endpoints?+
search_vacancies and search_employers use zero-based pagination. The page parameter sets the current page (default 0) and responses include pages (total page count), per_page, and found (total matching records). per_page maxes out at 100 for vacancies. get_areas and get_professional_roles return complete datasets in a single call with no pagination.Does the API cover job listings outside Uzbekistan?+
get_areas endpoint does include region nodes for other countries (for example, area ID 113 for Russia appears in the full tree), but vacancy and employer data reflects hh.uz listings. Coverage of non-Uzbekistan markets is incidental rather than guaranteed. You can fork this API on Parse and revise it to point at hh.ru or another regional HeadHunter domain for broader geographic scope.