Обновить

Комментарии 21

С апреля 2026 года публичный метод GET /vacancies API HeadHunter начал возвращать 403 Forbidden для неавторизованных запросов.

Обнаружено экспериментально, или изменение отражено в доках?

Обнаружено экспериментально сегодня текст самой ошибки, а данные перестали приходить с апреля.

Среди моего круга общения много бывших коллег с разных предыдущих мест работы, многие из которых так же расползлись уже по широкому спектру разных компаний. Поддерживаем общение в разных чатиках и т.п. Так вот, за последние пару-тройку лет среди знакомых нет ни одного успешного кейса поиска работы через HH, хотя самих кейсов смены и поиска работы - было достаточно. Этот уроборос давно перешел в стадию пожирания самого себя, пробиться через все эти ИИ фильтры и бредовые требования стало нереально даже опытному разработчику с 15 годами стажа. Никаких пруфов не будет - это чисто личное наблюдение и мнение, верить или нет - личное дело каждого..

Создаётся устойчивое впечатление, что единственный работающий вариант поиска работы сейчас - это как раз веерные рассылки через бывших коллег и знакомых, с просьбой поспрашивать уже ИХ знакомых, нет ли у кого где-то вакансий подходящих. Пока в таких кейсах достаточно оперативно находится вакансия, которую работодатель долго и безуспешно пытается закрыть через тот же HH.

Как в такой ситуации искать первую работу новичку, у которого нет сотни человек знакомых, варящихся в той же индустрии в разных конторах - не очень понятно.

Теги: hh.ru, What Is Dead May Never Die

по моему задача ИИ была упростить жизнь, теперь когда читаешь великое описание простой вакансии написанное в трёх томах, высоким языком с зарплатой в 45к в месяц ... Думается где и что с ии пошло не так

По итогу альтернатива это только нетворкинг или всё же были случаи нахождения работы через что-то ещё?

Уверены ли вы, что проблема в hh конкретно, а не в рекрутерах и мертвых выкладываемых вакансиях? Другими словами, есть ли альтернативный сервис, где проблем нет? Линкедин как будто мягко сказать не лучше.

Все виденные мною исследования рынка труда за последний год почему-то ссылаются на hh, и инфа про 19 (уже 25) резюме на вакансию - оттуда.

2 года назад поиск работы там ещё работал - за несколько месяцев не слишком активного поиска таки удалось найти, при этом разговаривал с представителями лишь нескольких компаний. Массово резюме не рассылал. Полагаю, ИИ-фильтры придумали чуть позже.

Подтверждаю, как сеньор с 15-летним опытом. В прошлом году искал работу, отправил несколько десятков откликов - везде получил только автоматические отказы. Абсолютно мертвая платформа, где боты общаются с ботами. Живых людей там нет.

В прошлом году в апреле нашел работу через хх, но может быть мне повезло. По половине вакансий автоматически получал отказ или общался с ботом, который просил заполнить анкету или ответить на пару вопросов. В этом году все коллеги, которые искали работу через хх, не смогли ее найти

Не единожды выходил на работу через хх, но кажется, это событие гвоздь в крышку сервиса.

Неужели менеджеры фаяндекса и туда попали? /s

Кто-то здесь уже писал, что хх этим нарушил баланс между работодателями и работниками. Первые продолжают использовать ботов и ИИ для поиска и отсева кандидатов, а вторым автоматически просеивать и откликаться на вакансии теперь нельзя.

Предлагаю отменить их.

Отменить их давно пора. Как только работодатели стали использовать иишные фильтры - это ознаменовало начало эры коммуникации "иишка-иишка". Смысла человеку влазить в безумную и бесполезную коммуникацию с иишкой нет вообще. Тем более, иишка накладывается на и так достаточно мерзкое поведение HR, которое было раньше.

Fetch тоже не работают?

А есть какие-то известные понятные воркэраунды?

Я попробовал Firecrawl - у меня не получилось. В AI Studio (Gemini 3.1 Pro) кажется вернулся валидный джейсон с правдоподобными данными. На первый взгляд кажется что можно пробовать дальше с ним экспериментировать, но придется дополнительно заняться костылями для пейджинга и параметров.

Ничего не мешает через playwright "вернуть API" обратно. Да, автоматизации станут чуть костыльнее и требовательнее по ресурсам, но для персонального использования не помеха, кмк.

Закрыли API - получите от пользователя тоже самое + сопутствующую мусорную нагрузку.

Закрыли API - получите от пользователя тоже самое + сопутствующую мусорную нагрузку.

Это странно, но такая политика наблюдается повсеместно последнее время.

Концептуально подход к использованию ресурсов перевернули: раньше все старались сделать максимально удобным использование (хотя бы вспомнить тот самый IE, с которым мучались ужасно), а сейчас наоборот - все закрывают, блокируют, не пускают.

Что происходит вообще??? Для нормального использования Интернета все больше и больше приходится использовать разные приблуды и костыли.

Парадоксально, но это просто ужасно повышает нагрузку и на провайдеров услуг/сервисов и на пользователей. И те и другие копошаться в решении каких-то бредовых проблем, высосанных из пальца. Это просто какой-то сюр.

Да, закрыт не только GET /vacancies. Под 403 ушла вся выдача:

  • api.hh.ru/vacancies?text=...

  • api.hh.ru/vacancies/{id}, одна конкретная вакансия

  • api.hh.ru/employers/{id}

Справочники при этом живы: /areas, /dictionaries, /suggests отдают 200. Подмена User-Agent не спасает:с браузерным тот же 403, с типовым my-app/1.0 (mail@example.com) прилетает 400 Bad User-Agent: blacklisted
Про playwright идея верная, но браузер избыточен. Страница поиска рендерится на сервере и кладёт весь ответ в <template id="HH-Lux-InitialState">. Обычный curl без кук и без JS получает 200 и 50 вакансий готовым JSON

STATE = re.compile(r'<template[^>]*id="HH-Lux-InitialState"[^>]*>(.*?)</template>', re.S)
body = urlopen(Request(url, headers={"User-Agent": UA})).read().decode()
data = json.loads(html.unescape(STATE.search(body).group(1)))
vacancies = data["vacancySearchResult"]["vacancies"]

Полей там 59 против 26 в публичной выдаче API. Кроме зарплаты и опыта есть creationTime (когда вакансию завели, а не когда подняли), professionalRoleIds, latestActivity рекрутера и пара счётчиков откликов, responsesCount и totalResponsesCount. Заполнены они у большинства вакансий и на самой странице не отрисованы, но что именно считает каждый, я не разобралась, числа расходятся, и версии с последнего поднятия и по группе вакансий в разных городах обе не подтвердились
Ограничения те же, что были в API 40 страниц по 50, page=40 уже 404, дальше нарезка по регионам и профролям. Описание вакансии требует отдельного запроса на карточку (vacancyView.description). Сосдние страницы слегка пересекаются, дедупликация по vacancyId обязательна на трёх страницах из 150 записей уникальных вышло 144

страница поиска весит 1.6 МБ и отдаётся за 2–4 секунды, против компактного JSON 20 запросов подряд без пауз прошли, один оборвался по reset, капчи не было ни разу

Скорее всего прокатит попросить Claude Code "напиши скрапер". В моей практике без лишних вопросов он обходил защиту от скрапинга cloudflare ещё и запустив субагента с поиском инфы как она устроена (узнал про ssl fingerprinting)

легального публичного способа автоматически собирать вакансии для личной аналитики фактически больше нет

Ну раз легального нет, будет нелегальный просто. ХэХэ вообще не жалко. Конченая помойка. Яркий пример того, что бывает, когда образуется монополия.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости