Career Site Job Search: New Greenhouse & Lever Jobs
Pricing
from $1.40 / 1,000 jobs
Career Site Job Search: New Greenhouse & Lever Jobs
Search jobs across 6,000+ companies' Greenhouse and Lever career sites without naming them: by title, location, remote, company, department, salary and date (24h, 7d), with live descriptions and only-new mode. One index refreshed daily; every job checked on its board before you pay.
Pricing
from $1.40 / 1,000 jobs
Rating
0.0
(0)
Developer
Michael Costa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
What does Career Site Job Search do?
Career Site Job Search searches jobs across 6,000 companies' career sites on Greenhouse and Lever at once, without naming the companies: by job title, location, remote, company and posting date (last 24 hours, 7 days...). It reads one index of about 210,000 open jobs, rebuilt daily from the companies' own public job boards, and checks each job live on its board before you pay for it.
It is not a LinkedIn or Indeed scraper, and it doesn't cover every ATS: only companies whose careers page runs on Greenhouse or Lever (why).
Input fields · API · Use it from Claude, ChatGPT or Cursor (MCP)
Jump to: New jobs feed · Fields · Price · How to use · Coverage · Input · Output · AI agents (MCP) · Limits · FAQ
Try it in one click: the input comes pre-filled with software engineer, posted in the last 7 days, 20 jobs.
That's 20 jobs, or about $0.04 (20 × $0.002, plus $0.00005 for the run start). Then replace it with what you
actually want.
Get new jobs every day, in Slack, email or a webhook
With Only new jobs since the last run on, each run returns (and charges for) only the jobs that search hasn't returned before. A run with nothing new costs only the $0.00005 start fee.
- Set your search (for example Job title keywords
data engineer, Locationsremote, Posted within7d), turn on Only new jobs since the last run ("onlyNewJobs": true), and click Start. This first run returns the matching jobs and is the baseline. - Click Save as a new task (top right of the actor page). The memory is kept in a store in your own account, one per combination of filters, so the task keeps comparing with its own last run and other searches never hide its jobs.
- In Apify Console, open Schedules, click Create new, set how often in Schedule setup (daily is enough: the index is rebuilt once a day), then Add your task.
- On the task, open the Integrations tab and pick where the new jobs go:
- Slack: click Configure, sign in, pick the workspace and channel, and the "run succeeded" event. A
useful message:
{{resource.statusMessage}}and a link,<https://console.apify.com/storage/datasets/{{resource.defaultDatasetId}}|new jobs>. - Gmail: click Connect with Google, set the subject and body, and attach the dataset. It sends after each successful run.
- HTTP webhook: event
ACTOR.RUN.SUCCEEDED, your URL. Apify POSTs{"eventType": ..., "resource": {...}};resource.defaultDatasetIdis the run's dataset, andGET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=json(with your API token) returns the new jobs.
- Slack: click Configure, sign in, pick the workspace and channel, and the "run succeeded" event. A
useful message:
Apify's integrations fire after every successful run, including quiet ones: a quiet run's dataset is empty. If a run stops at Max jobs per run before it has returned everything new, the next run carries on where it stopped.
What data does Career Site Job Search return?
| Field | Example | Notes |
|---|---|---|
title | Senior Data Engineer | As the company wrote it |
companyName | Stripe | company is the board id (stripe) |
location, locations | San Francisco, CA | The company's own text; every location for multi-site jobs |
remote, workplaceType | true, remote | remote / hybrid / onsite; null when the board doesn't say |
employmentType | FULL_TIME | Lever only; null on Greenhouse |
postedAt | 2026-10-08T14:02:11Z | The board's own posting date |
salaryMin, salaryMax, salaryCurrency, salaryPeriod | 150000, 190000, USD, YEAR | From the board's salary field, or a pay range in the description; null when neither has one |
description | About the role ... | Plain text, read live; null with descriptions off |
url, applyUrl | https://job-boards.greenhouse.io/... | The job page and the application page |
firstSeenAt | 2026-10-07T23:06:43Z | When the daily index first saw the job |
verifiedAt | 2026-10-09T08:12:40Z | When this run found it still open on its board; null if the board couldn't be read |
The fields match Company Career Page Jobs Scraper, so you can go from "search all companies" to "monitor these companies" without re-mapping. The full list is under Output.
How much does it cost to search jobs across company career sites?
You pay per job returned: $2.00 per 1,000 jobs ($0.002 a job), plus $0.00005 each time a run starts. Jobs that closed since the index was built, or no longer match after the live check, are dropped before they're charged.
- The pre-filled example: 20 jobs × $2.00/1,000 = $0.04, plus the start fee.
- A month, for example: a daily "new jobs" feed for one search that finds 30 new jobs a day ≈ 900 jobs ≈ $1.80, plus 30 start fees ($0.0015).
- Caps: Max jobs per run in the input (default 100), and Maximum cost per run in the run options. The run stops cleanly at whichever comes first, and stops reading boards as soon as the limit is covered.
Never charged: jobs closed since the index was built, jobs a filter drops, jobs an only-new search returned before, and a run with nothing new beyond the start fee.
How to search jobs across company career sites
- Open Career Site Job Search and click Try for free (or Start if you're signed in).
- Fill in Job title keywords (
software engineer,account executive), and if you like Locations (Berlin,remote) and Posted within (24h,7d). - Optional: narrow it down by company, department, employment type, salary or platform, or turn off descriptions for a faster run with fields from the index only.
- Click Start, then open the Output tab and export as JSON, CSV or Excel.
Which companies and job boards does it cover?
6,000 companies with open jobs, about 210,000 jobs (index of 2026-10-08: Greenhouse 4,485 companies / 161,718 jobs, Lever 1,530 / 48,261). Mostly tech, startups and fast-growing companies, worldwide, in the language each company writes in.
- The board list starts from the open, MIT-licensed company lists of job-board-aggregator by Riley Dorrington (12,701 Greenhouse and Lever company boards). Boards with open jobs are checked daily; boards with none (or that no longer exist) are checked weekly and come back as soon as they post a job.
- Greenhouse and Lever only. Both publish their job boards for anyone to read: Greenhouse's docs say "Job Board data is publicly available", and Lever's say published postings "may be scraped by third parties". Other ATSs either aren't cleared for a stored, shared index (Ashby routes job aggregators through an opt-in partner program) or forbid automated access (Workday, iCIMS, Taleo and others). See the FAQ.
- Need a company that isn't here, or another ATS (Ashby, Recruitee, Personio, Teamtailor)? Name the company in Company Career Page Jobs Scraper, which reads it live.
Example: software engineer jobs posted this week
The pre-filled input:
{"titleKeywords": ["software engineer"], "postedWithin": "7d", "maxJobs": 20}
On Apify on 2026-10-09 (index built 2026-10-08 23:06 UTC), it matched 586 jobs in the index, read 16 companies' boards live and returned the 20 newest, from 16 companies, in 15 s: $0.04 plus the start fee. A few of them:
| Title | Company | Location | Posted | Salary |
|---|---|---|---|---|
| AI Security Software Engineer (Starshield) | SpaceX | Washington, DC | 2026-10-08 | |
| Embedded Software Engineer, Platform (Starshield) | SpaceX | Hawthorne, CA | 2026-10-08 | |
| Software Engineer II, Full Stack (Digital Products - Service) | Scout Motors | Fremont, California, United States | 2026-10-08 | $121,000 - $148,500 |
| Software Engineer, AI/ML | PlayStation Global | United States, San Diego, CA | 2026-10-08 | $150,000—$225,000 USD |
| Senior Software Engineer | Rocket Lab Corporation | Auckland, NZ | 2026-10-08 |
Input
| Field | What it does |
|---|---|
Job title keywords (titleKeywords) | Jobs whose title contains any of these words or phrases. Matching ignores case and starts at a word: engineer also finds Engineering. |
Exclude title keywords (excludeTitleKeywords) | Drop titles with any of these (senior, intern). |
Locations / Exclude locations (locations, excludeLocations) | The company's own location text: try the city and the country. remote also keeps jobs marked remote. |
Remote only (remoteOnly) | Only jobs the board marks as remote. |
Posted within (postedWithin) | 24h, 3d, 7d (default), 30d or any. On Apify's Free plan, 30d and any search the last 7 days (see Limits). |
Only new jobs since the last run (onlyNewJobs) | Return only jobs this search hasn't returned before. |
Companies / Exclude companies (companies, excludeCompanies) | By company name or board id. |
Description keywords / Exclude (descriptionKeywords, excludeDescriptionKeywords) | Checked on the live description (python, visa sponsorship). |
Departments (departments) | Department or team (Lever boards only). |
Employment types (employmentTypes) | FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, INTERNSHIP, VOLUNTEER (Lever boards only). |
Only jobs with a salary (hasSalary) | The board's salary field, or a pay range in the description. |
Job board platforms (platforms) | greenhouse, lever; empty = both. |
Include descriptions (includeDescription) | On (default): read each matching board live for descriptions and the open check. Off: index fields only, faster. |
Max jobs per run (maxJobs) | Newest first; default 100, maximum 10,000. |
Max jobs per company (maxJobsPerCompany) | So one big employer doesn't fill the run. |
{"titleKeywords": ["data engineer", "analytics engineer"],"excludeTitleKeywords": ["intern"],"locations": ["remote", "New York"],"postedWithin": "7d","onlyNewJobs": true,"maxJobs": 100}
Output
Every job has the same fields. Fields the board doesn't publish are null.
One job from the example run (real output; description shortened):
{"id": "greenhouse:scoutmotors:5260681007","platform": "greenhouse","company": "scoutmotors","companyName": "Scout Motors","title": "Software Engineer II, Full Stack (Digital Products - Service)","department": "Commercial Operations","team": null,"location": "Fremont, California, United States","locations": ["Fremont, California, United States"],"country": null,"remote": false,"workplaceType": null,"employmentType": null,"postedAt": "2026-10-08T22:45:24Z","updatedAt": "2026-10-08T22:47:15Z","url": "https://job-boards.greenhouse.io/scoutmotors/jobs/5260681007","applyUrl": "https://job-boards.greenhouse.io/scoutmotors/jobs/5260681007","salaryMin": 121000,"salaryMax": 148500,"salaryCurrency": "USD","salaryPeriod": "YEAR","salaryText": "$121,000 - $148,500","salarySource": "description","description": "Here at Scout Motors, we're carrying forward the heritage of one of the most iconic American vehicles in history. A vehicle dating back to 1960. One that ...","firstSeenAt": "2026-10-08T23:06:43Z","verifiedAt": "2026-10-09T00:40:44Z","indexedAt": "2026-10-08T23:06:43Z","scrapedAt": "2026-10-09T00:40:44Z"}
id is platform:company:job id and stable across runs, so you can use it to deduplicate. Jobs come newest first.
The run's RUN_STATS record says when the index was built, how many jobs matched, how many closed since the index
was built (closedSinceIndex), and any board that couldn't be read live, with the reason. Jobs whose board gives no
posting date (a few Greenhouse boards) come last.
Run it on a schedule, or from your own code
- Save your input as a task (Save as a new task, top right of the actor page) and add it to a schedule (Console → Schedules → Create new).
- Collect results: download the dataset as JSON, CSV or Excel; fetch the latest run's results from the
API
(
GET https://api.apify.com/v2/actor-tasks/<task id>/runs/last/dataset/items?status=SUCCEEDED&format=csv, with your API token); let a webhook tell your system when a run succeeds; or connect it to Make, Zapier or n8n through Apify's integrations.
Can I use Career Site Job Search from an AI agent (MCP)?
Yes, through Apify's MCP server, from Claude, ChatGPT, Cursor or any other MCP client. Add this to your client's MCP configuration (or let the agent find it with the server's actor search); your client signs you in to Apify:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=humble-echidna/ats-job-search"}}}
To use an Apify API token instead of signing in, add
"headers": {"Authorization": "Bearer <APIFY_TOKEN>"} next to url.
An agent should pass the search and a small cap, e.g.
{"titleKeywords": ["product designer"], "locations": ["London"], "postedWithin": "7d", "maxJobs": 20}"includeDescription": false when it only needs titles and
links.
Who it's for
Job boards and newsletters that publish fresh tech and startup roles every day, recruiters and sourcers watching who is hiring for a role, and job seekers who want one daily feed across thousands of companies instead of checking each careers page.
Why this one?
- Checked before you pay. With descriptions on (the default), every job is re-read on its own board in the same run: one that closed since the index was built is dropped, not charged.
- Only new jobs, per search. A daily feed returns each job once, with the memory in your own account.
- $2.00 per 1,000 jobs, with the same fields as Company Career Page Jobs Scraper.
- Polite and safe. The index is refreshed with conditional requests (an unchanged board answers with an empty
304), with an honest User-Agent (
HumbleEchidnaApify), each site's robots.txt and Lever's crawl delay.
Limits
- Two platforms, 6,000 companies. Companies on other ATSs, or on Greenhouse and Lever but not in the board list, aren't in the index (see coverage).
- Daily index. A job posted after the last rebuild appears in the next one, so
24hmeans "posted in the last 24 hours and already indexed". There is no 1-hour window. - Greenhouse's job list has no departments or employment types, so those filters keep only Lever jobs.
- Description keywords are checked on each candidate company's live board. A run stops once 400 companies read live gave it no job (closed, or no keyword match), so combine them with title keywords or a short window. The status message says when a run stopped there.
- Free plan: the last 7 days. On Apify's Free plan,
30dandanysearch jobs posted in the last 7 days, and the status message says so. Any paid Apify plan searches 30 days or any time. - Locations are free text as each company writes them; there is no geographic radius search or country code mapping.
- No AI enrichment (seniority, skills, visa) and no LinkedIn company data.
FAQ
Is it legal to search jobs across company career sites?
It reads only the job boards Greenhouse and Lever publish for anyone to read: Greenhouse's Job Board API ("Job Board data is publicly available, so authentication is not required for any GET endpoints") and Lever's postings API ("These jobs may be scraped by third parties"). Neither platform's published terms restrict reading its public job boards; their terms of service are contracts with their customers. No login is used. It collects job postings only: no recruiter names, emails or applicant data.
How fresh is the data?
The index is rebuilt once a day; each run's RUN_STATS (indexBuiltAt) and status message say when. With
descriptions on, every job you get was also found open on its board during your run (verifiedAt).
Why isn't my company (or Workday, Ashby, LinkedIn) in the results?
Only companies whose careers page runs on Greenhouse or Lever and that are in the board list are indexed. Workday, iCIMS, Taleo, SmartRecruiters and others forbid automated access in their terms or robots.txt. Ashby's public API is documented for a company's own careers page, and Ashby lets each customer choose which job aggregators get its jobs, so it isn't in a shared index. To track named companies on six ATSs (Ashby included), use Company Career Page Jobs Scraper.
Why did a search return nothing, or fewer jobs than expected?
Check Posted within first (the default is 7 days), then the keywords: they match at the start of a word, so
ops finds "Ops Manager" and "DevOps" doesn't match ops. RUN_STATS says how many jobs matched in the index
(matched) and how many closed since it was built (closedSinceIndex).
Can I get only new jobs since my last run?
Yes: turn on Only new jobs since the last run and schedule the search (how). Each combination of filters has its own memory in your account.
How is this different from a job database like fantastic.jobs, Hirebase or Jobo?
Those index far more sources (millions of jobs, dozens of ATSs, AI-extracted fields and company data) at $3-12 per 1,000 jobs on Apify's Starter plan. This one covers Greenhouse and Lever only, at $2.00 per 1,000, and checks every job on its board before charging. Pick it when your audience is tech and startup roles and you want verified, fresh links at a low price.
Related actors
| Actor | Use it when |
|---|---|
| Company Career Page Jobs Scraper | You know the companies: all their jobs on six ATSs, with closed and changed jobs |
| Greenhouse Jobs Scraper | Named companies on Greenhouse only |
| Lever Jobs Scraper | Named companies on Lever only |
| Remote Jobs Scraper | Remote job boards: We Work Remotely, Remote OK and Python.org Jobs |
Feedback and support
Found a bug, or need a field, filter or company that isn't here? Open an issue on the Issues tab with the input you used.
Versions
Current version: 0.1. See the Changelog tab for what changed in each version.