Слогер Создать блог
Карьера

Как отслеживать найм в 4400+ компаниях через Greenhouse Job Board API

Публичный API Greenhouse отдаёт живые вакансии в JSON без ключа и логина, но по одной доске за вызов. Разбираем, что он возвращает, где ломается ручной сбор и как из этого сделать регулярный датасет.

Greenhouse — это ATS, на котором держатся карьерные страницы тысяч компаний: Stripe, Airbnb, GitLab, Anthropic. Каждая открытая вакансия живёт на публичной доске вида boards.greenhouse.io/…, и это едва ли не самый честный сигнал о том, что в компании происходит прямо сейчас. Отдел продаж читает по найму готовность покупать, рекрутер получает список целей, аналитик — картину по зарплатам.

Загвоздка в том, что API у Greenhouse есть, а удобного способа забрать вакансии сразу по всем компаниям — нет. Ниже: что доступно из коробки, где ручной сбор разваливается и как выглядит конвейер, который не надо чинить каждую неделю.

Два API Greenhouse, и нужен вам второй

Интерфейсов два. Harvest — приватный, для работодателей: без ключа к компании, где вы не работаете, туда не попасть. Job Board — публичный и только для чтения, задокументирован для интеграторов, которые строят сценарии отклика на вакансии.

КритерийHarvest APIJob Board API
Доступключ работодателяпубличный, ключ не нужен
Режимчтение и записьтолько чтение
За один вызовданные компании-владельца ключаодна доска
Список всех досок—не публикуется
Документациядля работодателейdevelopers.greenhouse.io/job-board.html

Ограничения Job Board API простые и неприятные: один вызов — одна доска, токен доски надо знать заранее, а перечня всех досок Greenhouse не публикует вообще. Для одной компании и одного раза этого хватает. Для вопроса «кто в моей нише сейчас набирает людей» — нет.

Что приходит в ответе

Строка на каждую открытую вакансию, структурированный JSON. Поля такие:

ПолеПримерЧто рядом
titleAccount Executive - ItalycompanyName, boardToken, id, url
locationRemote, ItalyisRemote, departments, offices
dateUpdated2026-08-03T16:43:10-04:00метка работодателя, есть и datePublished
salaryDerivedmin 71400, max 126000, currency EURразобранный диапазон, с period; salaryRaw — дословный текст вакансии

Про зарплату отдельно. salaryRaw — это фраза из текста вакансии как есть, salaryDerived — уже разобранные min, max, currency и period. Именно здесь чаще всего отваливаются самодельные парсеры: регулярка, заточенная под доллары, молча пропускает вакансии в евро.

Ручной путь: работает, пока компаний три

Схема элементарная: скрипт дёргает публичный эндпоинт по токену доски и сравнивает ответ со вчерашним файлом. На трёх компаниях — вполне. На тридцати выясняется, что токен доски не совпадает с названием компании, и начинается чтение исходников страницы. Описания приходят HTML-ом, зарплата спрятана внутри предложения, диффам нужна база, а не json-файл. И главное: эндпоинта «все компании на Greenhouse» не существует.

Ничего сложного ни в одном из шагов. Всё вместе — обслуживание. А хотелось датасет.

Кому это нужно

  • Продажи и GTM. Найм читается как сигнал покупки: если у компании разом открылись роли в отделе продаж, у неё, скорее всего, появился бюджет и новая нагрузка на процессы.
  • Рекрутеры. Один запрос — все открытые роли по списку целевых компаний, с локациями и вилками.
  • Аналитики рынка труда: скорость появления вакансий, прозрачность зарплат, переезд ролей в другие локации.
  • LLM-агенты. Живые вакансии с Markdown-описанием — готовый контекст для модели.

Как собрать конвейер

Дальше конкретика. Готовый актор для Job Board API на Apify закрывает пробелы публичного интерфейса: внутри справочник из 4400+ проверенных досок, парсер зарплат и фильтры, которые отрабатывают до начисления за строки. Мёртвые доски не тарифицируются.

  1. Соберите список досок. Либо свои токены и URL-ы, либо сплошной проход по встроенному справочнику: discoveryQuery ищет по названиям компаний, maxCompanies ограничивает размах. Режим companiesOnly отдаёт по строке на компанию — boardToken, boardUrl и актуальный jobCount. Это первый запуск, когда надо понять, кто тихо наращивает штат в вашей нише.
  2. Сузьте выборку. titleKeywords режет по словам в заголовке, maxJobs ставит потолок.
  3. Решите, что делать со временем. updatedAfter со значением вида 25h на ежедневном расписании отдаёт только то, что изменилось со вчера, без списка уже виденного. publishedAfter оставляет лишь новые роли.
  4. Забирайте вилки. Опубликованные диапазоны идут дословно в salaryRaw, разобранные — в salaryDerived.
  5. Поставьте на расписание. Один запуск — снимок, серия запусков — временной ряд: по нему видно, как компания открывает двенадцать инженерных ролей задолго до любого пресс-релиза.

Нужен дешёвый индекс — режим urlsOnly вернёт только id, заголовок, компанию, ссылку и метки времени. Из Python это вызов актора через apify-client: в run_input уходят companies, titleKeywords и maxJobs, а из датасета берутся строки, у которых resultType равен job. Каждая несёт title, companyName, location, dateUpdated, salaryDerived и url. Через REST (api.apify.com/v2/acts/…) или в консоли — то же самое, просто другим способом.

Ключ Harvest, логин и подписка для чтения публичных досок не нужны: предустановленный запуск открывает доску Stripe с включённым Markdown и лимитом в 100 вакансий.

Вакансии как инструмент для LLM

Актор отдаётся по MCP, и Claude, Claude Code, Cursor и ChatGPT получают инструмент greenhouse-job-board-api, который отвечает на вопрос «кто из этих двадцати компаний открыл sales-роли за неделю» живыми данными, а не памятью модели. Адрес сервера: mcp.apify.com/?tools=actors,docs,johnvc/greenhouse-job-board-api — в Claude Code он добавляется командой claude mcp add --transport http apify. Описания вакансий приходят в Markdown по умолчанию, так что вычищать HTML перед подачей в модель не надо.

Где обычно спотыкаются

  • Ждут единого эндпоинта по всем компаниям. Его нет — есть справочник досок и цикл по токенам.
  • Путают токен доски с доменом компании. Совпадает редко.
  • Парсят зарплату регуляркой по долларам и теряют вакансии в евро.
  • Считают, что одного запуска достаточно. Снимок говорит «столько-то вакансий», серия — «вот здесь стало на двенадцать больше».

Публичный Job Board API Greenhouse — это не про «скачать все вакансии мира». Это один вызов на одну доску, зато с живыми данными, зарплатами и метками времени работодателя. Если компаний меньше пяти, хватит скрипта и терпения. Если нужен регулярный поток по сотням и тысячам досок, справочник, фильтры по времени и парсинг вилок придётся собрать самому — или взять готовый конвейер и потратить время на разбор данных вместо поддержки парсера.

По материалам: career. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (0)

Войдите, чтобы комментировать.

Пока нет комментариев. Будьте первым.

Стартапы

Как продать первую услугу, когда тебя никто не знает: 29 писем, 7 постов и два платежа по $5

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

Слогер 29.10.2026 ▲ 0
Карьера

Разбор: WARN Act по-гавайски — 60 дней на уведомление, доплата к пособию и штраф $500 в день

На Гавайях действует своя версия закона о предупреждении массовых увольнений: порог ниже федерального, четыре конкретных триггера и доплата к пособию по безработице. Разбираем, кого это касается и чем грозит нарушение.

Слогер 29.10.2026 ▲ 0
Разработка

Как AI-код-ревью ускоряет онбординг разработчика — и когда мешает учиться

Большая часть онбординга происходит в комментариях к пулл-реквестам, а не в документации. Разбираю, что даёт AI-ревью новичку, откуда оно берёт неписаные конвенции команды и где начинается вред.

Слогер 29.10.2026 ▲ 0
Карьера

Почему увольнение 30 человек не требует предупреждения за 60 дней: разбор WARN и что делать сотруднику

Федеральный закон США срабатывает только на крупных сокращениях, а мелкие проходят мимо — и не попадают в статистику. Разбираем пороги, оговорку про 90 дней и шаги, которые доступны уволенным.

Слогер 29.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Маркетинг

Как запустить продукт на маленькой базе подписчиков: 5 писем, которые продают без фальшивого дефицита

Одно письмо-анонс почти никогда ничего не продаёт — даже на списке из 40 человек. Разбираем пятидневный ритм рассылки, где каждое письмо решает свою задачу, и даём готовый шаблон последнего письма.

Слогер 28.10.2026 ▲ 1
Разработка

Как выгрузить вакансии и зарплатные вилки из Greenhouse API: разбор подводных камней

Любая доска Greenhouse отдаётся публичным JSON без ключа — целиком, одним ответом. Но чтобы данные были пригодны, нужно знать пять вещей про флаги, экранирование и двойной счёт вакансий.

Слогер 28.10.2026 ▲ 0
Маркетинг

Переезд (миграция) с Битрикс24 и amoCRM без потери данных: в Fluxs появился модуль миграции

4 000 контактов в Битрикс24. Сотни сделок. Задачи за несколько лет. И всё это нужно перенести в новую CRM? Раньше такой переезд мог занять несколько дней. А иногда именно из-за переноса данных компании годами оставались в неудобной системе. Мы решили эту проблему. 🚀 В Fluxs появился модуль «Миграция данных». Теперь можно переносить контакты, сделки, задачи, проекты и базу знаний из Битрикс24, amoCRM, Jira, Яндекс Трекера и Confluence. А если вашей системы нет в списке — загрузить данные через Excel, CSV или JSON.

fluxs.ru 27.10.2026 ▲ 1
Fluxs lenta
Реклама · fluxs.ru
Карьера

Чем Cal-WARN отличается от федерального WARN: разбор порогов, уведомлений и штрафов

Калифорния требует предупреждать о массовых сокращениях за 60 дней — как и федеральный закон США. Только порог ниже, парт-тайм считается, а правило одной трети не действует. Разбираем, что это меняет для работника и работодателя.

Слогер 27.10.2026 ▲ 0
Карьера

WARN Act: кто считается работодателем при массовом сокращении — разбор для дочек, холдингов и франшиз

По американскому закону уведомление за 60 дней обязан дать только работодатель. Разбираем, как регуляторы решают, какое юрлицо им является, и что делать, если в бумаге стоит незнакомая компания.

Слогер 27.10.2026 ▲ 0
Разработка

Разбор: почему профессию разработчика хоронят каждые 20 лет и как работать, когда всё меняется

Паника вокруг ИИ — не первая волна перемен в отрасли: похожие прогнозы звучали и в 1961 году, и в 2011-м. Разбираем, что в нынешней тревоге реально, а что стоит воспринимать как фоновый шум.

Слогер 27.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Карьера

Страх провала и страх свидетелей: чем они отличаются и как начинать новое, когда страшно

«Я пока недостаточно хорош» — честная и бесполезная фраза. Обычно дело не в навыке, а в конкретных людях, которые увидят вашу первую попытку. Разбираем, как уменьшить ставку и всё-таки начать.

Слогер 26.10.2026 ▲ 0
Карьера

Почему удалёнка платит меньше — и в каких профессиях всё наоборот: разбор 8 049 вакансий

Медианная вилка на удалёнке ниже офисной на 6,5%. Но внутри функций разрыв меняет знак: безопасность и продажи получают премию за удалёнку, data/ML — самую большую скидку. Показываю, как читать эти цифры на переговорах.

Слогер 26.10.2026 ▲ 0