Career Site Jobs API avatar

Career Site Jobs API

Pricing

from $1.10 / 1,000 jobs

Go to Apify Store
Career Site Jobs API

Career Site Jobs API

Get job listings from company career sites on Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor in one clean JSON schema. Paste career page URLs; get title, department, location, remote/hybrid, salary, dates and apply links. No login. Only-new and removed-job tracking for scheduled runs.

Pricing

from $1.10 / 1,000 jobs

Rating

0.0

(0)

Developer

Teddy Wasserman

Teddy Wasserman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

What does Career Site Jobs API do?

Career Site Jobs API pulls the open job listings straight from company career sites. It covers six applicant tracking systems (ATS): Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor. Paste career page URLs such as https://boards.greenhouse.io/gitlab or https://tibber.teamtailor.com. You get one clean, identical JSON schema for every company: job title, department, team, locations, country, remote/hybrid/on-site, employment type, salary range (when the employer publishes it), posting dates, job page URL and apply URL.

It's built for recruiters, sales teams, job boards, labour-market analysts and AI agents who need fresh, first-party job data. The data comes directly from the employer's own ATS, before it reaches LinkedIn or Indeed. Schedule it daily with only-new mode, and it outputs just the jobs that appeared since the last run. Optionally it also outputs the jobs that were removed (filled or closed).

Why use Career Site Jobs API?

  • Six ATS platforms, one schema. Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor all map to the same fields, so you don't need per-vendor parsing.
  • Teamtailor support for the Nordics. Teamtailor is the leading ATS in Sweden, Norway, Denmark and Finland, and it's rarely covered by other job APIs. Custom career domains like jobs.tibber.com are detected automatically.
  • No login, no browser, no proxies. The actor reads the public job-board feeds that the ATS vendors provide for embedding jobs on career sites. Runs are fast (a few seconds for a handful of companies) and cheap.
  • New and removed job tracking. Only-new mode plus removed-job detection turns a list of companies into a hiring-signal feed.
  • Salary normalisation. Where the employer publishes pay (common on Ashby, Lever and Recruitee), you get salaryMin, salaryMax, salaryCurrency and salaryInterval.
  • Privacy by design. Recruiter names, mailbox addresses and contact fields are never output. E-mail addresses and phone numbers inside descriptions are removed.
  • Fair, transparent pricing. $2 per 1,000 jobs, a tiny start fee, and automatic volume discounts on higher Apify plans.

What data can you extract?

FieldExampleDescription
jobIdashby:ramp:0d73…Stable unique ID: ats:company:id
statusactiveactive, or removed when emitRemoved is on
atsteamtailorgreenhouse, lever, ashby, workable, recruitee, teamtailor
companyTibberCompany name from the career site (or prettified slug)
companySlugtibberThe board identifier you passed in
titleSenior Security EngineerJob title
department / teamCustomer Experience / CX FrontlineAs defined by the employer
location / locationsStockholm, SwedenPrimary location and all locations
country / countryCodeSweden / SEWhen the ATS provides it
workplaceTypehybridremote, hybrid, onsite (or null if unknown)
isRemotefalseConvenience boolean
employmentTypeFULL_TIMEFULL_TIME, PART_TIME, CONTRACT, INTERNSHIP, TEMPORARY, OTHER
salaryMin / salaryMax39000 / 43000Numeric pay range when published
salaryCurrency / salaryIntervalGBP / 1 YEARCurrency and period
salaryText£39K - £43KHuman-readable salary
postedAt / updatedAt2026-10-01T18:38:56+00:00ISO 8601 UTC
jobUrl / applyUrlhttps://jobs.ashbyhq.com/…Job page and application link
descriptionTextAbout Ramp…Plain-text description (optional, truncated)
descriptionHtml<p>…</p>Original HTML (optional)
isNewtrueIn monitoring mode: first time this job is seen
scrapedAt2026-10-04T09:59:28+00:00When the run read the job

How to use Career Site Jobs API (step by step)

  1. Click Try for free and open the Input tab.
  2. Under Career sites, paste one career page per line. You can use the ATS board URL (https://jobs.lever.co/spotify), a Teamtailor custom domain (jobs.tibber.com), or shorthand (greenhouse:gitlab).
  3. Optionally narrow the results with Title keywords (e.g. engineer, sales), Locations (e.g. Sweden, Berlin, remote), Remote jobs only or Posted within last N days.
  4. Set Max results. Results are spread evenly across companies, so a small limit still shows every company.
  5. Click Start. A typical run with 5–10 companies finishes in under 10 seconds.
  6. Download the results as JSON, CSV, Excel or HTML, or connect them to Google Sheets, Make, Zapier, n8n or a webhook.

To get daily new-job alerts, turn on Only new jobs since last run, choose a Monitor ID and create a Schedule (for example every morning at 07:00).

How do I find a company's ATS URL?

Open the company's careers page and click any job. The address bar or the "Apply" button usually reveals the ATS:

  • Greenhouse: boards.greenhouse.io/<company> or job-boards.greenhouse.io/<company>
  • Lever: jobs.lever.co/<company> (EU: jobs.eu.lever.co/<company>)
  • Ashby: jobs.ashbyhq.com/<company>
  • Workable: apply.workable.com/<company>
  • Recruitee: <company>.recruitee.com
  • Teamtailor: <company>.teamtailor.com or a custom domain such as jobs.<company>.com (pass the domain as is)

Input example

{
"companies": [
"https://tibber.teamtailor.com",
"https://jobs.lever.co/spotify",
"https://boards.greenhouse.io/gitlab",
"ashby:ramp",
"https://apply.workable.com/huggingface",
"https://bunq.recruitee.com"
],
"keywords": ["engineer", "developer"],
"locations": ["Sweden", "Germany", "remote"],
"postedWithinDays": 30,
"maxResults": 500,
"includeDescription": true,
"onlyNew": false
}

Output example

[
{
"jobId": "teamtailor:tibber:ef147f7e-8acb-4ad7-ad55-023ff7f93e36",
"status": "active",
"ats": "teamtailor",
"company": "Tibber",
"companySlug": "tibber",
"title": "Senior Security Engineer",
"department": "House of Product & Engineering",
"team": null,
"location": "Stockholm, Sweden",
"locations": ["Stockholm, Sweden"],
"country": "Sweden",
"countryCode": null,
"workplaceType": "hybrid",
"isRemote": false,
"employmentType": null,
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryInterval": null,
"salaryText": null,
"postedAt": "2026-09-11T10:54:15+00:00",
"updatedAt": null,
"jobUrl": "https://jobs.tibber.com/jobs/8365823-senior-security-engineer",
"applyUrl": "https://jobs.tibber.com/jobs/8365823-senior-security-engineer",
"descriptionText": "We're at a pivotal moment for both Tibber and the planet. When joining Tibber, you won't just help scale a forward-thinking tech company…",
"isNew": null,
"scrapedAt": "2026-10-04T09:59:28+00:00"
},
{
"jobId": "ashby:ramp:0d731586-3626-48fb-9dc5-3061ae5fd240",
"status": "active",
"ats": "ashby",
"company": "Ramp",
"companySlug": "ramp",
"title": "Customer Experience Associate - London",
"department": "Customer Experience",
"team": "CX Frontline",
"location": "London",
"locations": ["London"],
"country": "United Kingdom",
"workplaceType": "hybrid",
"isRemote": false,
"employmentType": "FULL_TIME",
"salaryMin": 39000,
"salaryMax": 43000,
"salaryCurrency": "GBP",
"salaryInterval": "1 YEAR",
"salaryText": "£39K - £43K",
"postedAt": "2026-10-01T18:38:56+00:00",
"jobUrl": "https://jobs.ashbyhq.com/ramp/0d731586-3626-48fb-9dc5-3061ae5fd240",
"applyUrl": "https://jobs.ashbyhq.com/ramp/0d731586-3626-48fb-9dc5-3061ae5fd240/application",
"descriptionText": "About Ramp\n\nRamp is building the smart infrastructure for finance teams…",
"isNew": null,
"scrapedAt": "2026-10-04T09:59:28+00:00"
}
]

A removed job (with Also output removed jobs on) looks like this:

{
"jobId": "lever:spotify:6ed76ce8-…",
"status": "removed",
"ats": "lever",
"company": "Spotify",
"title": "Backend Engineer",
"location": "Stockholm, Sweden",
"jobUrl": "https://jobs.lever.co/spotify/6ed76ce8-…",
"removedDetectedAt": "2026-10-05T07:00:12+00:00"
}

The Jobs and Salaries table views in the Output tab are ready for CSV/Excel export.

How much does it cost?

The actor uses pay-per-event pricing: you pay only for the jobs you receive.

EventPriceWhen it's charged
Actor start$0.0005Once per run (per GB of memory; the default is 256 MB)
Job$0.002Per job (or removed-job row) delivered to the dataset ($2 per 1,000)

On higher Apify plans the job price drops automatically: Bronze −15%, Silver −30%, Gold and above −45%.

Worked examples (Free/Starter pricing):

  • 1,000 jobs from 50 companies, once: about $2.00.
  • Daily new-job alerts for 100 companies with ~40 new jobs per day: 30 runs × (40 × $0.002 + $0.0005) ≈ $2.42 per month.
  • A full weekly export of 20 companies with 3,000 open jobs: about $6 per run, or $24 per month.

Platform compute is tiny (a few seconds at 256 MB). The free Apify plan's monthly credits are enough to try the actor many times. Use Max results to cap any run.

Use cases

  • Recruiters and staffing agencies. Watch target companies and get new openings the morning they're posted, before they reach the big job boards.
  • B2B sales and account-based marketing. Hiring is a buying signal: a company hiring "Data Engineers" or "Head of Security" is likely to buy related tools. Feed new jobs into your CRM.
  • Job boards and niche job sites. Aggregate first-party listings from hundreds of employers in a single schema, with stable IDs and removal detection to keep your board clean.
  • Labour-market and competitor intelligence. Track how many roles competitors open by department, location and seniority, and how salary ranges change.
  • Investors and analysts. Hiring velocity at portfolio or target companies is an early growth indicator.
  • AI agents and copilots. A compact, typed job object per row, which works well for agents that search jobs, summarise hiring trends or match candidates.

Use with AI agents, MCP and the API

The actor works with the Apify MCP server, so assistants like Claude or ChatGPT can call it as a tool. The first sentence of this README and the small input schema are written for that. The start fee is a fraction of a cent, so agent probe calls stay cheap.

Call it from any language with the Apify API:

curl -X POST "https://api.apify.com/v2/acts/teddythebuilder~career-site-jobs-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://jobs.lever.co/spotify", "greenhouse:gitlab"], "keywords": ["engineer"], "maxResults": 50}'

Or with the Python client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("teddythebuilder/career-site-jobs-api").call(run_input={
"companies": ["https://tibber.teamtailor.com", "https://jobs.ashbyhq.com/ramp"],
"locations": ["Sweden", "remote"],
"onlyNew": True,
"monitorId": "nordic-tech",
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["jobUrl"])

Integrations

  • Google Sheets: export each run to a sheet, or append new jobs daily.
  • Make, Zapier and n8n: trigger a scenario on run success and post new jobs to Slack, Teams, HubSpot, Pipedrive or Airtable.
  • Webhooks: receive a POST when a run finishes and fetch the dataset items.
  • Schedules: run hourly, daily or weekly with a fixed Monitor ID for a continuous new-job feed.

Data source and legality

The actor only reads public job-board endpoints that the ATS vendors offer so companies can show their open positions on their own websites and job aggregators:

  • Greenhouse Job Board API
  • Lever Postings API
  • Ashby Posting API
  • Workable job widget API
  • Recruitee careers API
  • Teamtailor career-site RSS feed

It doesn't log in, doesn't bypass any protection, respects robots.txt, and sends only a few polite requests per company. SmartRecruiters isn't supported, because its API's robots.txt disallows generic automated agents.

Job postings are published by the employers so that people can see and apply for them. No personal data is collected. Recruiter names, contact persons, e-mail addresses and phone numbers are dropped or redacted. You're responsible for using the data in line with your local laws and the employers' terms, for example by linking back to the original jobUrl.

FAQ

Which companies can I use? Any company whose career site runs on Greenhouse, Lever, Ashby, Workable, Recruitee or Teamtailor. That's tens of thousands of companies, from startups to large enterprises.

How fresh is the data? Live. Every run reads the current state of each career site, so new jobs appear as soon as the employer publishes them.

What happens if one career site fails? The run continues with the others, and failed sites are listed in the run's status message and log. The run only fails if every site fails, usually because the URLs are wrong.

Why is salaryMin empty? Most employers don't publish pay. Salary fields are filled when the ATS exposes it, most often on Ashby, Lever and Recruitee boards, especially for US, UK and EU pay-transparency locations.

Why is employmentType null for Teamtailor jobs? Teamtailor's public feed doesn't include it. All other fields are present.

How does only-new mode work? The actor stores the IDs of the jobs it has delivered in a named key-value store, per Monitor ID. Later runs skip those jobs. Use different Monitor IDs for different company lists.

Can I use it on the free Apify plan? Yes. A typical run costs well under one cent of platform usage, plus the per-job price above.

I need another ATS or an extra field. Open an issue on the Issues tab and we usually reply within 24 hours. Workday and other ATS platforms are on the roadmap. If the actor saves you time, a short review helps other users find it.

Changelog and support

  • 1.0 (2026-10): first release. Greenhouse, Lever, Ashby, Workable, Recruitee and Teamtailor, with Teamtailor/Recruitee custom-domain detection, salary normalisation, only-new and removed-job monitoring, and description redaction.

Found a bug or a career site that doesn't work? Open an issue. We reply within 24 hours and usually ship a fix the same week.