Company Hiring Signals API - New Jobs, Closed Jobs, History
Pricing
from $1.40 / 1,000 results
Company Hiring Signals API - New Jobs, Closed Jobs, History
Company hiring signals from our own daily archive of public job boards (Greenhouse, Lever and Ashby) for 813 tech and startup companies. Per company and day: open jobs, new postings, closed postings (missing two days in a row) with days open, departments and remote share. Ask which companies are hir
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Martin Petrov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Which companies are hiring fast right now, which teams are they growing, and which roles just closed? Job boards only show today. This actor answers from our own daily archive of public job boards (Greenhouse, Lever and Ashby) for 813 tech and startup companies and returns clean JSON rows.
No login, no proxies, no scraping on your run: the actor reads our archive, so results come back in seconds. Company data only, no recruiter names or other personal data.
Use cases
- B2B sales intent signals. A company that adds 40 sales roles or 20 engineers is growing and buying tools. Rank companies by new jobs and reach out while the budget is fresh.
- Recruiters and agencies. See which companies open many roles in a department, and which roles closed (filled or pulled) and after how many days.
- Investors and analysts. Track startup growth through open-job counts per day, hiring velocity and remote share.
- Job seekers. Alert feed: new jobs matching your keywords, location or remote preference at the companies you care about.
What makes this one different
- Daily history, not a live snapshot. Scrapers show job boards as they are right now. Our archive stores open jobs per company per day since 2026-11-03 and grows every day. A clone cannot backfill the days it did not record.
- New and closed detection. New = first seen after the baseline. Closed = missing from the board 2 days in a row, with days open for each closed posting.
- Hiring velocity per company: change in open jobs, percent change, new and closed jobs, top departments and remote share.
- One call for 813 companies instead of crawling hundreds of job boards yourself.
Honest limits: coverage is 813 companies on Greenhouse, Lever and Ashby (mostly tech and startups, many in the US), not the whole market. Closed postings and days open become meaningful after a few days of history, so closed_jobs can be empty in the first days (the run still succeeds). For any company that is not in the archive use the live ATS Jobs Aggregator.
Modes
| Mode | What you get |
|---|---|
top_hiring (default) | Companies ranked by new jobs, open jobs, change in open jobs or closed jobs over lookbackDays |
companies | Current numbers plus the daily history (open, new, closed jobs) of the companies you list |
new_jobs | Job feed of postings first seen after the baseline, with filters |
closed_jobs | Postings that disappeared, with daysOpen |
open_jobs | Currently open postings, with filters |
How to use it (step by step)
- Click Try for free.
- Keep the default (top 50 companies by new jobs) or choose a mode.
- Click Start and download JSON, CSV or Excel, or call it by API.
API example (copy and paste)
Replace MY_APIFY_TOKEN with your token from Apify Console, Settings, Integrations.
curl -s -X POST "https://api.apify.com/v2/acts/martin10291~company-hiring-signals-history/run-sync-get-dataset-items?token=MY_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"top_hiring","sortBy":"newJobs","limit":20}'
New engineering and sales jobs at target companies:
curl -s -X POST "https://api.apify.com/v2/acts/martin10291~company-hiring-signals-history/run-sync-get-dataset-items?token=MY_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"new_jobs","companies":["stripe","writer"],"keywords":["engineer","sales"],"limit":50}'
Use it from AI agents (MCP)
Add the actor to Claude, Cursor or any MCP-capable agent with the Apify MCP server:
https://mcp.apify.com?tools=martin10291/company-hiring-signals-history
Then ask: "Which companies added the most sales roles this month?" The output is flat, documented JSON.
Alerts: new jobs at my target companies
Set onlyNew to true and a monitorId. In the job modes (new_jobs, closed_jobs, open_jobs) you get each posting once. In top_hiring and companies modes you get only rows whose open, new or closed job counts changed since the last run with the same Monitor ID (change is new or changed). The first run reports everything. Schedule it daily and connect a webhook, Slack or email. Each result is paid for once.
Input
| Field | Default | Description |
|---|---|---|
mode | top_hiring | top_hiring, companies, new_jobs, closed_jobs or open_jobs |
sortBy | newJobs | Ranking for top_hiring: newJobs, openJobs, openJobsDelta, closedJobs |
minOpenJobs | 5 | Skip tiny boards (top_hiring) |
lookbackDays | 30 | Compare with this many days ago (top_hiring) |
companies | empty | Board slugs or names (required for companies mode, filter in job modes) |
keywords | empty | Job title contains any of these (job modes) |
location | empty | Location contains any of these (job modes) |
department | empty | Departments to keep (job modes) |
remoteOnly | false | Only remote postings (job modes) |
ats | empty | greenhouse, lever, ashby |
since | empty | YYYY-MM-DD (job modes) |
limit | 50 | Max rows (1-1000) |
onlyNew | false | Only new or changed rows since last run |
monitorId | default | Separate memory per watch list |
Output example (top_hiring mode, real data from 2026-11-04)
{"company": "Writer","companySlug": "writer","ats": "ashby","openJobs": 91,"openJobsThen": 46,"openJobsDelta": 45,"openJobsDeltaPct": 97.8,"newJobs": 45,"closedJobs": 0,"remoteSharePct": 100.0,"topDepartments": [{"department": "Engineering, product & design", "openJobs": 36},{"department": "Delivery & customer success", "openJobs": 28},{"department": "Sales", "openJobs": 15}],"lastChecked": "2026-11-04","comparedWith": "2026-11-03","day": "2026-11-04","archiveFrom": "2026-11-03","archiveSnapshots": 2}
Job modes return one posting per row, for example from new_jobs:
{"company": "Censys","companySlug": "censys","ats": "greenhouse","jobId": "8846269002","title": "Software Engineer II (Backend)","department": null,"location": "Remote (US/Canada)","remote": true,"url": "https://job-boards.greenhouse.io/censys/jobs/8846269002","firstSeen": "2026-11-04","lastSeen": "2026-11-04","closedAt": null}
closed_jobs rows also contain daysOpen and daysOpenNote. Fields the job board does not provide (for example department) are null.
Pricing
Pay per result, $2 per 1,000 results. The Run summary record (RUN_SUMMARY) reports counts, the archive range and lastError.
FAQ
Where does the data come from? From our own daily snapshots of public company job boards on Greenhouse, Lever and Ashby, not from your run.
Which companies are covered? 813 tech and startup companies, many in the US. Use the ATS Jobs Aggregator for any other company.
How far back does history go? To 2026-11-03. Each day adds one snapshot, so lookbacks get more meaningful over time.
Why is closed_jobs empty? A posting counts as closed after it is missing 2 days in a row, so this is normal in the first days. The run still succeeds and RUN_SUMMARY explains it.
Is personal data included? No. Only company and job posting data, no recruiter or candidate names.