HireHeat Jobs — Career Site Job Listings from 12,000+ Companies
Pricing
Pay per event
HireHeat Jobs — Career Site Job Listings from 12,000+ Companies
Search open jobs straight from 12,000+ company career sites (Greenhouse, Ashby, Workable, SmartRecruiters, Recruitee; Lever via company domains). Keyword, location, remote and date filters, newest first, salary where posted. Monitor mode returns only new jobs for daily job alerts. $0.002 per job.
Pricing
Pay per event
Rating
0.0
(0)
Developer
CyberMax
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Search job listings straight from company career sites: 12,000+ employers' public job boards on Greenhouse, Ashby, Workable, SmartRecruiters and Recruitee (plus Lever for any company you name), filtered by title keywords, location, remote and posted date, newest first. One clean JSON schema for every job, ready for a job board, a lead list or an AI agent.
$0.002 per job returned + $0.02 per search. 1,000 jobs cost $2.02; a search that matches nothing costs 2 cents.
First try: the prefilled input (engineer jobs at one company, vercel, max 3 jobs) reads one career site in about a second of work plus container start and costs $0.026 ($0.02 search + 3 × $0.002).
Why HireHeat Jobs
- Straight from the source. Jobs come from each employer's own applicant tracking system, not from reposts on aggregators, so apply links go to the real posting and closed jobs disappear when the employer closes them.
- 12,331 company career sites, validated. The built-in directory was collected from the public web and every board was checked against its live ATS API (September 2026): 4,047 Greenhouse, 2,716 Ashby, 2,712 Workable, 1,053 SmartRecruiters and 1,803 Recruitee boards, about 468,000 open jobs at build time.
- Job alerts built in. Turn on monitor mode (
newOnly), schedule the Actor daily, and each run returns only postings you haven't seen. - Six times cheaper per job than the best-known career-site job API on the Apify Store ($0.012 per job at the time of writing).
Example: input
{"keywords": ["data engineer", "analytics engineer"],"locations": ["United States", "Remote"],"postedWithinDays": 14,"maxJobs": 200}
A real run of this input on Apify (23 Sep 2026) read 8,852 career sites in 5 minutes and returned 176 matching jobs, newest first. A search for 9 AI/ML job titles posted in the last 7 days returned 265 jobs.
Ready-made inputs (first try in one click)
No account yet? See real results first on the free demo page: AI & ML jobs posted this week.
Paste one into the JSON tab of the input form (or send it to the API) and press Start. Each is sized so the first run is quick and cheap; you pay only for results (Apify's compute is included in the price).
| Preset | What you get | Cost |
|---|---|---|
| 3 jobs at one company | the 3 newest matching jobs with apply links | $0.026 (1 search + 3 jobs; the lowest this tool goes) |
| Designers at 3 companies | up to 3 design jobs across the 3 boards | $0.026 or less |
| Sales jobs posted in the last 30 days (3 companies) | the 5 newest matching jobs, newest first | $0.03 |
3 jobs at one company
{"keywords": ["engineer"], "companyNames": ["vercel"], "maxJobs": 3}
Designers at 3 companies
{"keywords": ["designer"], "companyNames": ["notion", "figma", "linear"], "maxJobs": 3}
Sales jobs posted in the last 30 days (3 companies)
{"keywords": ["sales"], "companyNames": ["notion", "stripe", "ramp"], "postedWithinDays": 30, "maxJobs": 5}
Same thing from a script (returns the results directly):
curl -s -X POST "https://api.apify.com/v2/acts/cybermax~career-site-jobs/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'content-type: application/json' -d '{"keywords": ["engineer"], "companyNames": ["vercel"], "maxJobs": 3}'
Example: one job in the output
{"title": "Principal Data Engineer","company": "AvidXchange, Inc.","location": "Charlotte, North Carolina, United States","remote": false,"department": "Engineering","team": null,"employmentType": null,"salary": null,"postedAt": "2026-09-23T15:56:04.000Z","daysAgo": 0,"url": "https://job-boards.greenhouse.io/avidxchangeinc/jobs/5234647007","ats": "greenhouse","boardSlug": "avidxchangeinc","boardUrl": "https://boards.greenhouse.io/avidxchangeinc","jobId": "greenhouse:avidxchangeinc:5234647007","matchedKeywords": ["data engineer"]}
salary is filled when the employer publishes it (common on Ashby, Lever and Recruitee boards). The run's SUMMARY record in the key-value store says how many boards were searched and how many jobs matched in total.
Inputs
| Field | What it does |
|---|---|
keywords | Title contains any of these words or phrases (whole words, case-insensitive). Empty = all jobs. |
excludeKeywords | Drop titles containing any of these (e.g. intern, manager). |
locations | Location contains any of these. United States/US/USA, UK, New York/NYC, San Francisco/Bay Area and Germany match their common spellings. Remote also matches jobs flagged remote. |
remoteOnly | Only jobs marked remote. |
postedWithinDays | Only jobs first posted in the last N days (undated jobs are left out). |
maxJobs | Newest jobs first; default 500. |
newOnly + stateKey | Monitor / job-alert mode: return only jobs this search hasn't returned before (see below). monitor + monitorKey are accepted as aliases. |
ats | Limit to some platforms. Default: Greenhouse, Ashby, Workable, SmartRecruiters. Recruitee (1,803 mostly European employers) is opt-in: it rate-limits cloud servers, so it makes searches slower. |
companyNames | Only directory companies whose name contains one of these. |
companies | Search these companies instead of the directory: domains (ramp.com) or board URLs (https://jobs.lever.co/palantir). The Actor finds each company's board itself, including Lever. |
maxRunSecs | Time budget, default 300 s. Biggest employers are read first; when the budget runs out the Actor returns what it found and the SUMMARY says how many (small) boards were left unread. At the default, the unread boards hold about 1.5% of the directory's jobs, mostly small Workable boards, which rate-limit cloud servers. |
maxBoards | Search an evenly spread sample of N boards: a quick, cheap test. |
Monitor mode: job alerts
Set "newOnly": true (or "monitor": true) and run the same search on a schedule. HireHeat Jobs remembers every jobId it returned for this search (in a key-value store named hireheat-jobs-state in your Apify account, keyed by stateKey or by the filters) and each later run returns only postings it hasn't returned before, each marked:
{ "title": "…", "company": "…", "jobId": "greenhouse:vercel:6201179004", "change": "new" }
The first run returns every match as "new". Already-seen jobs are not returned and not charged, so a daily alert costs $0.02 plus $0.002 per new job. A job posting is either new or already seen (there is no "changed" state). Jobs cut off by maxJobs or a charge limit are not marked as seen, so they come back next run. Seen IDs are forgotten after 90 days. The run's SUMMARY adds newJobs and alreadySeenJobs.
Run it on a schedule
In Apify Console: Schedules → Create new → cron 0 8 * * * (daily at 8:00) → Add Actor → HireHeat Jobs with your saved input (or a saved task) and "newOnly": true. Or with the API:
POST https://api.apify.com/v2/schedules?token=YOUR_TOKEN{"name": "ml-jobs-daily","cronExpression": "0 8 * * *","timezone": "America/New_York","isEnabled": true,"actions": [{"type": "RUN_ACTOR","actorId": "cybermax/career-site-jobs","runInput": {"body": "{\"keywords\": [\"machine learning engineer\"], \"locations\": [\"United States\", \"Remote\"], \"newOnly\": true, \"stateKey\": \"ml-us\"}","contentType": "application/json"}}]}
Monitor mode makes daily runs cheap: you pay only for new postings. To get the new jobs by email or in Slack, add a webhook or email notification on Run succeeded (Actor → Integrations).
Integrations
Make: Apify app → "Run an Actor" (cybermax/career-site-jobs, input JSON, wait for finish) → "Get Dataset Items".
Zapier: Apify app → "Run Actor" action, or the "Finished Actor Run" trigger on your schedule → a Sheets / Slack / ATS step.
n8n: Apify node ("Run Actor and get dataset"), or an HTTP Request node:
POST https://api.apify.com/v2/acts/cybermax~career-site-jobs/run-sync-get-dataset-items?token=YOUR_TOKEN{"keywords": ["data engineer"], "remoteOnly": true, "postedWithinDays": 7, "maxJobs": 100}
Google Sheets: Apify's Google Sheets integration, or in a cell:
=IMPORTDATA("https://api.apify.com/v2/acts/cybermax~career-site-jobs/runs/last/dataset/items?format=csv&fields=title,company,location,postedAt,url&token=YOUR_TOKEN")
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("cybermax/career-site-jobs").call(run_input={"keywords": ["data engineer"], "locations": ["Remote"], "maxJobs": 100})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["company"], job["url"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('cybermax/career-site-jobs').call({ keywords: ['data engineer'], newOnly: true });const { items } = await client.dataset(run.defaultDatasetId).listItems();
AI agents (MCP): call it through Apify's MCP server, https://mcp.apify.com/?tools=cybermax/career-site-jobs (header Authorization: Bearer <your Apify token>). Tool input is the JSON above; output is a flat list of jobs with stable jobIds, so an agent can answer "who is hiring remote Rust engineers this week?" in one call. Claude Desktop / Cursor config:
{ "mcpServers": { "hireheat-jobs": { "url": "https://mcp.apify.com/?tools=cybermax/career-site-jobs", "headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" } } } }
When NOT to use HireHeat Jobs
- You need LinkedIn, Indeed or Glassdoor listings: this reads company career sites only.
- You need companies on Workday, iCIMS, Taleo or other enterprise ATSs: they aren't covered yet.
- You want one company's hiring trend (new roles per week, functions, seniority) rather than job rows: use HireHeat: Company Hiring Signals, which also has a monitor mode.
- You need the full job description text: the output has title, location, department, salary and the apply link, not the description body.
Also from CyberMax
- HireHeat: one hiring summary per company domain (open and new roles, functions, seniority), with hiring-spike alerts.
- Hollerdex: emails, phones and socials for the companies you find.
- DomainDNA: what a hiring company runs on (tech stack, email security, domain age).
- Logolark: company logos and favicons for your job board.
All tools: Boardroom Buys · SnapScout · Swellmeter · Gripeline · Keyfern · Linkheft · Printwren
How it works and what it collects
Every job comes from the unauthenticated JSON feed that the ATS vendor publishes for the employer's own careers page. The Actor collects no personal data and never logs in. The board directory was built from the Common Crawl URL index and each board was validated live; companies can always be searched directly with companies.
Built by CyberMax. Questions or a missing company? Open an issue on the Actor page.
Changelog
- 2026-09-23: Monitor mode documented (
newOnly/stateKey, aliasesmonitor/monitorKey; new jobs are markedchange: "new",SUMMARYaddsnewJobs/alreadySeenJobs), schedule & integration recipes, one-company prefill.