Date, ID, and Age Slicing Parameters Documentation
Slice smarter, sync faster: precise dataset windows for the /api/jobs/ endpoint
Table of contents
The /api/jobs/ endpoint supports dedicated slicing parameters to retrieve
exact subsets of job data by publication date, job ID range, and posting age.
These parameters are useful for deterministic dataset windows, incremental
updates, and efficient synchronization pipelines.
Endpoint Scope
- Endpoint:
/api/jobs/ - Method:
GET - Primary use: deterministic dataset windows, incremental updates, and efficient sync pipelines
Query Scope Limits
To keep response times predictable as the job database grows, /api/jobs/
rejects query shapes that could require excessively broad database work. The
limits apply to every request that reaches the Jobs endpoint, regardless of
subscription tier or staff status.
- The effective published-date range cannot exceed 365 days.
- An explicit
min_idandmax_idrange cannot exceed 10,000,000 IDs. - The ID limit is calculated inclusively as
max_id - min_id + 1. - A date or age filter does not relax the ID limit. Both limits are checked independently.
- An unbounded historical query such as
max_age=offwithout another lower published-date bound or a bounded ID range is rejected. page_sizedoes not bypass these limits. It controls the response page size, not the size of the database work needed to determine the result set.
These limits make resource usage more predictable and prevent requests that
would be likely to time out before returning useful results. Requests that
exceed a limit return 400 Bad Request with a query_scope error.
The limits described here apply to /api/jobs/. They do not apply to
/api/jobsexpired/, including requests using expired_since or
expired_until.
Slicing Parameters
published_since
- Type: date string (
YYYY-MM-DD) - Behavior: includes jobs published on or after the given date
- Scope rule: when no earlier lower bound is supplied, the effective upper bound is today, so the range must be no more than 365 days
Example:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'published_since=2026-05-01'
published_until
- Type: date string (
YYYY-MM-DD) - Behavior: includes jobs published on or before the given date
- Scope rule: use it with a lower published-date bound or a numeric
max_age; an upper bound by itself does not define a safe historical scope
Example:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'published_since=2026-05-01' \
--data-urlencode 'published_until=2026-05-31'
min_id and max_id
- Type: integer
- Behavior:
min_idincludes jobs withid >= min_id;max_idincludes jobs withid <= max_id - Scope rule: when both are supplied, their inclusive span must be no more than 10,000,000 IDs, even if a date or age filter is also supplied
- Recommended use: send both values for deterministic incremental and backfill batches
Example of a range exactly at the limit:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'min_id=10000000' \
--data-urlencode 'max_id=19999999'
If an incremental feed starts at watermark + 1, the largest matching upper
bound is:
max_id = watermark + 10,000,000
If the feed starts at the watermark itself, use watermark + 9,999,999
instead, because both endpoints are inclusive.
A one-sided ID filter can be used when it is combined with a numeric age or a
lower published-date bound. For deterministic synchronization, a bounded pair
is still preferred. An ID-only request must include both min_id and max_id.
min_age
- Type: integer (days)
- Behavior: includes jobs at least N days old
- Scope rule: use it with a lower bound such as
max_ageorpublished_since;min_agealone leaves the historical lower boundary open
Example:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'min_age=14' \
--data-urlencode 'max_age=45'
max_age
- Type: integer (days), or
off,null, or0for non-access-lite plans - Behavior: includes jobs published within the last N days
- Scope rule: a numeric value creates a lower published-date bound; the effective range must still be no more than 365 days
Example:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'max_age=180'
Disabling the age filter is allowed only when another safe scope is present:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'max_age=off' \
--data-urlencode 'min_id=20000000' \
--data-urlencode 'max_id=20999999'
Default Age-Window Behavior
When no slicing parameter is supplied, /api/jobs/ applies a default
max_age=90 window.
For non-access-lite plans, if any slicing parameter is present, the implicit 90-day window is not added. This ensures that explicit date, ID, and age queries are not silently narrowed by the default age limit.
For access-lite plans, date, ID, and age slicing parameters are not available; access is restricted to the latest 90 days.
Combination Rules and Examples
Date range within the limit
This request covers 90 days and is accepted:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'published_since=2026-01-01' \
--data-urlencode 'published_until=2026-03-31' \
--data-urlencode 'page_size=4000'
ID range with an age filter
Both restrictions are checked. This request is accepted because its ID range is 10,000,000 IDs and its age window is 180 days:
curl -G 'https://jobdataapi.com/api/jobs/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'min_id=50000001' \
--data-urlencode 'max_id=59999999' \
--data-urlencode 'max_age=180'
The following request is rejected because the ID range is too wide, even
though max_age=180 narrows the publication dates:
/api/jobs/?min_id=50000001&max_id=60000001&max_age=180
Incremental feed window
For a feed whose last successfully processed ID is watermark, request a
bounded batch and advance the watermark only after all pages are stored:
min_id=watermark+1
max_id=watermark+10000000
max_age=180
page_size=100
The numeric age filter is optional for this pattern, but it can provide an additional freshness boundary. The ID range limit still applies.
Unbounded historical query
This request is rejected because disabling the age filter does not provide a safe lower boundary by itself:
/api/jobs/?max_age=off
Use an explicit date or ID scope instead:
/api/jobs/?max_age=off&published_since=2026-01-01
The second example is accepted only when the effective date range through today is no more than 365 days.
Overly broad date query
This request is rejected when the effective range is more than 365 days:
/api/jobs/?max_age=off&published_since=2024-01-01
Split historical work into smaller date windows or bounded ID ranges.
Error Handling
Check for 400 Bad Request before starting pagination. A scope validation
failure has the following general shape:
{
"query_scope": [
"The job ID range cannot exceed 10,000,000 listings."
]
}
Do not retry the same request unchanged. Adjust the date or ID bounds, then start pagination again from page 1.
Expired Jobs Date Window
The /api/jobsexpired/ endpoint is separate from /api/jobs/ and is not
affected by the 365-day published-date or 10,000,000-ID limits described
above. It applies its own default 60-day expiration window when no slicing
parameter is supplied.
Use expired_since and expired_until for explicit expiration windows:
curl -G 'https://jobdataapi.com/api/jobsexpired/' \
-H 'Authorization: Api-Key YOUR_API_KEY' \
--data-urlencode 'expired_since=2026-05-01' \
--data-urlencode 'expired_until=2026-05-31' \
--data-urlencode 'page_size=4000'
The expired-jobs endpoint is available to access pro subscribers and higher.
Plan and Access Rules
All plans except access lite
- Date, ID, and age slicing are supported when the subscription permits it.
- Numeric
max_agevalues create a date lower bound. max_age=off,max_age=null, andmax_age=0require another safe scope.- The query scope limits in this article still apply.
API access lite
- Access is restricted to the latest 90 days on
/api/jobs/. - The following parameters are not available:
published_sincepublished_untilmin_idmax_idmin_agemax_age
Anonymous requests
- Anonymous requests cannot use date, ID, or age slicing parameters.
- Anonymous requests cannot request additional pages.
Efficiency Notes
- Use explicit date or ID boundaries for reproducible dataset slices.
- Split historical pulls into date windows no longer than 365 days, preferably much smaller when the result volume is high.
- Split ID work into ranges no wider than 10,000,000 IDs. Smaller ranges are recommended for incremental feeds and easier recovery.
- Use
page_sizeup to 4000 for large pulls, but process each page sequentially and write results incrementally. - Follow the returned
nextURL rather than synthesizing page URLs. - Deduplicate by API job
idwhen processing overlapping windows. - Keep each window independently retryable and do not advance a sync checkpoint until all pages in the window have been stored successfully.
- Add a short date overlap or periodic reconciliation pass when late-arriving listings matter to your integration.
For complete job data downloads and large historical analytics workloads, consider the CSV and Parquet File Downloads Documentation.
Related Docs
Job Cities API Endpoint Documentation
Multi-value Parameters Documentation
Job Regions API Endpoint Documentation
Tags API Endpoint Documentation
Currency Rates API Endpoint Documentation
CSV and Parquet File Downloads Documentation
Job Countries API Endpoint Documentation
Vector Embeddings and Search API Documentation
Jobs API Endpoint Documentation
Jobs Expired API Endpoint Documentation
Full-Text Search on Job Descriptions
Job States API Endpoint Documentation
Job Types API Endpoint Documentation
Explore jobdata API with AI tools
Ask an AI assistant how to search and build with live job data.