03Jobs API · Pricing
Jobs API pricing in 2026 — the 1,000-result cap, and the API that gets past it
Almost every jobs API quietly inherits the same ceiling: the public source returns at most a thousand postings per search, no matter what you ask for. Below is what that cap costs you, how segmentation reopens it, and the one figure no provider prints — how much of each field is actually filled.
Competitor prices verified 17 August 2026 on each provider's own page. Volume figures measured on live runs. Last updated 17 August 2026.
The public source's hard ceiling per query
Same query, segmented by window & basin — in 123 s
RankFabrik on Apify — pay per posting returned
Per 1,000 job postings, side by side
| Provider | Free tier | Paid | Per 1,000 | Model |
|---|---|---|---|---|
| Coresignal Jobs API | 7-day trial | $49/mo · 2,500 credits | $19.60 | Hosted API |
| Apify Indeed/LinkedIn actors | Platform credit | Pay-per-use | Varies by actor | Third-party actors |
| RankFabrik Jobs | Empty runs — never billed | Pay-per-event on Apify | $2.50–$4.00 | Apify actor |
Coresignal's number is exact because its billing is: $49 for 2,500 credits, one credit per job posting, so $19.60 per 1,000. The third-party Apify row is left as a range on purpose — the marketplace's Indeed and LinkedIn scrapers are dozens of competing actors with no shared price and no measured fill rate. RankFabrik's own actor prints a firm pay-per-event figure; we only put one where it's published.
The 1,000 ceiling, and how it's reopened
No single request asks the source for more than it will give. The trick is to ask along axes that each carry their own thousand:
- By publication window — last 24 hours, last 7 days, last 30 days. Each window is its own search, each with its own cap.
- By employment basin — the same role split across local labour markets rather than pulled as one national blob.
On a single "developer / Île-de-France" query, a plain call returned 949 postings. Opening the window and basin axes took the same query to 6,012 distinct postings in 123 seconds — and the response lists each axis it opened and how many it added, so the number is one you can reproduce, not one you have to trust.
The figure no one prints: fill rate
Providers count fields they could return ("20+ data points"). None tell you, before you pay, how many postings actually carry a salary. RankFabrik measures it and puts it in the response. Here is a real Île-de-France developer sweep — the percentage of postings where each field was actually filled:
Salary at 23% is not a failing — it is the truth about public job listings, and you
read it from the completeness block instead of discovering it after you have
imported ten thousand rows.
What a response looks like
One call, distinct postings, deduplicated on the posting identifier. Missing fields
come back empty — never silently dropped — and the completeness block scores
the batch.
GET /balayer?metier=developpeur&lieu=France&fenetres=1
{
"metier": "developpeur",
"lieu": "France",
"count": 6012,
"axes": { "publicationWindows": true, "cities": 8 },
"completeness": {
"title": 100,
"company": 97,
"applicantsCount": 88,
"salary": 23
},
"jobs": [
{
"title": "Développeur Node.js — H/F",
"company": "Groupe Ferrand",
"location": "Paris 11e",
"salary": null,
"applicantsCount": 37,
"published": "2026-08-14"
}
]
}
Pricing, in plain units
One event is one job posting returned — job for a plain listing,
job-complete for a row enriched with description, seniority and applicant
count. Overlapping cells and cross-window duplicates are removed on the posting identifier
before anything is counted.
job — posting
job-complete — posting + company
Pay per posting returned — you are charged only for events the actor actually returns, never for an empty run. Metered and billed by Apify; no separate RankFabrik account to open.
Questions
Why do job APIs stop at 1,000 results per search?
The public job source caps a single query at roughly 1,000 positions — ask for more and you still get 1,000. Most wrappers inherit that ceiling silently. RankFabrik never asks the source for more than it allows; it asks several times instead, segmenting by publication window (24h, 7 days, 30 days) and by employment basin. Each segment reopens a fresh thousand. On one query that took a plain call from 949 to 6,012 postings, in 123 seconds, and the response lists every axis it opened and what each one returned.
How much does a jobs API cost per 1,000 postings?
RankFabrik runs on Apify and bills per event, not per month: $$2.50 per 1,000 for a plain listing (job) and $$4.00 per 1,000 for a full-fiche row with description, seniority and applicant count (job-complete). You pay only for postings the actor actually returns — an empty run costs nothing. Coresignal's self-service Jobs API works out to $19.60 per 1,000 — its $49 Mini plan covers 2,500 credits and a job posting costs one credit. Prices verified 17 August 2026 on each provider's own page.
How are duplicate postings handled?
Deduplication is done on the posting identifier, not the job title. Two "Node.js Developer" roles posted in Lyon and Nantes are two real openings and both survive; a title-based merge would have thrown one away. That means the count you get is a count of distinct postings, not an inflated total.
Can I see how complete the data is before paying?
Yes. Every response carries a completeness block scoring each field across the batch — on a real Île-de-France developer sweep: title 100%, company 97%, applicants 88%, salary 23%. Salary is thin on public listings and you learn that from the response, not after you have paid for volume. That measured per-field fill rate ships on every call, so you size a run on real numbers rather than a guess.
Is the extra volume automatic?
No, and that is deliberate. The segmentation axes each cost requests and stay off by default: a call that does not switch them on returns less — it does not silently run ten times slower and bill you for it. You open the axes when you want exhaustiveness, and the response tells you exactly what each one added.
Does it return the company behind the posting, not just the job?
Yes. Every listing carries its company page link, and /societe reads the public company page to return its size, industry, website and head office — the enrichment other hosted jobs APIs sell as a separate company product. On our samples the public page filled all four fields seven times out of seven; when a field is not shown it comes back empty, never guessed. It stays off by default (societe=1 on /completes) because it costs one extra request per company.