Hh Uz Scraper avatar

Hh Uz Scraper

Pricing

from $0.79 / 1,000 job listings

Go to Apify Store
Hh Uz Scraper

Hh Uz Scraper

Scrape hh.uz for structured Uzbekistan job listings with salary, location, skills, and full descriptions. No API key needed.

Pricing

from $0.79 / 1,000 job listings

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

HH.UZ Scraper — Uzbekistan Jobs

Banner

Extract structured job listings from hh.uz — Uzbekistan's largest job board with tens of thousands of active vacancies. Returns up to 2,000 results per run across all cities and industries. No API key required.


Why this scraper?

📋 26 structured fields per vacancy

Vacancy ID, title, employer name and ID, city, salary range with currency and gross/net flag, experience level, employment type, work schedule, work format, key skills, full description in HTML/text/Markdown, publication date, and more.

💰 Salary in Uzbekistani som (UZS) and major currencies

Captures salary minimum, maximum, currency (UZS, USD, EUR, RUB), gross/net indicator, and payment frequency (monthly, bi-weekly, weekly).

🔍 Powerful filtering

Filter by keyword, city/region, experience level, employment type, work schedule (including remote), salary presence, and date range. Combine filters freely.

📄 Full job descriptions

Enable fetchDetails to retrieve the complete vacancy text in HTML, plain text, and Markdown — plus key skills, exact street address, work format details, and application deadline.

🔄 Repost detection

Enable skipReposts to deduplicate across runs. The scraper remembers every vacancy ID for 90 days and skips anything already seen — ideal for daily feeds.

🎯 Direct URL mode

Supply a list of hh.uz vacancy URLs via startUrls to scrape specific postings directly, bypassing search entirely.


Input parameters

ParameterTypeDefaultDescription
searchQuerystring""Keywords to search (job title, skill, etc.). Empty = all vacancies.
areaIdstring"97"Area code. 97 = all of Uzbekistan. Use city codes for narrower results (e.g. 2603 = Tashkent).
experienceselect""Experience level: noExperience, between1And3, between3And6, moreThan6.
employmentselect""Employment type: full, part, project, volunteer, probation.
scheduleselect""Work schedule: fullDay, shift, flexible, remote, flyInFlyOut.
workFormatselect""Work format: onsite, remote, hybrid.
onlyWithSalarybooleanfalseReturn only vacancies with a published salary range.
orderByselect""Sort order: relevance, publication_time, salary_desc, salary_asc.
fetchDetailsbooleanfalseFetch full description and all structured fields from each vacancy page.
skipRepostsbooleanfalseSkip vacancies already seen in previous runs (90-day memory).
maxResultsinteger5Maximum results to return. 0 = unlimited (platform cap: 2,000).
daysOldintegerOnly return vacancies posted within this many days.
dateFromstring""Return vacancies posted on or after this date (YYYY-MM-DD).
dateTostring""Return vacancies posted on or before this date (YYYY-MM-DD).
startUrlsarray[]Specific hh.uz vacancy URLs to scrape directly. Bypasses search.

Output schema

Always present

FieldTypeDescription
vacancyIdstringUnique hh.uz vacancy identifier.
titlestringJob title as listed by the employer.
urlstringDirect URL to the vacancy on hh.uz.
employerNamestring|nullEmployer or company name.
employerLogoUrlstring|nullURL to employer logo thumbnail.
isTrustedbooleanWhether the employer has a trusted employer badge.
citystring|nullCity extracted from the location field.
countrystringAlways "UZ".
locationRawstring|nullRaw location text (e.g. "Ташкент, улица Кирк-Киз, 10").
salaryFromnumber|nullMinimum salary (null if not published by employer).
salaryTonumber|nullMaximum salary (null if not published by employer).
salaryCurrencystring|nullSalary currency: UZS, USD, EUR, RUB, or null.
salaryGrossboolean|nulltrue = gross (before tax), false = net, null = unspecified.
salaryRawstring|nullRaw salary string as displayed (e.g. "от 8 000 000 до 13 000 000 so'm").
salaryFrequencystring|nullPayment frequency: MONTHLY, TWICE_PER_MONTH, WEEKLY, or null.
experienceBadgestring|nullExperience badge from listing: noExperience, between1And3, between3And6, moreThan6.
isRemotebooleanWhether the vacancy is remote-eligible (from listing label or work format).
isRepostbooleantrue if this vacancy was seen in a previous run (requires skipReposts: true).
originalPublishDatestring|nullFirst publication date if repost; null otherwise.
originalUrlstring|nullOriginal vacancy URL if repost; null otherwise.
sourcestringAlways "hh.uz".
scrapedAtstringISO 8601 timestamp of when this record was scraped.
contentHashstringMD5 fingerprint of vacancy ID + title for change detection.

With fetchDetails: true

FieldTypeDescription
employerIdstring|nullhh.uz internal employer ID.
publishedAtstring|nullPublication datetime ISO 8601.
publishDatestring|nullPublication date YYYY-MM-DD.
validThroughstring|nullApplication deadline ISO 8601.
streetAddressstring|nullFull street address of the workplace.
addressLocalitystring|nullCity from the structured address schema.
addressCountrystringCountry code from structured address (usually "UZ").
experienceRawstring|nullExperience requirement as displayed (e.g. "1–3 года").
employmentRawstring|nullEmployment type as displayed (e.g. "Полная занятость").
scheduleRawstring|nullWork schedule as displayed (e.g. "График: 5/2").
workFormatRawstring|nullWork format as displayed (e.g. "на месте работодателя").
hiringFormatRawstring|nullHiring format details from vacancy page.
workingHoursstring|nullDaily working hours (e.g. "8").
applicantLocReqarrayCountries eligible to apply (e.g. ["Узбекистан"]).
descriptionHtmlstring|nullFull job description in raw HTML.
descriptionTextstring|nullFull job description as plain text.
descriptionMarkdownstring|nullFull job description in Markdown.
keySkillsarrayList of required skills (e.g. ["Python", "Django", "PostgreSQL"]).

JSON example

{
"vacancyId": "134750046",
"title": "Middle Back-end разработчик",
"url": "https://hh.uz/vacancy/134750046",
"employerName": "OOO UZGPS",
"employerId": "8820311",
"employerLogoUrl": "https://img.hhcdn.ru/employer-logo/8820311.png",
"isTrusted": false,
"city": "Ташкент",
"country": "UZ",
"locationRaw": "Ташкент, улица Кирк-Киз, 10",
"streetAddress": "улица Кирк-Киз, 10",
"addressLocality": "Ташкент",
"addressCountry": "UZ",
"salaryFrom": 8000000,
"salaryTo": 13000000,
"salaryCurrency": "UZS",
"salaryGross": true,
"salaryRaw": "от 8 000 000 до 13 000 000 so'm за месяц до вычета налогов",
"salaryFrequency": "MONTHLY",
"experienceBadge": "between1And3",
"experienceRaw": "1–3 года",
"employmentRaw": "Полная занятость",
"scheduleRaw": "График: 5/2",
"workFormatRaw": "на месте работодателя",
"hiringFormatRaw": null,
"workingHours": "8",
"isRemote": false,
"applicantLocReq": ["Узбекистан"],
"publishedAt": "2026-07-01T13:13:07.200+03:00",
"validThrough": "2026-07-31T13:13:07.219+03:00",
"publishDate": "2026-07-01",
"descriptionHtml": "<strong>Обязанности:</strong><ul><li>Проектирование и разработка API...</li></ul>",
"descriptionText": "Обязанности: Проектирование и разработка API...",
"descriptionMarkdown": "**Обязанности:**\n\n- Проектирование и разработка API...",
"keySkills": ["Python", "Django", "PostgreSQL", "Docker", "REST API"],
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null,
"source": "hh.uz",
"scrapedAt": "2026-07-01T14:22:00.000Z",
"contentHash": "a3f9d12e4c7b8e91"
}

Examples

Search for IT vacancies in Tashkent:

{
"searchQuery": "разработчик",
"areaId": "2603",
"fetchDetails": true,
"maxResults": 100
}

Remote jobs with salary, sorted by pay:

{
"schedule": "remote",
"onlyWithSalary": true,
"orderBy": "salary_desc",
"fetchDetails": true,
"maxResults": 50
}

Scrape specific vacancies by URL:

{
"startUrls": [
{ "url": "https://hh.uz/vacancy/134750046" },
{ "url": "https://hh.uz/vacancy/134663723" }
],
"fetchDetails": true
}

Daily feed — new postings only, no reposts:

{
"daysOld": 1,
"skipReposts": true,
"fetchDetails": false,
"maxResults": 0
}

💰 Pricing

$0.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.

ResultsCost
100~$0.10
1,000~$0.99
10,000~$9.90
2,000 (max)~$1.98

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeEstimated time
100 results (list only)~30 seconds
500 results (list only)~2 minutes
100 results (with fetchDetails)~3 minutes
500 results (with fetchDetails)~12 minutes
2,000 results (platform max, list only)~8 minutes

Known limitations

  • Maximum 2,000 results per search (hh.uz platform limit — 100 pages × 20 results). Use filters or multiple targeted searches to cover broader datasets.
  • publishDate and full structured fields are only available with fetchDetails: true.
  • Salary is null when the employer chooses not to disclose it (roughly 40–60% of listings).
  • Employer logo URLs may expire or become unavailable over time.

Technical details

  • Source: hh.uz — Uzbekistan's leading job board (part of the hh.ru network)
  • Memory: 256 MB
  • Repost storage: KeyValueStore hh-uz-scraper-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors and server errors, exponential backoff, 3 attempts per request


Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl