hh.kz Вакансии и зарплаты Казахстана | Jobs & Salary Scraper
Pricing
from $0.35 / 1,000 краткий обзор вакансии / job summaries
hh.kz Вакансии и зарплаты Казахстана | Jobs & Salary Scraper
Вакансии hh.kz (HeadHunter Казахстан) на 3 уровнях: обзор, подробности, анализ зарплат с рынком stats.hh.kz. Scrape hh.kz jobs with salaries and market benchmarks.
Pricing
from $0.35 / 1,000 краткий обзор вакансии / job summaries
Rating
0.0
(0)
Developer
Berkay Çınar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
hh.kz Вакансии и зарплаты Казахстана | hh.kz Jobs & Salary Scraper
🗓️ Последнее обновление: 18 октября 2026 · Last updated: 18 October 2026

🇰🇿 Русский · 🇬🇧 English below
Собирает вакансии с hh.kz (HeadHunter Казахстан) в аккуратную таблицу: компания, должность, город, адрес и метро, формат и график работы, опыт, зарплата (от/до, валюта, «до вычета налогов» или «на руки», за месяц / смену / вахту / услугу), отклики, описание, ключевые навыки и данные о работодателе. На уровне «Анализ зарплат» каждая вакансия сравнивается с рыночной зарплатой по данным hh Статистика (stats.hh.kz) для своей профобласти и города: на сколько процентов предложение выше или ниже рынка. Результаты — в JSON, CSV, Excel или через API; таблицы в Console с русскими названиями колонок (имена полей в JSON — на английском).
Для кого
- HR и рекрутеры: какие зарплаты предлагают конкуренты по должности и городу, и где ваше предложение относительно рынка.
- Кадровые агентства и консультанты по C&B: выгрузка вакансий по профессии × региону с вилками зарплат и средними по рынку.
- Отделы продаж (B2B): какие компании сейчас нанимают, их отрасль, сайт и число открытых вакансий.
- Аналитики и СМИ: рынок труда Казахстана — спрос по городам и профессиям, доля вакансий с зарплатой, удалённая работа.
Что вы получаете: 3 уровня данных, 3 страницы
Выбранный уровень данных определяет, какие таблицы (страницы во вкладке Output) будут заполнены. Каждый уровень включает предыдущий; страницы связаны полем jobId (ID вакансии).
| Уровень данных | Страница | Что внутри | Цена за 1 000 вакансий (итого за уровень) |
|---|---|---|---|
Краткий обзор вакансий (list) | Краткий обзор вакансий (48 колонок) | Всё из выдачи поиска: компания, тип работодателя, признак «работодатель — частное лицо», должность, профессиональная роль, город, область, район, адрес, метро, координаты, формат работы, тип занятости, график, часы, вахта, дата публикации и обновления, число откликов, «сейчас смотрят», сопроводительное письмо, тест, опыт, языки, права, стажировка, ночные смены, ГПХ, инклюзивность, зарплата (текст, от, до, валюта, до вычета/на руки, период и частота выплат, за смену/вахту/услугу), трудовой договор, метки, аккредитованная IT-компания, проверенный работодатель, ссылки | $0.50 |
Подробности вакансии (details, по умолчанию) | + Подробности вакансии (59 колонок) | + страница вакансии: описание, ключевые навыки, «активна до», в архиве; + страница компании: отрасли, город, описание (кратко), HR-бренд, награды и рейтинги, число открытых вакансий, сайт | $1 |
Анализ зарплат (full) | + Анализ зарплат (30 колонок) | Сравнение с рынком stats.hh.kz (подробно ниже) | $3 |
Оплата — Pay per event: старт запуска $0.00005 за 1 ГБ памяти (по умолчанию 2 ГБ → $0.0001 за запуск) плюс за каждую сохранённую вакансию: обзор $0.0005, подробности +$0.0005 (details/full), анализ зарплат +$0.002 (full, только если сравнение действительно посчитано: у вакансии есть зарплата и найдены рыночные данные, т. е. колонка «Отклонение от рынка, %» заполнена). В таблице выше — сумма за уровень на 1 000 вакансий, если у всех вакансий есть зарплата; вакансии без зарплаты, за рубежом или без рыночных данных стоят $1 за 1 000 и на уровне full. Информационные строки ℹ️/⚠️ (см. FAQ) не оплачиваются. Подписчики Apify Bronze / Silver / Gold получают скидку 10% / 20% / 30% на все платежи за вакансию.
💰 Анализ зарплат (stats.hh.kz)
Источник: открытая аналитика hh «hh Статистика» — https://stats.hh.kz/ (JSON stats.hh.kz/api/v1/data/KZ). Загружается один раз за запуск (параллельно со сбором) и кэшируется на 7 дней. Данные помесячные; используется последний опубликованный месяц (колонка «Месяц данных», сейчас 2026-09 — обычно отставание около месяца).
Метрики (для профобласти × города):
| Колонка | Что означает |
|---|---|
Средняя предлагаемая зарплата по рынку, ₸ (marketAvgSalary) | средняя зарплата, указанная в вакансиях hh за месяц (hh: averageCompensation) |
Средняя ожидаемая зарплата в резюме, ₸ (marketExpectedSalary) | сколько в среднем просят соискатели в резюме (averageExpected) |
| Вакансий в выборке / Резюме в выборке | число вакансий и резюме за месяц, по которым посчитано среднее |
| hh.индекс | резюме на одну вакансию: < 4 — дефицит кандидатов, > 8 — высокая конкуренция среди соискателей |
| Средняя зарплата в регионе (все профобласти), ₸ | среднее по городу по всем профессиям |
Зарплата в месяц, ₸ (для сравнения) (salaryMonthlyKzt) | зарплата вакансии в месяц: середина вилки (или «от»/«до», если указано одно значение); для смен, вахт и почасовой оплаты — месячный эквивалент, который показывает сам hh. Оплата «за услугу» не пересчитывается в месяц: сумма остаётся в колонках «За смену / вахту / час / услугу», месячные поля пустые, сравнения нет |
Пересчитано из другой валюты (isSalaryConverted) | ✓ — зарплата указана в USD/EUR/RUB и пересчитана в тенге по курсу hh.kz на странице |
Отклонение от рынка, % (salaryVsMarketPct) | (зарплата в месяц ÷ средняя по рынку − 1) × 100, зарплата сравнивается как указана (см. «До вычета налогов») |
Проверка зарплаты (salaryCheck) | ok — в пределах 0,25–4× от рынка; outlier — меньше 0,25× или больше 4× (часто опечатка работодателя, например «1 ₸» или «18 000 000 ₸»); unchecked — нет зарплаты, оплата «за услугу» или нет рыночных данных; foreign — работа за пределами Казахстана (см. ниже). Только информация: вакансия всё равно сохраняется |
Как вакансия сопоставляется с рынком
- Профобласть: профессиональная роль вакансии → профобласть hh Статистика по ручной таблице соответствий для всех 194 ролей hh (
src/sites/hh.rolemap.js). 114 ролей принадлежат одной профобласти; для 80 ролей, входящих в несколько, выбрана основная по смыслу роли: «Водитель, экспедитор» → «Транспорт, логистика, перевозки», «Официант, бармен, бариста» → «Туризм, гостиницы, рестораны», «Охранник» → «Безопасность», «Администратор» → «Административный персонал», «Специалист технической поддержки» → «Информационные технологии», руководящие роли (CEO, CFO, руководитель филиала…) → «Высший и средний менеджмент». Для нескольких ролей учитывается название вакансии: «Администратор салона красоты» → «Спортивные клубы, фитнес, салоны красоты», «Руководитель проектов СМР» → «Строительство», «Дизайнер интерьера» → «Строительство», «UI/UX-дизайнер» → «IT». Для «Руководителя проектов» учитывается название и отрасль работодателя: слаботочные системы, архитектура, строительство → «Строительство»; нефть и газ → «Добыча сырья»; «Информационные технологии» — только для IT-названий или IT-отрасли; иначе «Высший и средний менеджмент». Для роли «Другое» actor подбирает профобласть по названию (бармен → «Туризм, гостиницы, рестораны», учитель / мұғалім / teacher → «Наука, образование», кассир → «Розничная торговля» и т. д.); если ничего не подходит — «Другое» с пометкойother. Колонка «Как выбрана профобласть»:role-map(по роли),role-map+title(по роли и названию),role-map+industry(по отрасли работодателя),other(роль «Другое» без подходящего названия). Роль выбирает работодатель; если он указал неподходящую роль (например, «Андеррайтер» для разработчика), сравнение будет с этой профобластью. - Город: сначала город/населённый пункт вакансии; если там меньше 10 вакансий этой профобласти за месяц — областной центр (например, Риддер → Усть-Каменогорск, уровень
region-center); иначе весь Казахстан (country). Данные по областям целиком hh Статистика публикует без средней зарплаты, поэтому область как таковая не используется. Уровень — в колонке «Уровень региона» (city/region-center/country). - Работа за рубежом: hh иногда публикует вакансии в России (вахта, склады, производства) под казахстанским регионом. Если координаты адреса далеко за пределами Казахстана, город в адресе — российский или другой зарубежный, в описании сказано, где идёт работа за рубежом (например, «заводы располагаются в Туле», «оформление на территории РФ», «вахта по России» — при любой валюте зарплаты), или зарплата в рублях и в тексте упомянуто место в России, — и при этом в тексте нет указания на работу в Казахстане, вакансия получает
salaryCheck = foreignи колонку «Вакансия за пределами Казахстана» ✓; рыночные поля пустые, анализ не оплачивается. Удалённая работа не считается зарубежной из-за адреса офиса: онаforeign, только если работа, валюта (рубли) или текст указывают на другую страну и ничего не указывает на Казахстан (адрес в Казахстане или «выход на рынок Казахстана» → сравнение с рынком). Проверка на запуске «вахта, Атырау, только с зарплатой» (40 вакансий): все 14 рублёвых вакансий и ещё 2 (в USD и KZT — склад в Московской области и завод в Новомосковске) отмеченыforeign; 24 казахстанские вакансии сравнены с рынком Атырау.
До вычета налогов или на руки. В вакансиях hh встречается и то, и другое (колонка «До вычета налогов»: ✓ = до вычета, ✗ = на руки), а hh Статистика не указывает, до вычета налогов или на руки её средние. Поэтому actor сравнивает зарплату как указано и не пересчитывает её: при анализе фильтруйте или учитывайте колонку «До вычета налогов» (в Казахстане из зарплаты до вычета удерживаются обязательные пенсионные взносы, взносы на медстрахование и ИПН; ставки 2026 года мы не смогли проверить по официальному источнику — kgd.gov.kz, adilet.zan.kz — поэтому оценку «на руки» не выводим).
Проверка на реальных запусках: Актобе, «водитель», только с зарплатой — 29 из 33 вакансий сравнены с «Транспорт, логистика, перевозки» (раньше ошибочно — с «Рабочий персонал»), 4 — работа в России (foreign).
Ограничения анализа
- Это уровень профобласти (27 групп), а не конкретной должности.
- Средние за последний опубликованный месяц, а не за день сбора.
- До вычета налогов / на руки — см. выше.
Входные данные
| Поле | Описание |
|---|---|
| Ключевое слово | как в поиске hh.kz, любой язык (русский, казахский, английский); пусто = все вакансии |
| Города и области | Казахстан (вся страна), Алматы, Астана, Шымкент, Караганда, Актобе, Тараз, Павлодар, Усть-Каменогорск, Семей, Атырау, Костанай, Кызылорда, Уральск, Петропавловск, Актау, Темиртау, Туркестан, Талдыкорган, Экибастуз, Кокшетау, Жезказган и 17 областей |
| Уровень данных | Краткий обзор / Подробности / Анализ зарплат |
| Максимум вакансий | по умолчанию 100 |
| Сортировка | По соответствию (по умолчанию) — как hh.kz: первые вакансии самые подходящие к запросу; Сначала новые — по дате публикации. Если maxItems ≥ числу найденных вакансий, actor сам листает по дате, чтобы собрать всё без потерь |
| Без работодателей — частных лиц | не сохранять и не оплачивать вакансии, где работодатель — частное лицо или в названии компании ФИО человека |
| Фильтры hh | опыт работы, формат работы, график, тип занятости, только с зарплатой, зарплата от (₸), опубликовано за 1/3/7/30 дней, профессиональные роли — передаются в поиск hh.kz как есть. «Зарплата от» работает как на hh.kz: вакансии без указанной зарплаты тоже остаются в выдаче; чтобы их убрать, включите «Только с указанной зарплатой» |
| Ссылки hh.kz | вместо полей: ссылка на поиск (/search/vacancy?…), каталог (/vacancies/…) или вакансию (/vacancy/…). Если в ссылке order_by=publication_time, сортировка по дате сохраняется |
Пример: {"keyword": "бухгалтер", "cities": ["160"], "detailLevel": "details", "maxItems": 20} (Алматы = 160, Астана = 159, Шымкент = 205, Казахстан = 40).
Пример результата (реальный запуск, Актобе, «водитель», уровень full)
{"company": "Эко Торг Сервис","companyIsPersonName": false,"title": "Водитель - экспедитор","professionalRole": "Водитель, экспедитор","city": "Актобе","workFormat": "На месте работодателя","employmentForm": "Полная занятость","workSchedule": "5/2","experience": "От 1 года до 3 лет","driverLicenses": "B","responsesTotal": 69,"salaryText": "250 000 – 320 000 ₸ за месяц, на руки","salaryFrom": 250000,"salaryTo": 320000,"salaryCurrency": "KZT","isSalaryGross": false,"employerIndustries": "ЖКХ","isLocationAbroad": false,"isSalaryConverted": false,"salaryMonthlyKzt": 285000,"marketCategory": "Транспорт, логистика, перевозки","marketCategoryMatch": "role-map","marketArea": "Актобе","marketAreaLevel": "city","marketAvgSalary": 385168,"salaryVsMarketPct": -26,"salaryCheck": "ok","marketExpectedSalary": 300000,"marketVacancyCount": 128,"marketHhIndex": 26.6,"marketDataMonth": "2026-09","url": "https://hh.kz/vacancy/137891974"}
Полнота: hh показывает максимум 2 000 вакансий на один поиск
hh.kz отдаёт не больше 20 страниц × 100 вакансий на один поиск. Если по запросу найдено больше 2 000 вакансий и вы просите больше, actor автоматически делит поиск на части по фильтрам самого hh — сначала по регионам (вся страна → 3 города + 17 областей), затем по опыту, профессиональной роли, типу занятости, формату и графику, используя счётчики hh, — пока каждая часть не станет ≤ 2 000. Дубликаты удаляются по jobId.
Порядок. При небольшом maxItems actor берёт ровно первые N вакансий hh (страницы вакансий открываются только для первых N; если какая-то недоступна, берётся следующая) в порядке hh «по соответствию» — те же вакансии, что пользователь видит первыми на сайте (проверка: «программист», весь Казахстан, опыт 1–3 года, 40 вакансий — 30 из 40 по теме, у hh 31 из 40; при сортировке по дате было 12 из 40). Когда нужны все вакансии (maxItems ≥ найдено) или поиск делится на части, actor листает по дате публикации: при сортировке «по соответствию» страницы смещаются и при листании теряется до ~20 % вакансий, по дате — ни одной. Проверка: «менеджер», Алматы, maxItems 4 000 — hh нашёл 3 909, собрано 3 909 уникальных (100 %) за 68 с; «менеджер по продажам», весь Казахстан — 6 338 из 6 340 (99,97 %). Число на сайте меняется в течение дня, поэтому итог может отличаться на несколько штук.
Персональные данные и правовая информация
- Actor не собирает персональные данные: имя и фамилия сотрудника работодателя (контактное лицо), телефоны и e-mail не читаются и не сохраняются. Вход в аккаунт, обход платного доступа и CAPTCHA не используются.
- Имена людей в поле «Компания». hh показывает в названии работодателя имя человека не только у работодателей типа «Частное лицо», но и у ИП, частных рекрутеров и некоторых кадровых агентств (например, «Фамилия Имя Отчество» с типом «Организация»). Чаще всего это ИП, записанный как «Фамилия И.О.», одна фамилия («Нургазина», «Жуков»), «Фамилия Имя» или одно имя («Наргиза»). Колонка «Работодатель — частное лицо (имя человека)» (
companyIsPersonName) отмечает такие строки по типу работодателя hh («Частное лицо»), по организационной форме hh (ИП / физлицо) и по форме названия: «Фамилия Имя Отчество», «Фамилия И.О.» / «Фамилия И. О.» / «Фамилия И.О», «ИП Фамилия», одна фамилия или имя у ИП, казахские «…ұлы/…қызы», а также имя в скобках («Детский центр … (Джамагарина Д.В.)»). Проверка: 59 таких работодателей из реальных запусков — найдены все 59; 200 обычных компаний (в т. ч. «Kiddi», «ALMAWINE», «Авентина», «Империя») — 0 ложных срабатываний. Опция «Без работодателей — частных лиц» не сохраняет эти вакансии и не берёт за них плату (проверка: «продавец», Костанайская + ВКО — 11 из 40 были с именами людей, с опцией в выдаче 0). Эвристика остаётся эвристикой: редкое имя бренда в форме фамилии у ИП может быть отмечено, а необычное имя — пропущено. Обрабатывая такие записи, соблюдайте законодательство о персональных данных (Закон РК «О персональных данных и их защите», GDPR и т. п.). - Вы отвечаете за соблюдение пользовательского соглашения hh.kz и законов при использовании данных. Сбор бережный: datacenter-прокси, не больше 10 параллельных запросов, повторы с паузой.
FAQ
Почему на странице «Подробности вакансии» или «Анализ зарплат» одна строка ℹ️? Эта страница не заполняется на выбранном уровне (или ничего не найдено) — строка подсказывает, какой уровень выбрать. В API такие строки помечены _info: true. Они не оплачиваются.
Запуск «Краткий обзор» ничего не сохранил — где объяснение? На главную страницу (Краткий обзор) информационную строку записать нельзя: каждая строка там оплачивается. Причину показывает сообщение о статусе запуска (например, «Ничего не сохранено: по запросу вакансий не найдено — измените ключевое слово, город или фильтры») и лог.
Почему строка ⚠️ «Остановлено»? Достигнут ваш лимит расходов (Max total charge) или лимит времени запуска. Уже сохранённые вакансии остаются; увеличьте лимит.
Почему зарплата «1 ₸» или «18 000 000 ₸»? Так указал работодатель. На уровне «Анализ зарплат» такие значения помечаются outlier.
За какие вакансии списывается «Анализ зарплат»? Только за те, где посчитано «Отклонение от рынка, %». Вакансии без зарплаты всё равно получают рыночные колонки (средняя по профобласти и городу — полезный контекст), но с salaryCheck = unchecked и без доплаты; так же для foreign и оплаты «за услугу».
Почему в логе «hh увёл поиск за пределы Казахстана»? Если в запросе есть название страны (например, «вахта Россия»), «умный» поиск hh иногда переключает регион на Россию. Actor тогда повторяет тот же поиск с no_magic=true (регион остаётся Казахстан); если и это не помогает, поиск останавливается без листания (проверка: «вахта Россия» — 48 с и $0.009 вместо 196 с и $0.0276).
Можно ли собирать по ссылке? Да: вставьте ссылку на поиск hh.kz со своими фильтрами, каталог или вакансию. Регион всегда закрепляется в ссылке (поддомен города + area), чтобы hh не подменил город по IP.
Вакансии из других стран? Вакансии с регионом не в Казахстане пропускаются (countryIsoCode = KZ). Вакансии с казахстанским регионом, но работой за рубежом, сохраняются с пометкой foreign (см. «Анализ зарплат»).
Ограничения
- Максимум ~2 000 вакансий на один поиск на стороне hh (actor делит поиск автоматически; если делить дальше нельзя, в логе будет предупреждение).
- Образование, размер компании, контакты и имя рекрутера не выводятся (hh не показывает образование в вакансии и почти никогда — размер компании; контакты — персональные данные).
- Скорость (измерено, 2 ГБ памяти, 13 запусков по 30–100 вакансий на уровнях «Подробности» / «Анализ зарплат»): 43–86 вакансий/мин, обычно ~60–65 (запуски hVXKkieuM69zaGLO0 84, sBluhdxaz4MDcoiSh 86, T9b97aEV3gWoI0uoP 78, Wn5osAwHAsYggHhqt 61, OpbdCKHQvSoTpvsgU 69, JVcJBtr5FhL52zADj 65, E3tweA7MTSLfsaxAd 43, jHkflcNJVsekFzehE 44); в маленьких запусках (≤ 20 вакансий) заметна фиксированная задержка старта ~15–20 с (страница вакансии + страница компании, компании кэшируются на 7 дней), тысячи в минуту на уровне «Краткий обзор».
- Рыночная аналитика — по профобластям и месяцам hh Статистика (см. выше).
🇬🇧 English
Scrapes hh.kz (HeadHunter Kazakhstan) job listings into a clean table: company, title, city, address and metro, work format and schedule, experience, salary (from/to, currency, gross vs net, per month / shift / rotation / service), applicant counts, description, key skills and employer data. At the Salary analysis level every job is benchmarked against the hh Statistics market salary (stats.hh.kz) for its professional area and city, with the % difference.
Levels and prices (per 1,000 jobs, level total): list — Краткий обзор вакансий (search-result fields, 48 columns) $0.50; details (default) — + Подробности вакансии (job page: description, key skills, valid-to, archived; employer page: industries, city, short description, HR brand, badges, open vacancies, website) $1; full — + Анализ зарплат (stats.hh.kz benchmark) $3. Pay per event: $0.00005 start per GB (default 2 GB) + $0.0005 per job, +$0.0005 details, +$0.002 insights — charged only when a comparison was computed (the job has a salary and market data was found, i.e. salaryVsMarketPct is filled). Jobs without salary still get the market columns as context, but are not charged for insights. Apify Bronze / Silver / Gold subscribers get 10% / 20% / 30% off all per-job fees.
Salary analysis: source https://stats.hh.kz/ (one JSON per run, loaded in parallel, cached 7 days, latest published month, e.g. 2026-09). Metrics: average offered salary in hh vacancies, average expected salary in CVs, vacancy and CV sample sizes, hh.index (CVs per vacancy), city average across all areas, the job's monthly salary in KZT (range midpoint; shift/rotation/hourly use hh's own monthly equivalent; "per service" pay is not converted to a month and is not compared; USD/EUR/RUB converted with hh.kz rates and flagged in isSalaryConverted), salaryVsMarketPct, and salaryCheck (ok 0.25–4×, outlier otherwise, unchecked without salary/market data or per-service pay, foreign for work outside Kazakhstan — informational only).
- Professional area: a hand-curated map of all 194 hh roles to their primary stats area (
src/sites/hh.rolemap.js), e.g. Driver → Transport & logistics, Waiter → Tourism/hotels/restaurants, Guard → Security, Administrator → Administrative staff, C-level roles → Senior management; for a few roles the job title refines it (e.g. salon administrator, construction project manager, interior designer). Project managers use the title and the employer's hh industry (low-voltage/architecture/construction → Construction, oil & gas → Extraction, IT only for IT titles or IT employers, otherwise Senior management); role 40 «Другое» gets a title-keyword fallback (bartender → HoReCa, teacher → Education, cashier → Retail…), else stays «Другое» withother.marketCategoryMatch=role-map,role-map+title,role-map+industryorother. The role is chosen by the employer. - Region: the job's city; if it has fewer than 10 vacancies of that area in the month, the oblast centre (
region-center, e.g. Ridder → Ust-Kamenogorsk); otherwise Kazakhstan (country). hh Statistics publishes oblast-level rows without an average salary, so the oblast itself is not used. - Work abroad: hh sometimes lists Russian jobs under a Kazakh area. If the address coordinates are far outside Kazakhstan, the address city is foreign, the description says where the work is abroad ("factories in Tula", "employment on the territory of the RF" — in any pay currency), or the salary is in RUB and the text names a place in Russia — and nothing in the text points to work in Kazakhstan —; remote jobs are never foreign just because of an office address, the row gets
salaryCheck = foreign,isLocationAbroad = true, empty market fields and no insights charge (test: Atyrau rotation jobs — all 14 RUB jobs plus 2 others (USD/KZT, Russian sites) flagged; 24 Kazakh jobs benchmarked). - Gross vs net: jobs show both (
isSalaryGross), and hh Statistics does not say whether its averages are gross or net, so the comparison is as published, with no tax conversion. A net estimate is not provided because the official 2026 Kazakhstan withholding rates could not be verified against kgd.gov.kz / adilet.zan.kz during this build.
Inputs: keyword (any language), cities/regions (hh area ids: Kazakhstan 40, Almaty 160, Astana 159, Shymkent 205, + 18 cities and 17 oblasts), data level, max jobs, sort (relevance = hh default ranking, default; newest = by publication date), exclude person-name employers, hh filters (experience, work format, schedule, employment type, only with salary, salary from in KZT — like on hh.kz this keeps jobs without a salary unless "only with salary" is on — posted within 1/3/7/30 days, professional roles), or hh.kz search / catalog / vacancy URLs.
Coverage and order: hh shows at most 2,000 results per search (20 pages × 100). For small maxItems the actor takes hh's relevance-ranked first pages (test: "программист", Kazakhstan, 1–3 years, 40 jobs → 30/40 on-topic vs hh's 31/40; date order gave 12/40). When you want everything (maxItems ≥ total) or the search must be split, it pages newest-first, which hh pages without overlap (relevance order shifts between pages and loses up to ~20 %), splits by hh's own filters (regions, experience, role, employment, format, schedule) and deduplicates by jobId. Tests: "менеджер", Almaty, maxItems 4,000 → 3,909 of 3,909 (100 %) in 68 s; "менеджер по продажам", Kazakhstan → 6,338 of 6,340.
Personal data & legal: no recruiter names, phones or e-mails are collected; no login, paywall bypass or CAPTCHA solving. hh shows a person's name as the company name not only for "Частное лицо" employers but also for sole proprietors, private recruiters and some agencies; companyIsPersonName flags these using hh's employer type, hh's organisation form (sole proprietor / individual) and the name shape — "Surname Name Patronymic", "Surname I.O." (with or without dots/spaces), "ИП Surname", a bare surname or first name of a sole proprietor, Kazakh -ұлы/-қызы, or a name in brackets. Measured on real data: 59/59 person-name employers caught, 0 false positives on 200 ordinary company names. excludePersonEmployers drops them before charging (test: 11 of 40 person-name rows → 0). Handle such rows according to data-protection law. You are responsible for complying with hh.kz terms and applicable law.
Empty list-level runs: no info row can be written to the main (charged) table, so the run's status message and log explain why nothing was saved.
Limits: ~2,000 results per hh search (auto-split); measured speed at 2 GB (13 runs of 30–100 jobs, details/full): 43–86 jobs/min, typically ~60–65 (e.g. runs hVXKkieuM69zaGLO0 84, Wn5osAwHAsYggHhqt 61, E3tweA7MTSLfsaxAd 43); small runs carry a ~15–20 s start-up, thousands per minute at list level; no education, company size or contacts; market data per professional area and month.