Career Site Job Listing API avatar

Career Site Job Listing API

Pricing

Pay per event + usage

Go to Apify Store
Career Site Job Listing API

Career Site Job Listing API

Career site job listing API: paste company websites and get clean, current openings from their official career sources. Automatic ATS detection, normalized fields, filters, and direct apply links. First 3 free; standard $2 / 1,000, volume discounts from $1.10 / 1,000.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

omar khandji

omar khandji

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

13 days ago

Last modified

Categories

Share

Career Site Job Listing API — Company Domain to Open Jobs

You paste stripe.com. You get all 545 open roles. Paste 50 domains and one run answers for all 50.

One input: company websites. The Actor works out which applicant tracking system sits behind each careers page and reads that system's own public endpoint. No tokens to look up, no provider to choose, no proxies. 3 job listings free on every run.

Measured, on real companies

You pasteIt findsYou get
stripe.comGreenhouse545 roles
anthropic.comGreenhouse399 roles
figma.comGreenhouse177 roles
ramp.comAshby123 roles
notion.soAshby110 roles
vercel.comGreenhouse81 roles
monzo.comGreenhouse75 roles

(2026-08-03 — 1,550 live roles from eight bare domains, nothing else supplied.)

How it finds the ATS

Two passes. It reads the company's careers page and looks at where it links — boards.greenhouse.io/stripe, jobs.lever.co/figma — and if nothing is linked it derives the likely handle from the domain and asks the providers directly.

Nine systems are supported: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Rippling, Breezy HR, Personio, BambooHR.

A company running its own careers page with no hosted ATS behind it comes back with "ats": null and no rows — an answer, not an error.

Why not scrape a job board

Job aggregators mean cookies, proxies, rate limits, and roles that are stale or reposted by three agencies. This reads the employer's own feed.

Aggregator scraperThis Actor
What breaks itanti-bot, layout changes, expired cookiesnothing — these are the companies' own public endpoints
Freshnessan aggregator's copythe role as the employer published it
Duplicatesthe same role three timesone row per role
Proxy billyesnone

Filter before you pay

Filters run before billing, so you are never charged for a job you excluded.

InputEffect
keywordsKeep jobs whose title, department, company or location contains one of these
excludeKeywordsDrop jobs matching any of these — intern, senior, sales
locationsKeep jobs whose location contains one of these
remoteOnlyKeep only roles whose location says remote, anywhere or distributed
postedAfterKeep jobs posted on or after YYYY-MM-DD

Keywords match whole words and do not stem. engineer returns "Backend Engineer" but not "Engineering Intern" — pass both if you want both. A substring filter for ai would match "maintainer", which on a real board kept 40% of unrelated roles.

Output

{
"domain": "stripe.com",
"source_url": "https://boards.greenhouse.io/stripe/jobs/6789",
"title": "Account Executive, AI Sales",
"company": "stripe",
"location": "New York",
"department": "Sales",
"posted_at": "2026-07-20T09:12:00Z",
"source": "greenhouse",
"function": "Sales",
"seniority": "Mid",
"is_remote": false
}

is_remote is set on every row (not only when you filter with Remote only), the same check that input runs, so you can see per-row which postings are remote without needing to turn the filter on.

Roles are deduplicated by URL, so two domains resolving to the same board never bill you twice. Seniority and job function are inferred and attached.

What a run costs

Standard price: $2 per 1,000 job listings (base FREE-tier price). You pay only for listings actually delivered to you. There is no per-run fee: a run that finds nothing costs $0. Paid Apify Store plans (Bronze through Diamond) receive a variable discount on this price — the exact current discount for your plan is shown on this Actor's Pricing tab in the Store, not repeated here since Apify's tier discounts change independently of this README.

Ask for many companies at once

Measured on this Actor at ~35 open roles per company:

Companies in one runJobs returnedYou payPer job
135$0.05$0.0014
10350$0.68$0.0019
501,750$3.48$0.0020

Batching does not change the price per job — it changes your wall clock. Fifty companies asked together take one run instead of fifty, and the free allowance below is the only thing that makes a small run cheaper per row.

Up to 100 companies per run; 15 per HTTP request, so a Standby/MCP call answers inside Apify's five-minute ceiling. Split a larger list across requests.

Free tier — 3 job listings on every run

The first 3 job listings of every run are free, on every run you ever make, not just the first. Wire it into a pipeline and evaluate it on your own target companies before a cent is billed.

The free allowance never covers more than half of a run, so a run returning 20 listings gets 3 free rather than 10 — that is what stops it becoming an unlimited free plan for anyone willing to split one job into many tiny runs.

Pricing

Standard rate: $0.002 per job listing — $2 per 1,000 (base FREE-tier price), after the free 3. Paid Apify Store plans (Bronze through Diamond) receive a variable discount on this price — see this Actor's Pricing tab in the Store for the exact current discount on your plan.

Same price as the ATS Jobs API, which reads the same endpoints and returns the same rows with more control over providers and deltas.

Limits

  • 100 companies per run, 15 per request in HTTP mode, so a request finishes inside Apify's five-minute ceiling.
  • Workday pages 20 roles at a time and is capped at 200 roles per tenant.

Use it from an AI agent (MCP)

This Actor is a Model Context Protocol server. Point any MCP client at it and the tool appears with its full input schema — no wrapper code:

https://om-kh--careers-page-scraper.apify.actor/mcp
{
"mcpServers": {
"careers_page_jobs": {
"url": "https://om-kh--careers-page-scraper.apify.actor/mcp",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

One tool, careers_page_jobs. It takes the same arguments as the Start form and returns the same rows, so an agent and a curl user can never get different answers.

Same data, other sources — all with the same free tier, the same clean schema and the same pay-only-for-what-you-get billing:

Actor
[ATS Jobs Search API
[Hiring Signals
Indeed Jobs Scraper - Listings, Companies & Salary
LinkedIn Jobs Scraper - Listings & Companies
Glassdoor Reviews Scraper - Employer Ratings
LinkedIn Company Scraper - Followers & Headcount

All input fields

Every field the Start form accepts, so nothing in the schema is undocumented. Most runs only need the fields already covered above — these are the rest, including advanced/bring-your-own-data options.

  • companyDomains (Company websites) — The company websites you want jobs from. Just the domain - stripe.com, figma.com. The Actor works out which applicant tracking system each one uses. Max 100 per run.

Support

Found a bug or have a feature request? Use the Issues tab on this Actor's Apify Store page, or message the author (om_kh) directly through Apify — every report gets a reply.