Hiring Signal Monitor: Open Roles & Hiring Velocity avatar

Hiring Signal Monitor: Open Roles & Hiring Velocity

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Hiring Signal Monitor: Open Roles & Hiring Velocity

Hiring Signal Monitor: Open Roles & Hiring Velocity

Track open roles and hiring velocity from companies' Greenhouse and Lever job boards as a B2B sales and expansion trigger. New-role and velocity-spike alerts, with a hard cost cap. For sales, recruiting and market research.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Hamza Tariq

Hamza Tariq

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

20 days ago

Last modified

Share

Hiring Signal Monitor — track open roles & hiring velocity for sales triggers

Turn a company's hiring into a sales and expansion signal. A hiring signal monitor / job-postings scraper / extractor / data API / feed that reads companies' public Greenhouse and Lever job boards and surfaces the actual SIGNAL — which functions a company is hiring for, how fast, and where — not just raw rows. Every open role is normalized to one schema with a normalized function (Engineering, Sales, Product, …), a real derived seniority, a cleaned department, hiring velocity (postedWithinDays / isRecent), and a best-effort salary band. Flip on groupBy: "company" for one aggregated hiring summary per company — roles by function, roles posted in the last 30/90 days, top locations, remote share, and the newest roles. Repeated runs turn it into a new-role and velocity-spike monitor — for B2B sales teams, recruiters, CI/market researchers, and investors tracking talent demand.

Quick Start: click Start with the default input. With zero configuration it pulls open roles from a known public Greenhouse board and a known public Lever board and returns clean rows — company, role title, function, seniority, department, team, employment type, location, remote flag, days since posted + a recent flag, salary (when listed), open-role count, and the posting link. To track your own target accounts, paste company board tokens into greenhouseTokens (e.g. gitlab — the slug after boards.greenhouse.io/) and/or leverTokens (e.g. leverdemo — the slug after jobs.lever.co/). Set groupBy to company for one rolled-up hiring-signal summary per company. Narrow the feed with the optional filters — roleKeywords, seniority, department, locationIncludes, remoteOnly (all empty = every role). First useful results in under two minutes.

What it does

Greenhouse and Lever expose public, no-auth JSON job boards per company, so the data is clean, stable, and easy to extract — no browser, no login, and deliberately not the anti-bot Indeed/LinkedIn head. This actor:

  • pulls a company's open roles with title, cleaned department, team, employment type, location, and remote flag;
  • enriches every role with a normalized business function (Engineering, Product, Design, Data & Analytics, Sales, Marketing, Customer Success, Support, Operations, Finance, People & HR, Legal, IT, Security, Other), a real derived seniority band (intern → executive), hiring velocity (postedWithinDays + an isRecent ≤30-day flag), and a best-effort salary band (from a structured pay field where the board exposes one, else parsed from the description);
  • normalizes every role across boards to one schema with a stable, board-scoped id and a company-level open-roles count (a hiring level — the budget-and-expansion signal; tracked over scheduled runs it becomes the velocity trend);
  • with groupBy: "company", aggregates the whole board into one summary per company — open-role count, roles by function and by seniority, top locations, remote share, roles posted in the last 30/90 days, the top functions, and the newest roles;
  • on a schedule, becomes a monitor — emitting (and charging for) only roles (or company summaries) that are new or whose details changed since the last run.

The function field is deterministic-first: a built-in keyword classifier always populates it, so the actor works with no setup. Set an optional AI_API_KEY (any OpenAI-compatible endpoint — OpenRouter by default) and a single batched AI call per run refines the function for each company's bespoke department names; without a key it degrades silently to the deterministic rules.

Who it's for

B2B sales teams (hiring is a buying trigger — a company hiring five sales reps is expanding), recruiters, and market researchers tracking talent demand.

Sources & roadmap

  • Greenhouse — live today, via the public board JSON (boards-api.greenhouse.io).
  • Lever — live today, via the public board JSON (api.lever.co).
  • Other ATS / niche boards (Ashby, Workable, vertical boards) — planned follow-ons; the schema already carries a board field so they slot in without a schema change.

Input

Runs zero-config. Optional fields:

  • greenhouseTokens — one or more Greenhouse board tokens (the slug in a board URL). Leave empty for a demo run on a known public board.
  • leverTokens — one or more Lever board tokens (the slug in a Lever jobs URL). Leave empty for a demo run on a known public board.
  • roleKeywords — keep only roles whose title contains one of these (case-insensitive); e.g. ["engineer", "sales"]. Empty = every role.
  • seniority — keep only roles whose derived seniority is one of intern, junior, mid, senior, lead, executive, unknown. Empty = every level.
  • department — keep only roles whose department contains one of these. Empty = every department.
  • locationIncludes — keep only roles whose location contains one of these (e.g. ["berlin", "remote"]). Empty = every location.
  • remoteOnly — when true, keep only roles flagged remote. Default false.
  • groupByrole (default) = one row per open role with all the enriched fields; company = one aggregated hiring-signal summary per company.
  • maxItems — cap on roles returned per run (keeps runs cheap).
  • maxCostPerRunUsd — hard ceiling on spend per run (default $5).

Optional environment variable: AI_API_KEY (+ optional AI_BASE_URL, AI_MODEL) enables the AI function-refinement pass. It is never required — the actor produces a full result without it.

All filters are applied at fetch time, so you only pay for the roles you asked for. The boards have no query API; the actor fetches the public board and drops non-matching roles in-process.

Output

groupBy: "role" (default) — one role per row: company, board, title, function, seniority, department, team, employmentType, location, remote, postedDate, postedWithinDays, isRecent, salaryMin, salaryMax, salaryCurrency, openRoles, and the role sourceUrl, plus a stable board-scoped id and kind: "role".

groupBy: "company" — one summary per company: company, board, openRoles, rolesByFunction, rolesBySeniority, topLocations, remotePct, postedLast30d, postedLast90d, topFunctions, newestRoles, the board sourceUrl, a company-scoped id, and kind: "company".

See .actor/dataset_schema.json (the overview and companies views).

Notes on fields:

  • function is a normalized business function from the fixed taxonomy above — deterministic by default, AI-refined when AI_API_KEY is set.
  • postedWithinDays is whole days between the posting date and run time; isRecent is true at ≤30 days. Salary is null on all three fields when the board exposes no structured pay field and the description states no pay.
  • openRoles is the number of open roles on that company's board at fetch time — a hiring level (identical on every role row from the same board), not a per-run rate. Schedule the actor and the change in this level run-over-run is the velocity trend.
  • company for Lever rows is the board slug (e.g. leverdemo); Lever's public board JSON does not carry a display name. Greenhouse rows carry the real company_name.
  • department is cleaned of any leading internal-ID prefix (e.g. 1195 Account ExecutivesAccount Executives). It populates on Greenhouse (via the public board's departments) and on Lever (native). team and employmentType are Lever-native and are null on Greenhouse.

Pricing

Pay-per-event: a small start fee plus a per-result charge, with a hard per-run cost cap on by default — so the bill is never a surprise. In monitor mode you pay only for new or changed roles. Built on public, stable Greenhouse and Lever board APIs, so it is low-maintenance — fixes within 24h.