Career Site Jobs: Greenhouse, Lever, Ashby, Personio, Recruitee
Pricing
from $2.00 / 1,000 jobs
Career Site Jobs: Greenhouse, Lever, Ashby, Personio, Recruitee
Search 370,000+ open jobs on 15,000+ company career sites (Greenhouse, Lever, Ashby, Personio, Recruitee) without board URLs or API keys. Filter by title, location, remote, posted date and salary, or get only new jobs daily. Closed jobs never charged. $3 per 1,000.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
RetrainMap Team
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
9 hours ago
Last modified
Categories
Features
Share
Career Site Jobs API: Greenhouse, Lever, Ashby, Personio and Recruitee
Search 370,000+ open jobs on 15,000+ company job boards across five applicant-tracking systems (Greenhouse, Lever, Ashby, Personio, Recruitee) without supplying a single board URL. Describe the jobs you want (title words, location, remote, posted date, salary) and get clean, de-duplicated rows. Each job is re-read from the company's own board before it is returned, so closed jobs are dropped (and never charged) and you get the full description.
$3 per 1,000 jobs on Apify's Free and Bronze plans, less on Silver and Gold. No run fee beyond Apify's standard $0.00005 start event.
What you get
- One row per open job: title, company, location(s), country, remote / hybrid / on-site, department, employment type, posted date, salary range when the employer publishes one, job and apply links, and the description as plain text.
- A ready-made index of 18,725 live boards (16,253 with open jobs on 2026-11-15), so you never look up board tokens.
- Filters: title keywords, excluded words, location, workplace, posted since, salary published, company, platform.
- Only-new mode for scheduled runs: each run returns only jobs that entered the index since the previous run with the same filters. None repeated, none skipped.
- Duplicate postings (same company, title and location) are returned once.
- Small input that an AI agent can fill in; every field is optional.
Which tool do you need?
- One or two companies: call their board's public API yourself; it is free and needs no key (the endpoints are listed under "How it works" below).
- Many companies, or you don't know their board names: this Actor. Describe the jobs; the index already holds 18,725 live boards.
- Workday, LinkedIn or Indeed jobs: not covered here. Use a tool built for those sites.
Coverage on 2026-11-15
| Platform | Live boards | Boards with open jobs | Open jobs |
|---|---|---|---|
| Greenhouse | 6,293 | 5,492 | 193,855 |
| Lever | 2,225 | 1,724 | 65,498 |
| Ashby | 3,817 | 3,448 | 64,110 |
| Personio | 3,851 | 3,372 | 33,253 |
| Recruitee | 2,539 | 2,217 | 34,813 |
| Total | 18,725 | 16,253 | 391,529 |
102,768 of the jobs (26%) publish a salary range; 93,683 (24%) are
flagged remote. Counts change as companies open and close jobs; each run's status message and its
RUN_SUMMARY record state the date and size of the index it searched.
How it works
- The index. Board addresses were collected from Common Crawl's public URL index (the URLs of hosted job boards on each platform) and from an earlier list of verified boards, then each one was confirmed against the platform's own documented public API. Only boards that answered are kept. The index holds every open job on those boards, read from the same APIs.
- Your search runs over the index in seconds.
- The live re-check (on by default) re-reads each matching job from its board right before it
is returned: closed jobs are dropped and not charged, and the current title, location, salary
and full description are used. If a board does not answer during the run, the job is returned
from the index with
checked_live: false. TurnliveCheckoff for faster index-only rows without descriptions.
Sources, all public and documented, read without logins or keys:
| Platform | Endpoint | Documentation |
|---|---|---|
| Greenhouse | boards-api.greenhouse.io/v1/boards/{board}/jobs | Job Board API: developers.greenhouse.io/job-board.html |
| Lever | api.lever.co/v0/postings/{site} | Postings API: github.com/lever/postings-api |
| Ashby | api.ashbyhq.com/posting-api/job-board/{name} | Job Posting API: developers.ashbyhq.com |
| Personio | {company}.jobs.personio.de/xml | XML feed: developer.personio.de |
| Recruitee | {company}.recruitee.com/api/offers/ | Careers Site API: docs.recruitee.com |
Not covered: Workday, SmartRecruiters, Workable, BambooHR, Teamtailor and other systems without a documented public feed whose terms allow this use.
Input examples
Remote data engineering jobs in the US that publish a salary, posted in the last week:
{"keywords": "data engineer, analytics engineer","location": "United States","workplace": "remote","salaryOnly": true,"postedSince": "7 days","maxResults": 200}
Product jobs in Berlin or Munich, excluding senior roles:
{"keywords": "product manager, product owner","location": "Berlin; Munich","excludeKeywords": "senior, lead, head","maxResults": 100}
Every open job at a few companies:
{"companies": ["Stripe", "ramp", "Notion"],"maxResults": 2000}
A daily alert: schedule this input; after the first run, each run returns only new jobs.
{"keywords": "machine learning engineer","location": "London; Remote","onlyNew": true,"monitorName": "ml-london","maxResults": 500}
From code or an AI agent (synchronous run, rows back in the response):
curl -X POST "https://api.apify.com/v2/acts/retrainmap~ats-jobs/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"keywords": "nurse", "location": "Texas", "postedSince": "3 days", "maxResults": 50}'
Input fields
| Field | What it does |
|---|---|
keywords | Words to find in the job title. Commas separate alternatives. Every word of one alternative must appear, in any order; plurals match ("engineer" matches "Engineers", not "Engineering"). Empty = every job. |
location | City, region or country. Semicolons separate alternatives ("Berlin; London"). "Austin, TX" and "Berlin, Germany" are one place. Country names and two-letter codes match the country the board gives, or one read from the location text (a country name, or a US state). "Remote" matches remote jobs. |
workplace | any, remote, hybrid or onsite, as the board states it (or as its location text says, for boards without a workplace field). |
postedSince | "24 hours", "7 days", "2 weeks" or a date such as "2026-11-01". |
salaryOnly | Only jobs that publish a pay range. |
maxResults | Up to 50,000 per run. Newest first. |
excludeKeywords | Drop titles containing any of these words. |
companies | Company names or board slugs. |
platforms | Any of greenhouse, lever, ashby, personio, recruitee. |
onlyNew / monitorName | Return only jobs new since the previous run of this monitor. State is kept in a key-value store named ats-jobs-monitor in your account. |
liveCheck | Default on. Off = faster index-only rows, no descriptions, no closed-job check. |
Output
{"id": "greenhouse:americaninstitutesforresearch:5480464008","title": "Senior Project Specialist, NAEP Technical Support (Part-Time)","company": "American Institutes for Research","ats": "greenhouse","board": "americaninstitutesforresearch","url": "https://job-boards.greenhouse.io/americaninstitutesforresearch/jobs/5480464008","apply_url": "https://job-boards.greenhouse.io/americaninstitutesforresearch/jobs/5480464008","location": "US-Remote","locations": ["US-Remote","Remote (United States)"],"country": "US","remote": true,"workplace_type": "remote","remote_source": "location_text","department": "R51 - Employment & Economic Opp","team": null,"employment_type": null,"posted_at": "2026-11-12T19:57:41Z","updated_at": "2026-11-12T19:59:05Z","first_seen_at": "2026-11-13T08:43:49Z","has_salary": true,"salary_min": 124000,"salary_max": 135000,"salary_currency": "USD","salary_period": "year","salary_text": "Anticipated Annual Salary Range","description": "The Part-Time Senior Project Specialist manages research, operational, and analytic activities that support AIR’s NAEP Technical Support Contract. The role leads reviews across the ...","checked_live": true,"fetched_at": "2026-11-15T11:37:47Z"}
| Field | Meaning |
|---|---|
id | Stable id: <platform>:<board>:<job id> |
title, company | As the board publishes them. Lever, Ashby and some Personio boards do not publish a company name; it is then derived from the board slug. |
url, apply_url | Public job page and application page |
location, locations, country | Location text as published; country is the ISO code from the board or read from the location text, else null |
remote, workplace_type, remote_source | The board's own flag (ats_flag), or read from the location text (location_text) when the board has none |
department, team, employment_type | employment_type is one of full_time, part_time, contract, internship, temporary, other |
posted_at, updated_at | As published (ISO 8601, UTC) |
first_seen_at | When this index first saw the job (tracking began 2026-11-12) |
has_salary, salary_min, salary_max, salary_currency, salary_period, salary_text | Only what the board publishes; nothing is guessed from description text |
description | Plain text, first 4,000 characters (null when liveCheck is off) |
checked_live, fetched_at | Whether and when the row was re-read from the board in this run |
Pricing
Pay per event: you pay for each job row written to your dataset.
| Apify plan | Price per job | Per 1,000 jobs |
|---|---|---|
| Free, Bronze | $0.003 | $3.00 |
| Silver | $0.0025 | $2.50 |
| Gold and above | $0.002 | $2.00 |
Apify's standard start event ($0.00005 per run per GB of memory) also applies. Jobs removed by your filters, duplicates and closed jobs found by the live re-check are never written, so never charged. Set a maximum charge per run in Apify to cap any run.
Limits and honesty notes
- Keywords match job titles only, not descriptions.
- Salary appears only when the employer publishes it on the board (26% of jobs today).
countryis filled when the board gives it or the location text names a country or US state.- Descriptions are cut at 4,000 characters; follow
urlfor the full posting and to apply. - Boards move between systems; a board that stops answering leaves the index.
- Use the data for search, alerts and analysis, and link to the job page. Lever asks that its postings not be used to train AI models; do not use rows for model training.
FAQ
Do I need a Greenhouse, Lever or Ashby API key? No. Reading published postings needs no key on any of the five platforms, and this Actor uses only those public, documented endpoints.
Can I get only jobs that show a salary? Yes: switch on salaryOnly. On 2026-11-15, 26% of all jobs
in the index published a range.
How fresh is it? The index is rebuilt every 12 hours, and each returned job is re-read from its board during your run. Each run's status message states the index date.
Can I get a daily alert? Yes: onlyNew plus a monitorName, run on an Apify schedule. You pay only for new rows.
Operator
Steelyard Ventures LLC. Not affiliated with Greenhouse, Lever, Ashby, Personio, Recruitee or any employer listed. Questions or a board we should add: open an issue on this Actor's Issues tab.
Changelog
- 0.2 (2026-11-12): rebuilt around a ready-made index of company job boards on five platforms, search by keyword, location, workplace, posted date and salary, only-new mode, live re-check, new pricing ($3 per 1,000 jobs; the $0.10 run fee is gone).
- 0.1 (2026-09-05): first release; required board tokens.