Live Jobs HTTP API: Greenhouse, Lever, Ashby, No Login avatar

Live Jobs HTTP API: Greenhouse, Lever, Ashby, No Login

Pricing

from $36.00 / 1,000 company profiles

Go to Apify Store
Live Jobs HTTP API: Greenhouse, Lever, Ashby, No Login

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

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

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?

  1. Copy your Apify API token from Settings, API & Integrations, and this Actor's URL from the Endpoints tab.
  2. 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?

PartWhat it holds
companiesOne status per company, such as ok, no_matching_jobs or not_found, with its job counts and whether it was charged
jobsOne object per job, with title, department, location, workplace type, salary when published, posted date and apply link
closedJobsWith onlyNewJobs, the jobs that closed since your last check
spendingLimitReachedtrue when your spending limit stopped the request

Parameters

Only companies is needed. Up to 500 companies per request.

ParameterWhat it does
companiesJob board links, websites or company names, separated by commas
companyListsReady-made lists, such as ai-companies, tech-companies, remote-first, europe-tech or startups
departmentKeep jobs in these departments
titleIncludes, titleExcludesKeep or drop jobs whose title has these whole words
location, locationExcludesKeep or drop jobs in a country, US state or city
near, radiusKmJobs near one city (default 50 km)
workplaceTypesJobs that are remote, hybrid or onsite
postedSince, postedBeforeJobs posted in a recent period, or before a date
hasSalary, minAnnualSalaryJobs with pay, or with at least this pay per year
includeDescriptionAdd the full description and the tools it names
outputModejobs, companies for one summary per company, or both
onlyNewJobs, monitorNameOnly 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:

BoardTitleLocationWork typeSenioritySalary (per year)Posted
AshbyQA EngineerRemote - USremotenot given90,000 to 115,000 USD2026-09-25
AshbyMid-Market Customer Success Manager - EMEARemote - European Unionremotenot given75,000 to 101,000 GBP2026-09-18
AshbyEnterprise Account Executive - GermanyGermanyremotenot given230,000 to 300,000 EUR2026-09-17
StripeAccount Executive, Product Sales - CryptoSF, NYCnot givennot givennot given2026-09-26
StripeAccount Executive, Product - Local Payment MethodsUS-CAnot givennot givennot given2026-09-25
StripeProposal LeadChicago; Atlantanot givenlead_managernot given2026-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.

EventPriceWhat you get
Company (company-lookup)$0.045All 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 jobsEach further 1,000 jobs of the same company, or part of them
Repeat monitor check (new-jobs-check)$0.002 per checkA later check with onlyNewJobs, per 1,000 open jobs on the board or part of them
Description block (job-details)$0.01 per 200 jobsDescriptions 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 sendEventsCost on the Free plan
50 companies, each with 1,000 jobs or fewer50 x $0.045$2.25
The same 50 companies on Starter, Scale and Business50 x $0.0428, 50 x $0.0405, 50 x $0.036$2.14, $2.025 and $1.80
One company with 2,300 open jobs1 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.

  1. Enter your companies.
  2. Turn on onlyNewJobs.
  3. Give the watchlist a monitorName. Use one name for each watchlist.
  4. 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.

  • 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.

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.