Skip to main content
99 years and 349 days since the five-day weekRead the story

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/v1 and /api/v2. Responses over the limit return HTTP 429 with a Retry-After header.
  • 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

ParamTypeNotes
pageintDefault 1. Clamped to ≥1.
limitintDefault 25. Max 100.
categoryCSVe.g. engineering,sales
levelCSVe.g. senior,lead
scheduleCSVe.g. 4_day_week,9_day_fortnight
work_arrangementCSVonsite, hybrid, remote
skillsCSVskill slugs, e.g. python,go
countrystringmatches office or remote-allowed country
salary_minintUSD dollars
salary_maxintUSD dollars
posted_afterintdays ago (capped at 365)
qstringfull-text search
sortstringdate (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..N until has_more == false.
  • id_str and company_id are UUID strings now (were integers in the old API).
  • filters combines skills, tech stack, and tools into a single {label, value} list, deduped, matching the old shape.
  • category, level, reduced_hours, and remote_level return human-readable labels matching the old API format.
  • description_html is intentionally not exposed in either version — use the plain description field and render it yourself.
  • total_raised is 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.