Hiring Signal Monitor — new & removed jobs per company avatar

Hiring Signal Monitor — new & removed jobs per company

Pricing

from $10.00 / 1,000 company summaries

Go to Apify Store
Hiring Signal Monitor — new & removed jobs per company

Hiring Signal Monitor — new & removed jobs per company

Watch any company's career page (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee) and get open roles classified by function and seniority, plus what changed since the last run. Built for sales prospecting, recruiting intel and AI agents.

Pricing

from $10.00 / 1,000 company summaries

Rating

0.0

(0)

Developer

tatsuya handa

tatsuya handa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Hiring Signal Monitor — new & removed jobs from company career pages

Watch any list of companies and learn who is hiring for what, right now, and what changed since you last looked. The Actor reads the public job-board APIs of the most common applicant tracking systems (ATS) — no browser, no login, no HTML scraping of the career site — and returns:

  • a per-company summary: open roles, new / removed since the previous run, breakdown by function (Sales, Engineering, AI/ML, …), seniority and location, remote share, and a one-sentence llmSummary that an AI agent can read directly;
  • job records for every role that is new or removed (or every open role, if you ask for it), each classified by function and seniority, with the real apply URL.

Typical uses:

  • Sales prospecting — a company that just opened 5 sales roles or an AI-engineering team has budget and a new initiative. Feed the new records to your CRM or outreach tool.
  • Recruiting & talent intelligence — track competitors' hiring velocity by function and location.
  • Investors & analysts — headcount signals across a portfolio or a watchlist, updated daily.
  • AI agents — call it as an MCP tool: "Which of these 50 companies started hiring for security this month?"

Output

Two record types live in the same dataset; use the Company summaries and Job changes views in the Apify Console, or filter on type.

Company summary (type: "company")

{
"type": "company",
"company": "gitlab",
"ats": "greenhouse",
"status": "ok",
"openJobs": 231,
"newJobs": 4,
"removedJobs": 7,
"netChange": -3,
"remoteShare": 0.86,
"byFunction": [{ "name": "Engineering", "count": 85 }, { "name": "Sales", "count": 40 }],
"bySeniority": [{ "name": "Mid", "count": 120 }, { "name": "Senior", "count": 51 }],
"byLocation": [{ "name": "Remote, US", "count": 60 }],
"newByFunction": [{ "name": "Sales", "count": 3 }],
"baseline": false,
"previousRunAt": "2026-09-03T04:00:12.000Z",
"checkedAt": "2026-09-04T04:00:09.000Z",
"llmSummary": "gitlab (greenhouse) has 231 open roles. Since 2026-09-03: +4 new, -7 removed (net -3). Largest functions: Engineering 85, Sales 40, Other 31. New roles concentrated in: Sales 3. 86% remote-friendly."
}

Job record (type: "job")

{
"type": "job",
"company": "gitlab",
"ats": "greenhouse",
"change": "new",
"id": "8503792002",
"title": "Account Executive - Italy",
"function": "Sales",
"seniority": "Mid",
"location": "Remote, Italy",
"department": "EMEA - Commercial",
"remote": true,
"employmentType": null,
"url": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"postedAt": "2026-08-31T17:56:36-04:00",
"firstSeen": "2026-09-04T04:00:09.000Z",
"checkedAt": "2026-09-04T04:00:09.000Z"
}

change is one of baseline (first run), new, removed (carries lastSeen), or open (only with emitUnchangedJobs).

Functions: Sales, Marketing, Customer Success, Engineering, AI/ML, Data, Product, Design, Operations, Finance, People/HR, Legal, Security, IT, Other. Seniority: Intern, Junior, Mid, Senior, Lead/Staff, Manager, Director, VP, C-level. Classification is rule-based on the title (deterministic, no LLM), so results are stable between runs.

Supported sources

ATSAccepted inputsSource
Greenhousehttps://boards.greenhouse.io/<token>, https://job-boards.greenhouse.io/<token>, greenhouse:<token>public Job Board API
Leverhttps://jobs.lever.co/<slug>, lever:<slug>public Postings API
Ashbyhttps://jobs.ashbyhq.com/<slug>, ashby:<slug>public Job Posting API
Workablehttps://apply.workable.com/<slug>, workable:<slug>public widget API
SmartRecruitershttps://careers.smartrecruiters.com/<CompanyId>, smartrecruiters:<CompanyId>public Posting API
Recruiteehttps://<slug>.recruitee.com, recruitee:<slug>public Offers API

You can also pass a company homepage (e.g. https://www.anthropic.com). The Actor scans the homepage and common career paths (/careers, /jobs, …) for a supported ATS link, and falls back to guessing the ATS token from the domain. Companies whose ATS cannot be found are reported with status: "ats_not_found" and are not charged as summaries.

Input

{
"companies": [
"https://boards.greenhouse.io/gitlab",
"https://jobs.ashbyhq.com/openai",
"https://www.anthropic.com",
"lever:leverdemo"
],
"sinceLastRun": true,
"emitUnchangedJobs": false,
"includeDescriptions": false
}
FieldDefaultMeaning
companiesHomepages, career-page URLs or ats:slug references. One per company.
sinceLastRuntrueEmit job records only for roles that are new or removed since the previous run of this Actor for the same company. The first run is a baseline (all roles emitted with change: "baseline").
emitUnchangedJobsfalseAlso emit every currently open role (change: "open").
includeDescriptionsfalseAdd a plain-text description (max 4000 chars) to job records.
maxJobsPerCompany2000Safety cap.
stateStoreNamehiring-signal-stateNamed key-value store that remembers the last snapshot per company. Use a different name per watchlist.
concurrency3Companies checked in parallel.

Schedule the Actor (daily or weekly) with the same input and you get a clean change feed: only what is new or gone.

Monitor mode, watchlists and the free first run

All handa-labs monitors share the same controls:

FieldDefaultMeaning
modemonitormonitor remembers what was returned and emits only changes on later runs; snapshot returns everything matching on every run
watchlistIddefaultlabel for this watchlist; runs with the same ID share memory, different IDs are independent
emitBaselinefalsethe first monitor run establishes a free baseline (only the Actor-start fee) and returns counts; set true to also receive, and pay for, every current item on that first run

Schedule the Actor with the same input and you get a clean change feed. Nothing is charged for records on the first run unless you ask for them.

Pricing

Pay-per-event. You are charged per company summary and per job record emitted. With sinceLastRun on, a daily schedule over 100 companies typically emits a handful of job records per day, so the cost is dominated by the 100 summaries.

Notes & limits

  • Only roles that the company publishes on its public job board are visible. Internal or unlisted roles are not.
  • Data is fetched from the ATS vendors' public endpoints at low request rates (one request per company for most ATS). No proxies are required.
  • The Actor stores only job IDs, titles, locations and URLs in its state store; no personal data is collected.
  • Companies using an unsupported ATS (Workday, iCIMS, SAP SuccessFactors, Taleo, …) are reported as ats_not_found. Support for more systems is added based on demand — open an issue on the Actor page.

日本語

企業リストを渡すと、各社の採用ページ(Greenhouse / Lever / Ashby / Workable / SmartRecruiters / Recruitee の公開API)から今の求人と**前回からの変化(新規・削除)**を返します。ブラウザもログインも不要で、企業サイトのHTMLは取得しません。

  • 会社ごとの要約: 求人数、前回比の新規/削除、職種(営業・エンジニア・AI/ML…)と職位の内訳、リモート比率、AIエージェントがそのまま読める1文の llmSummary
  • 求人レコード: 新規・削除された求人(希望すれば全件)。職種・職位を分類済み、応募URL付き

使いどころ: 営業(「営業を5人採り始めた=予算がある」)、採用競合分析、投資先の人員シグナル、AIエージェントからの呼び出し。

入力: 企業のホームページURL、採用ページURL、または greenhouse:token 形式。ホームページを渡すと採用ページを自動で探します。 スケジュール実行すると「前回以降に増えた・消えた求人だけ」が届きます。初回はベースライン(全件)です。 分類はルールベース(LLM不使用)なので、実行のたびに結果が変わることはありません。 料金: 会社要約1件ごと、求人レコード1件ごとの従量課金。