Live Jobs HTTP API: Greenhouse, Lever, Ashby, No Login
Pricing
from $36.00 / 1,000 company profiles
Live Jobs HTTP API: Greenhouse, Lever, Ashby, No Login
Get open jobs over plain HTTP with a jobs API: send company names, websites or job board links in one GET or POST and get their jobs from 22 boards, such as Greenhouse, Lever, Ashby and Workday. 1 company = up to 1,000 jobs for $0.045 (about $0.0005 per job at 100 jobs), plus Apify usage. MCP-ready.
Pricing
from $36.00 / 1,000 company profiles
Rating
0.0
(0)
Developer
Don Mangu
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Job postings API in one HTTP request: send company names or job board links, get their open job postings as JSON, with no run to wait for.
Live Jobs HTTP API returns the open jobs of the companies you name in one HTTP request, from the same 22 job boards as ATS Jobs API, including Greenhouse, Lever, Ashby and Workday. There is no run to wait for: call it from a script, Clay, Zapier, Make, n8n or any tool that can call a URL. You pay per company, with up to 1,000 jobs included, plus Apify platform usage.
How do I call the job postings API?
- Copy your Apify API token from Settings, API & Integrations, and this Actor's URL from the Endpoints tab.
- Send a GET request with your companies.
curl -H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \"https://conserving-celerytop--live-jobs-http-api.apify.actor/?companies=databricks,https://jobs.ashbyhq.com/openai&department=engineering&postedSince=7%20days"
A POST to the same URL with a JSON body, such as {"companies": ["stripe", "linear.app"]}, also works.
GET /openapi.json describes every parameter and field, for free.
What is in the response?
| Part | What it holds |
|---|---|
companies | One status per company, such as ok, no_matching_jobs or not_found, with its job counts and whether it was charged |
jobs | One object per job, with title, department, location, workplace type, salary when published, posted date and apply link |
closedJobs | With onlyNewJobs, the jobs that closed since your last check |
spendingLimitReached | true when your spending limit stopped the request |
Parameters
Only companies is needed. Up to 500 companies per request.
| Parameter | What it does |
|---|---|
companies | Job board links, websites or company names, separated by commas |
companyLists | Ready-made lists, such as ai-companies, tech-companies, remote-first, europe-tech or startups |
department | Keep jobs in these departments |
titleIncludes, titleExcludes | Keep or drop jobs whose title has these whole words |
location, locationExcludes | Keep or drop jobs in a country, US state or city |
near, radiusKm | Jobs near one city (default 50 km) |
workplaceTypes | Jobs that are remote, hybrid or onsite |
postedSince, postedBefore | Jobs posted in a recent period, or before a date |
hasSalary, minAnnualSalary | Jobs with pay, or with at least this pay per year |
includeDescription | Add the full description and the tools it names |
outputMode | jobs, companies for one summary per company, or both |
onlyNewJobs, monitorName | Only the jobs that are new or closed since your last check |
The other parameters of ATS Jobs API work too, such as jobFunctions, seniorities, maxJobsPerCompany and descriptionFormat. In a URL, separate several values with commas. For several locations, repeat the parameter (location=London&location=Berlin), since a place name can contain a comma.
Input example
Send this as the JSON body of a POST request to the Actor's URL, or pass the same fields as query parameters in a GET request. The companies are the ones the form is filled in with. Only companies is required.
{"companies": ["https://boards.greenhouse.io/stripe","https://jobs.lever.co/palantir","https://jobs.ashbyhq.com/ashby"]}
curl -X POST -H "Authorization: Bearer <YOUR_APIFY_TOKEN>" -H "Content-Type: application/json" \-d '{"companies": ["https://boards.greenhouse.io/stripe", "https://jobs.lever.co/palantir", "https://jobs.ashbyhq.com/ashby"]}' \"https://conserving-celerytop--live-jobs-http-api.apify.actor/"
A filtered request. This asks for engineering jobs posted in the last 7 days at two companies, at most 20 jobs from each. It is the same search as the GET example at the top, as a JSON body.
{"companies": ["databricks","https://jobs.ashbyhq.com/openai"],"department": "engineering","postedSince": "7 days","maxJobsPerCompany": 20}
This costs 2 companies x $0.045 = $0.09 on the Free plan, plus platform usage. maxJobsPerCompany limits the rows you get back, not the company price.
Output example
The response has the four parts listed under What is in the response?. The values below are example values to show the shape, not real counts or a real job. The fields of each job object are the same as in ATS Jobs API.
{"companies": [{"company": "https://boards.greenhouse.io/stripe","companyStatus": "ok","openJobs": 120,"charged": true}],"jobs": [{"rowType": "job","company": "https://boards.greenhouse.io/stripe","companyName": "Example Co","title": "Senior Backend Engineer","department": "Engineering","location": "Berlin, Germany","workplaceType": "hybrid","salaryMin": 90000,"salaryMax": 120000,"salaryCurrency": "USD","salaryPeriod": "year","postedAt": "2026-09-28T09:00:00.000Z","url": "https://jobs.example.com/12345"}],"closedJobs": [],"spendingLimitReached": false}
What a real run returned
On 27 September 2026 I ran the Actor from its form with three entries: a link to Ashby's own job board, the company name "stripe" and google.com, with a limit of 5 jobs per company. It finished in 4 seconds. The status message said: "3 companies (2 charged), 10 jobs." and "ashby 5 of 66 open, stripe 5 of 701 open, google.com unsupported_job_board". The dataset had 11 rows: 10 jobs and one status row for google.com, which is not a job board the Actor reads. An entry the Actor cannot read is reported and not charged, which is why 2 of the 3 companies were charged.
Three of the five Ashby jobs and three of the five Stripe jobs, as returned:
| Board | Title | Location | Work type | Seniority | Salary (per year) | Posted |
|---|---|---|---|---|---|---|
| Ashby | QA Engineer | Remote - US | remote | not given | 90,000 to 115,000 USD | 2026-09-25 |
| Ashby | Mid-Market Customer Success Manager - EMEA | Remote - European Union | remote | not given | 75,000 to 101,000 GBP | 2026-09-18 |
| Ashby | Enterprise Account Executive - Germany | Germany | remote | not given | 230,000 to 300,000 EUR | 2026-09-17 |
| Stripe | Account Executive, Product Sales - Crypto | SF, NYC | not given | not given | not given | 2026-09-26 |
| Stripe | Account Executive, Product - Local Payment Methods | US-CA | not given | not given | not given | 2026-09-25 |
| Stripe | Proposal Lead | Chicago; Atlanta | not given | lead_manager | not given | 2026-09-25 |
All five Ashby jobs came with a work type and a salary range, each in the currency the company used: US dollars, pounds and euros in the rows above. The Stripe rows shown carry no salary. A field the board does not publish stays empty.
How much does it cost?
The event prices are those of ATS Jobs API, plus the Apify platform usage of each request, as this Actor is a live server. A company costs $0.045 ($0.0428 on Starter, $0.0405 on Scale, $0.036 on Business). The Pricing tab shows the same prices.
| Event | Price | What you get |
|---|---|---|
Company (company-lookup) | $0.045 | All open jobs of one company, up to 1,000, also when its board is empty, not found or fails |
Extra job block (extra-1000-jobs) | $0.01 per 1,000 jobs | Each further 1,000 jobs of the same company, or part of them |
Repeat monitor check (new-jobs-check) | $0.002 per check | A later check with onlyNewJobs, per 1,000 open jobs on the board or part of them |
Description block (job-details) | $0.01 per 200 jobs | Descriptions of 200 jobs on JazzHR, Paylocity, Freshteam, Workday, Eightfold and 5 other boards. Free on the rest |
Invalid, unsupported, duplicate and skipped entries, and unreadable websites, are free. If your spending limit cannot cover a company, you get none of its jobs and pay nothing.
Worked examples
These use the prices in the table above, before the Apify platform usage of each request. A company with 1,000 jobs or fewer costs one company event.
| You send | Events | Cost on the Free plan |
|---|---|---|
| 50 companies, each with 1,000 jobs or fewer | 50 x $0.045 | $2.25 |
| The same 50 companies on Starter, Scale and Business | 50 x $0.0428, 50 x $0.0405, 50 x $0.036 | $2.14, $2.025 and $1.80 |
| One company with 2,300 open jobs | 1 x $0.045 + 2 x $0.01 | $0.065 |
20 companies checked once a day for 30 days with onlyNewJobs (assumes each board has 1,000 open jobs or fewer) | 20 x $0.045 for the first check + 580 x $0.002 for the 29 later checks | $0.90 + $1.16 = $2.06 |
The first 1,000 jobs of a company are in the company price, so the 2,300-job company has 1,300 jobs over that limit, which is 2 extra job blocks. The costs in the last column are Free plan prices, except in the second row.
Limits
- Each request has 240 seconds. Companies not read by then are free (
skipped_time_limit), so send fewer. - If your client disconnects first, companies not yet read are free (
skipped_client_disconnected).
Only new jobs
With onlyNewJobs=true, the first request for a company returns all its open jobs, and later requests only the new and closed ones. Use monitorName to keep separate checks. This memory is apart from ATS Jobs API's.
Use it from AI agents (MCP)
Live Jobs HTTP API is MCP-ready through Apify's hosted MCP server, so Claude, ChatGPT, Cursor, VS Code and other MCP clients can call it as a tool. Add this server to your client:
{"mcpServers": {"apify": {"type": "http", "url": "https://mcp.apify.com/?tools=fetch-actor-details,conserving_celerytop/live-jobs-http-api"}}}
In Claude.ai or Claude Desktop, add a custom connector with the same URL. On first use a browser window opens to sign in to Apify, so no token goes in the file. Clients without sign-in can send an Authorization: Bearer <YOUR_APIFY_TOKEN> header instead. Through MCP each call is a normal run with the same event prices plus platform usage, so ATS Jobs API costs less for agents.
Example prompt: "Which of Databricks, OpenAI and Linear have open engineering jobs posted in the last 7 days?"
Other job Actors
ATS Jobs API for runs, schedules and Slack alerts; Tech Jobs Search for a keyword search across 824 companies.
Run it every day
Use this to get the new and closed jobs of a few companies once a day.
- Enter your companies.
- Turn on
onlyNewJobs. - Give the watchlist a
monitorName. Use one name for each watchlist. - Save the input as a task and add a daily schedule with the same input and the same
monitorName.
The first check of a company returns all its open jobs. Each later check returns only the jobs that are new or closed. A later check costs $0.002 per started 1,000 open jobs on the board. Example: 20 companies checked once a day for 30 days cost $2.06 (see the price table above). For many companies, use ATS Jobs API.
Related Actors
- ATS Jobs API & Career Page Scraper: Use it when you need open jobs from the career pages of companies you name, across Greenhouse, Lever, Ashby, Workday and more.
- Jobs MCP Server: Use it when you want Claude, Cursor or another AI agent to look up open jobs directly.
- Tech Jobs Search: Use it to search tech, AI, startup and remote jobs across 824 companies in one run.
- Company Hiring Signals: Use it to get a 0 to 100 hiring score and open job counts for each company on your list.
FAQ
How is this different from ATS Jobs API?
This Actor answers each HTTP request directly, for a few companies at a time. For many companies, daily schedules or Google Sheets, use ATS Jobs API, where a normal run has no platform usage on top.
Which job boards does it read?
The same 22 job boards as ATS Jobs API, including Greenhouse, Lever, Ashby, Workable, Personio, Teamtailor, Workday and Eightfold. Other boards return unsupported_job_board, free, and error says why.
Is it legal?
It reads only job postings that companies publish on public job boards, with no login, and removes email addresses and phone numbers from descriptions. Check that your use follows the laws and terms that apply to you.
This Actor is not affiliated with or endorsed by any job board. Their names are trademarks of their owners.
Found a problem? Use the Issues tab.