$0.01 per company, up to 1,000 jobs. Every open job on company career pages, read live from Greenhouse, Lever, Ashby, Workday, Eightfold, Workable, Personio, Teamtailor, Recruitee, JOIN, Gem, Freshteam and 10 more. New-job alerts to Slack on a schedule. No API key or login.
Changes to ATS Jobs API (formerly Live Career Page Jobs API), newest first.
Unreleased
Runs at 256 MB no longer run out of memory on long lists or big job boards. Apify's Node image sets a 30,000 MB JavaScript memory limit, which kept the Actor from setting one that fits the run.
Only new jobs: on a later check, a company whose board was read still gets rows only for new, updated and closed jobs, and any other company, such as one that is not_found, now gets a status row only when its status changed since the previous check. Before, the same status row came on every check. Every status stays in the COMPANIES record and in the status message.
The monthly price in the scheduling tip of a Console run now also counts companies that are not found or whose board fails, since each later check charges them too.
The status message no longer lists a duplicate entry as not checked, and on a first check it says a board has no open jobs instead of "No changes".
When a Department or Location value with a comma matches no job, the warning says the value was read as one value and to put one per line.
In the live HTTP API, department also takes values separated by commas (department=engineering,sales). A location keeps its comma, so "New York, NY" is one place.
Plain names ignore more legal forms, such as SE, SAS, A/S, Oyj, S.p.A., LLP and PBC. "Novo Nordisk A/S" is now looked up instead of rejected.
Plain names find the right company more often: we dropped small boards that share a famous name, read a company's main career site before campus or intern sites, and use the bigger board when a name lists two. Still one charge per company. When a company has several career sites, warning says which one was read.
A job board that limits requests no longer makes a plain name take minutes.
Ready-made lists rebuilt: 179 AI companies (now with Anthropic, ElevenLabs, Cursor and Lovable), 311 tech companies, 79 remote-first companies and 65 tech companies hiring in Europe. Each had at least 10 open jobs, and tech-companies repeats no company of the other two. Lists are refreshed monthly.
Rows from a list show the company's name in companyName when its job board gives none.
Summary rows have three new fields. leadershipRoles lists up to 5 open director, VP and C-level roles, and with Only new jobs also the ones that closed since the previous check. firstHireRoles lists up to 5 roles that are a first or founding hire. functionCountsLast30Days counts the jobs posted in the last 30 days per job function.
Only new jobs: summary rows name the job functions (newFunctions) and countries (newCountries) that have open jobs now and had none at the previous check. A monitor saved before this version fills them from its second check after the update.
Include job description now also works with one summary row per company, so summary rows get topTools, toolCoverage and visaSponsorshipShare. Descriptions stay free on most boards and cost $0.01 per started 200 jobs on JazzHR, Paylocity, Freshteam, JOIN, Workday, Eightfold, Polymer and HiringThing career portals.
Links to 21 more job board vendors, such as Dayforce, Paycor, UKG, CareerPlug, Hireology, isolved, Avature, NEOGOV, Deel and Factorial, now return unsupported_job_board (free), and error says why. Before, such a link was read as a company website and could cost $0.01.
A job board link with encoded characters in the board name, such as %20 for a space, is now read correctly.
The README has a short section for each of Greenhouse, Lever, Ashby, Workday and Eightfold, with the link to paste and what you get.
New README section "Spot likely ghost jobs". It shows how to list jobs posted more than 90 days ago and reposted jobs with the fields you already get.
The README shows step by step how to get new jobs in Slack every morning, in a Google Sheet, or by email only on days with new jobs, and three things to know before the first alert.
Only new jobs: new and closed job rows have alertText, one plain line for an alert, in the dataset and the live HTTP API. New dataset view Alerts (view=alerts).
Alert webhook: alertWebhookUrl, alertMaxJobs and alertOnFirstCheck. One free message to Slack, Discord, Teams, Make, Zapier or n8n after an Only new jobs check with new or closed jobs; none on quiet days or first checks.
New filter Description includes (descriptionIncludes): keep jobs whose description names one of your words, such as Snowflake, Rust or C++. Whole words, any case, and a tool also matches its other names, so Postgres finds PostgreSQL. It turns on Include job description, with its price on JazzHR, Paylocity, Freshteam, JOIN, Workday, Eightfold, Polymer and HiringThing career portals. Also in the live HTTP API.
Well-known employers that list their jobs only on their own career site (27 names, such as Google, Apple, Amazon, Meta and Tesla, and their main domains) are now free unsupported_job_board entries with the reason. A link to a job board we read still works.
firstHireRoles lists fewer wrong roles. A job no longer counts when its text only asks for past experience of building a team, describes the candidate, or tells company history.
Ready-made list remote-first rebuilt: 90 companies (was 79), with more company names from Remote In Tech (ISC License). Each had at least 10 open jobs, at least 4 in 5 of them remote, on 2026-09-25.
A run started in Apify Console without a ready-made list now suggests a bigger list to try next, with its size and about what it costs.
The live HTTP API moved to a new Actor, Live Jobs HTTP API, with the same fields, filters and event prices. This Actor no longer runs in Standby mode, so a normal run charges only the events.
Two more job boards, 22 in all: ClearCompany (formerly HRMDirect) and GoHire. Paste a board link such as medcor.hrmdirect.com/employment/job-openings.php or jobs.gohire.io/dexerto-de5jlhjo. Each company costs $0.01, as on the other boards. Descriptions cost $0.01 per started 200 jobs on both. Before, links to these boards were free unsupported_job_board entries. Also in the live HTTP API.
Five more job boards, 20 in all: PageUp, Polymer, HireHive, HiringThing and Trakstar Hire (Recruiterbox). Paste a board link such as careers.pageuppeople.com/865/cw/en-us/listing, jobs.polymer.co/magnendo, focus-ireland.hirehive.com, vault-manufacturing.hiringthing.com or stax.hire.trakstar.com. Each company costs $0.01, as on the other boards. Descriptions are free on PageUp, HireHive and Trakstar Hire, and cost $0.01 per started 200 jobs on Polymer and on HiringThing career portals that list the jobs of several locations. Before, links to these boards were free unsupported_job_board entries. Also in the live HTTP API.
The README's first lines now say that you get every open job at the companies you name, read when you run it, including older jobs that are still open, and that 1,000 jobs cost about $0.10 when your companies have about 100 open jobs each. A short recipe near the top, "Get new jobs every morning", shows the daily Slack alert, and a new FAQ, "How is this different from a job search database?", says what the Actor does and does not do.
Fewer Workable errors on long lists of Workable companies.
2026-09-24: build 0.0.8
Department and Location with several values, one per line in the form, now keep the jobs that match any of them. Before, such a filter kept no jobs.
In the live HTTP API, every list parameter can be repeated (location=London&location=Berlin).
Plain company names are looked up in a directory of about 28,000 company job boards first, then on Greenhouse, Lever and Ashby. New matchedBy value directory.
Ready-made company lists (companyLists): AI companies, tech companies, remote-first companies and European tech companies. Each company costs $0.01, as usual.
Only new jobs: later checks write no row for companies without changes, and the status message starts with what changed. New summary field jobsOpenOver90Days.
The Jobs view starts with the job title. New Main fields view with the key columns.
Pinpoint and Comeet links return unsupported_job_board (free), because their terms do not allow this use.
Pricing: plan discounts on companies ($0.0095 on Starter, $0.009 on Scale, $0.008 on Business; $0.01 on the free plan). Clearer price names: Company, Extra job block, Repeat monitor check, Description block. No other price changed.
2026-09-24: first public version (build 0.0.7)
Pricing
A company still costs $0.01 when we contact its job board, including up to 1,000 jobs. Each further 1,000 jobs of the same company now costs $0.01 (event extra-1000-jobs).
With Only new jobs, the first check of a company costs $0.01. A later check costs $0.002 per started 1,000 open jobs on the board, so $0.002 for 300 jobs and $0.006 for 2,400.
Job descriptions on JazzHR, Paylocity, Freshteam, JOIN, Workday and Eightfold cost $0.01 per started 200 jobs described (event job-details), and only jobs you get are described. On the other boards they stay free.
A company website we read that links no job board at all costs $0.01. A website we cannot open, or whose job board we do not read, is free.
Boards
Workday and Eightfold, where the employer's robots.txt allows it. Employers that opt out, and blocklisted employers, are free unsupported_job_board.
Greenhouse boards hosted in the EU are not supported yet (free).
Input
Companies also takes company websites and domains, such as stripe.com. We look for the job board the site links to.
New filters: Title includes and Title excludes (whole words).
Rows to return: one row per job, one summary row per company, or both. A summary row has open jobs, jobs posted in the last 7 and 30 days, remote share, top departments, locations and countries, seniority and salary medians.
More plain company names are found, such as "Tesla, Inc.".
Input errors are shown before the run starts, with a clear message. This covers an empty list, more than 500 companies, a date the Actor cannot read (such as "yesterday" or "7d"), a bad monitor name and a cap below 1.
New filters: Workplace, Job type, Seniority, Job functions, Languages, Location excludes, Only jobs with a salary, Minimum yearly salary, Posted before, Max years of experience and Only jobs that sponsor visas. Jobs whose value is unknown are left out, and the warning says how many.
Department and Location take several values, one per line. Location keeps the jobs in a country by its name or code, and matches other text by whole words.
startUrls and urls are read as other names for Companies, so input written for other Actors works.
Output
One dataset row per job, plus one status row for each company without jobs. Each row has rowType job, status or company. The COMPANIES record has one status per company, with its counts and charges.
New job fields: country, country code, city, region, job type, yearly salary, and every pay range (salaryRanges) on Greenhouse and Ashby. Seniority has more levels.
New company fields: companyName and matchedBy, with a warning when a plain name may belong to another company.
Dataset field descriptions for AI agents, and named collections for the COMPANIES and STATS records.
New job fields: jobKey, language, jobFunction, companyDomain, and on Greenhouse requisitionId and applicationDeadline. With descriptions: tools, pay written in the description when the board gives none (salarySource), years of experience, education, visa sponsorship and security clearance.
New summary fields: functionCounts, and with descriptions topTools, toolCoverage, visaSponsorshipShare and medianExperienceYearsMin.
Only new jobs
Each monitor name, exactly as typed, and each set of filters has its own memory.
A board in another region (such as Lever EU) has its own memory.
Rows have firstSeenAt. Closed rows also have postedAt, closedAt and daysOpen, and new rows reposted. Also return updated jobs (includeUpdatedJobs) returns jobs whose title, location, salary or job type changed. Summary rows count updatedJobs, repostedJobs and medianDaysOpen.
The memory is now kept in a store named after this Actor, live-career-page-jobs-api-monitor-<monitor name>, instead of jobs-monitor-<monitor name>. A monitor saved before this version starts over with a full first check.
Live API
GET /openapi.json describes every parameter and field. GET / without companies returns a short help. Other paths and methods are answered free.
Fixes and limits
A job that lists pay in several currencies shows the range in its country's currency as the main salary, when there is one.
GTM systems roles now have the job function sales, and support engineering roles customer success.
A board is never charged twice after the run moves to another server.
A store the Actor cannot open no longer fails the run.
Pay is read right for yen, peso and forint ranges on Greenhouse, Ashby pay tiers and Paylocity pay periods.
Board fixes for Freshteam page layouts, every Recruitee location, Personio levels, Workable hybrid jobs and sub-departments, and Homerun hybrid jobs in Dutch.
Lever is read at the pace its robots.txt asks for.