Job Search API: Jobs from Company Career Sites
Pricing
from $6.00 / 1,000 job saveds
Job Search API: Jobs from Company Career Sites
Search open jobs straight from 20,000+ company career sites (Greenhouse, Ashby, Lever, Personio, Recruitee, Teamtailor, Gem) by title, description keywords, location, remote, seniority, employment type, salary and visa. Newest first; schedule it for only new jobs.
Pricing
from $6.00 / 1,000 job saveds
Rating
0.0
(0)
Developer
Bruno Petrelli
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Search open jobs straight from company career sites, the way LinkedIn and Indeed get them, but at the source. Type a job title, pick locations, seniority, workplace, employment type and dates, search inside the descriptions, and get the newest matching jobs from 20,000+ companies that hire through Greenhouse, Ashby, Lever, Personio, Recruitee, Teamtailor and Gem.
- Checked live on every run. A daily index of every open job picks the companies that have a matching job, and the Actor reads those companies' public job boards live when you run it. No expired jobs, no reposts: if it is in the results, it is open right now.
- Only new jobs, for schedules. Turn on Only new jobs and schedule the search daily: each run returns just the postings earlier runs did not return, and you pay only for those.
- Salary, seniority, visa and experience. Pay ranges are read into numbers even when they are only written in the description, the level comes from the title, and the description tells whether the job sponsors visas and how many years of experience it asks for.
- Direct from the employer. Every job links to the company's own posting and application form. No recruiters, no aggregator duplicates.
- No LinkedIn, no login, no proxies. Only the public job-board APIs these platforms serve to the companies' own careers pages.
Use it for
- Job boards and newsletters: "remote senior data engineer jobs posted this week" from thousands of companies, in one run, and only the new ones every morning.
- Job seekers and career coaches: a daily search that only returns new, real openings at the right level, with the salary.
- Recruiters and sales teams: which companies are hiring for the roles you place or sell to.
- A daily feed of every new job: leave the title empty, set Posted within to 1 day, Max jobs to 5,000 and Only new jobs on, and schedule it daily.
- Market research: hiring volume, seniority mix, remote share and salary ranges by role.
- International talent: keep the jobs that say they sponsor visas.
- AI agents: plain JSON with plain-text descriptions. Agents can call it through the Apify MCP server.
Input
| Field | What it does |
|---|---|
| Job title keywords | Whole-word match on the title: intern does not match internal. |
| Exclude title keywords | e.g. manager. |
| Locations | Berlin, Germany, DE, London. A two-letter code matches as a whole word or the country code, so US does not match "Dusseldorf". remote also matches jobs flagged remote. |
| Remote only | Only fully remote jobs. |
| Seniority | Intern, entry, not stated (usually mid-level), senior, lead, director, executive. Read from the title, so it costs no extra time. |
| Posted within (days) | Exact dates from each platform. |
| Workplace type | Remote, hybrid, on-site, or not stated. Greenhouse jobs rarely state it (85% of the 195,000 Greenhouse jobs in our index), unless the location says Remote, Hybrid or On-site: add Not stated to keep them. |
| Employment type | Full-time, part-time, contract, temporary, internship, or not stated (Greenhouse lists none, so its jobs are Not stated unless the title says so, as in "Intern" or "(Contract)"). |
| Description keywords / Exclude description keywords | Whole-word match on the full description: Kubernetes, GDPR; exclude clearance. |
| Only jobs that state a salary | A pay range from the job board or written in the description. |
| Only jobs that offer visa sponsorship | The description says the company sponsors visas. Jobs that say nothing are dropped. |
| Platforms | Greenhouse, Lever, Ashby, Workable, Recruitee, Personio, Teamtailor, Gem (default: all). |
| Only these companies / Exclude companies | Match on the company or board name. |
| Max jobs | Newest first, default 200. |
| Max jobs per company | Stops one big employer from filling the results. |
| Only new jobs | Skip jobs that earlier runs of the same search already saved. |
| Memory name | Optional: share one "only new" memory between tasks, or start a fresh one. |
| Read every company live | Skip the daily index and read every company in the directory (a few minutes). |
| Job description | Plain text (default), HTML, both or none. Fetched only for the jobs you keep. |
The description filters (keywords, salary, visa) read the full text of every job that passes the other filters, so those runs take longer (a search over 12 companies and 3,730 open jobs took about a minute). You still pay only for the jobs saved.
{"keywords": ["data engineer", "analytics engineer"],"locations": ["remote", "Germany"],"seniority": ["senior", "lead"],"employmentTypes": ["fulltime", "unspecified"],"descriptionKeywords": ["dbt", "Airflow"],"postedWithinDays": 7,"onlyNew": true,"maxJobs": 100}
Output
One item per job, the same schema as our ATS Jobs Scraper:
{"id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","platform": "ashby","companySlug": "ramp","company": "Ramp","title": "Security Engineer, Cloud","department": "Engineering","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "Remote (US)"],"country": "US","remote": true,"workplaceType": "hybrid","employmentType": "Full time","seniority": null,"postedAt": "2026-04-07T17:12:35.753Z","url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","salary": { "min": 211400, "max": 290600, "currency": "USD", "period": "year", "text": "$211.4K - $290.6K", "source": "platform" },"yearsOfExperience": null,"visaSponsorship": null,"descriptionText": "ABOUT RAMP\n\nRamp is building...","scrapedAt": "2026-09-24T20:00:00.000Z"}
salary.sourceisplatformwhen the job board publishes the pay, ordescriptionwhen it was read from the text (US pay-transparency ranges, "€50.000 – 60.000", "$45/hr"). Funding rounds, revenue and deal sizes are not taken for pay; when in doubt the field staysnull. In our test on 469 real jobs, 382 came out with a salary, 262 of them from the description alone.seniority:intern,entry,senior,lead(lead, staff, principal),director(director, head of),executive(VP, C-level), ornullwhen the title names no level.payRanges(Greenhouse jobs): the pay ranges the company set in Greenhouse, one per zone or level ([{ "title": "Zone A", "min": 159000, "max": 254000, "currency": "USD" }]), ornullwhen it publishes none. They come from the job page, read with the description. When the text states no salary,salaryis the first range.yearsOfExperience: the minimum the description asks for.visaSponsorship:trueif it offers sponsorship,falseif it says there is none,nullif it does not say.- Experience, visa and a salary written in the text come from the description. With Job description: none they are still filled for Ashby and Lever jobs (their text comes with the list) and for every job when a description filter is on; Greenhouse jobs otherwise leave them empty.
The run's OUTPUT record says how many company boards were read, how many jobs were open, how many matched, how many were skipped as already seen, and which boards could not be read.
Pricing
Pay per event: one search event per run (it checks the index of every open job and reads the matching companies live) plus one job event per job saved. Filters cost nothing, and with Only new jobs the jobs you already have are not saved again, so they are not charged again. Set a maximum cost for the run and the Actor stops cleanly when it is reached.
Only new jobs: how it works
- The memory is a list of the jobs this search saved, kept in a key-value store named
job-search-statein your own Apify account, for 180 days. - Each set of filters has its own memory, so two different searches never hide each other's jobs. The date window and the caps are not part of it: widening Posted within keeps the same memory.
- Only jobs that were really saved are remembered. If a run stops at your spending limit, the rest come next time.
- To start over, give the search a new Memory name, or delete the record from the store.
Good to know
- Which companies? The directory holds companies with at least one open job: on 2026-09-28, 20,950 companies (5,801 on Greenhouse, 3,565 on Personio, 3,396 on Ashby, 2,784 on Teamtailor, 2,566 on Recruitee, 1,886 on Lever, 952 on Gem) with 426,490 open jobs, many of them in Europe. Workable is supported, but its servers limit how fast boards can be checked, so it has no companies in the directory yet. It is built from public web crawl data and every board is checked against its live API; it is rebuilt every month, so new companies are added and closed boards removed. The run's OUTPUT record shows the date of the directory used.
- Not every company in the world: companies on Workday, iCIMS, Taleo and other systems are not in this search. For a list of companies you already know, including Workday, use our ATS Jobs Scraper, which takes careers page URLs.
- How a search works. It first runs your title, place, date, seniority, workplace and employment filters on a daily index of every open job in the directory, to find the companies that have a matching job. It then reads only those companies live, 20 at a time on each job board platform, and the results come from that live read. When more companies match than the search can keep (Max jobs, newest first), only the ones with the newest matching jobs are read. A company whose first matching job was posted after the index was built appears once the index includes it (it is rebuilt every day). Read every company live reads the whole directory instead, which takes a few minutes. A company that could not be read when the index was built is skipped until the next one. The OUTPUT record shows the date of the index and how many companies were skipped, and why. With description filters, Greenhouse jobs are judged on their own job pages, read newest first until Max jobs is reached. Lever asks for one request per second and the Actor keeps to it.
- It runs with 1 GB of memory, the minimum: the daily index of about 400,000 open jobs is loaded in memory, and Apify gives CPU in proportion to memory.
- Job title keywords match titles only, so "python" finds "Python Developer" but not a backend role that mentions Python only in the text. For that, use Description keywords.
Support
A company missing from the directory, or a job that looks wrong? Open an issue on the Actor's Issues tab. Issues get an answer within a few days.