Developer API
A free, public, no-auth JSON API for every live job on 4dayweek.io. Paginated, filterable, and designed for scripts, dashboards, and aggregators. If you build something cool with it, a link back to 4dayweek.io is all we ask.
Rate limits & fair use
- 60 requests per minute per IP across both
/api/v1and/api/v2. Responses over the limit return HTTP 429 with aRetry-Afterheader. - Responses are cached for 60 seconds at the edge —
Cache-Control: public, max-age=60. Don't hammer; you'll just get the same bytes back. - Jobs are refreshed a few times per day. There's no live stream — a few polls per hour is plenty.
- Please link back to
https://4dayweek.io. If you use the API in a public product, a small credit goes a long way.
v2 — Modern (recommended)
The richer, paginated, filterable REST endpoint. Use this for anything new. Structured location data, separate skills, stack, tools, schedule_type enum, ISO 8601 timestamps, and a trimmed company object. Salary values are in cents (e.g. 8000000 = $80,000 USD).
Endpoints
- GET /api/v2/jobs
- GET /api/v2/jobs/{slug}
Query parameters
| Param | Type | Notes |
|---|---|---|
| page | int | Default 1. Clamped to ≥1. |
| limit | int | Default 25. Max 100. |
| category | CSV | e.g. engineering,sales |
| level | CSV | e.g. senior,lead |
| schedule | CSV | e.g. 4_day_week,9_day_fortnight |
| work_arrangement | CSV | onsite, hybrid, remote |
| skills | CSV | skill slugs, e.g. python,go |
| country | string | matches office or remote-allowed country |
| salary_min | int | USD dollars |
| salary_max | int | USD dollars |
| posted_after | int | days ago (capped at 365) |
| q | string | full-text search |
| sort | string | date (default) or salary |
Example request
curl 'https://4dayweek.io/api/v2/jobs?schedule=4_day_week&limit=5'Example response
Wrapped in {data, page, limit, total, has_more}. One item from data shown below.
{
"id": "018f...-uuid",
"slug": "site-reliability-engineer-ggfft",
"title": "Site Reliability Engineer",
"description": "We are looking for an SRE to join the Cloud team...",
"url": "https://4dayweek.io/job/site-reliability-engineer-ggfft",
"category": "engineering",
"role": "Site Reliability Engineer",
"level": "mid",
"contract_type": "permanent",
"schedule_type": "4_day_week",
"hours_per_week_min": 32,
"hours_per_week_max": 32,
"work_arrangement": "remote",
"is_remote": true,
"office_locations": [{"city": "Riyadh", "country": "Saudi Arabia", "continent": "Asia"}],
"remote_allowed": [{"country": "Saudi Arabia"}],
"timezones": ["Asia/Riyadh"],
"salary_min": 8000000,
"salary_max": 12000000,
"salary_currency": "USD",
"salary_period": "year",
"skills": [{"name": "Leadership", "slug": "leadership"}],
"stack": [{"name": "Python", "slug": "python"}, {"name": "Kubernetes", "slug": "kubernetes"}],
"tools": [{"name": "Datadog", "slug": "datadog"}],
"posted_at": "2025-01-12T00:00:00Z",
"expires_at": "2025-05-12T00:00:00Z",
"company": {
"id": "018f...-uuid",
"slug": "lucidya",
"name": "Lucidya",
"url": "https://4dayweek.io/company/lucidya",
"website": "https://lucidya.com",
"logo_url": "https://media.4dayweek.io/companies/lucidya.png",
"short_description": "Arabic NLP SaaS",
"country": "Saudi Arabia",
"employees": 100,
"schedule_type": "4_day_week",
"hours_full_time": 32,
"work_life_score": 85
}
}Single job detail
curl 'https://4dayweek.io/api/v2/jobs/site-reliability-engineer-ggfft'Returns a single V2JobDTO (same shape as an item from the list) or 404 if the slug is unknown.
v1 — Legacy
A compatibility lane that mirrors the field shape of the original 4dayweek.io/api endpoint. Kept so existing integrations keep working. Prefer v2 for new projects — v1 only supports page and limit, and its field names are legacy.
Endpoint
- GET /api/v1
Differences from the old /api
- Paginated now. The old endpoint dumped every live job in one blob; v1 defaults to 25 per page, max 100. Iterate
?page=1..Nuntilhas_more == false. id_strandcompany_idare UUID strings now (were integers in the old API).filterscombines skills, tech stack, and tools into a single {label, value} list, deduped, matching the old shape.category,level,reduced_hours, andremote_levelreturn human-readable labels matching the old API format.description_htmlis intentionally not exposed in either version — use the plaindescriptionfield and render it yourself.total_raisedis no longer included in company objects.
Example request
curl 'https://4dayweek.io/api/v1?page=1&limit=25'Example response
Wrapped in {usage, page, total, has_more, jobs}. One item from jobs shown below.
{
"id_str": "018f...-uuid",
"title": "Site Reliability Engineer",
"slug": "site-reliability-engineer-ggfft",
"url": "https://4dayweek.io/job/site-reliability-engineer-ggfft",
"description": "We are looking for an SRE...",
"category": "Engineering",
"role": "Site Reliability Engineer",
"level": "Mid-level",
"hours": 32,
"reduced_hours": "Offered",
"is_remote": true,
"location_city": "Riyadh",
"location_country": "Saudi Arabia",
"location_continent": "Asia",
"location_original": "Remote in Riyadh (Saudi Arabia)",
"posted": 1736640000,
"filters": [
{"label": "Python", "value": "python"},
{"label": "Kubernetes", "value": "kubernetes"}
],
"company_id": "018f...-uuid",
"company_name": "Lucidya",
"company": {
"id_str": "018f...-uuid",
"name": "Lucidya",
"slug": "lucidya",
"url": "https://4dayweek.io/company/lucidya/jobs",
"category": "Technology",
"short_description": "Arabic NLP SaaS",
"description": "...",
"country": "Saudi Arabia",
"employees": 100,
"logo_url": "https://media.4dayweek.io/companies/lucidya.png",
"company_url": "https://lucidya.com",
"reduced_hours": "4 day week @ 100% salary",
"four_day_reference_text": "We offer a 4-day work week at full pay.",
"images": [],
"remote_level": "100% remote"
}
}OpenAPI spec
A machine-readable OpenAPI 3.1 spec is served at /openapi.yaml. Import it into Postman, Insomnia, or a codegen tool to generate a typed client in your language of choice.
Questions, issues, or feedback?
Drop us a note via the contact page and we'll get back to you. If you build something with the API, tell us — we love to see it.