Search jobs
search_jobsSearch live job listings with genuinely better working hours.
Every listing carries an explicit schedule_type, so you never have to infer one:
"4_day_week": 36 hours or less, 100% salary. The ONLY type that is reduced hours at full pay.
"4_day_week_pro_rata": four days at pro-rata (reduced) pay.
"9_day_fortnight", "half_day_fridays", "rotating_4_day", "summer_fridays", "part_time": other genuinely reduced-hours patterns.
"compressed_week": a 4x10. The SAME 40 hours in four days. NOT a 4-day week, and never to be described as one.
"flexible_hours", "unlimited_pto", "generous_pto", "flex_fridays", "no_meeting_days", "generous_parental_leave", "best_place_to_work": a full working week with a flexibility or leave policy.
To answer "find me a 4-day week job", pass schedule_type="4_day_week". Passing nothing returns all reduced-hours AND flexibility listings, which is usually broader than the user meant.
On locations: a job with no location restriction is worldwide-remote, so it matches ANY country filter. A large result count for a country therefore does not mean those roles are based there. Read each result's "locations" and "work_arrangement" before saying a job is in a particular place.
Results can also be narrowed by seniority (level), by skill/technology slugs, by a minimum work-life score and by how recently the employer posted.
Paging: a response returns at most 25 jobs and carries page, page_size, returned, has_more and, when another page exists, next_page. total_matching is the size of the whole match set. With a query it counts full-text matches over title AND description, so a job can be counted for a word that appears only in its body.
Each result carries the job's url on 4dayweek.io and its slug; get_job takes that slug and returns the full listing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number. Default 1, maximum 200. | |
| level | No | Seniority. One of entry, mid, senior, lead, executive. | |
| limit | No | Results per page. Default 10, maximum 25. | |
| query | No | Free-text search over job title and description. | |
| skills | No | Skill, technology or tool SLUGS, lowercase and hyphenated, e.g. react, python, customer-support. A job matches if it carries ANY of them. | |
| country | No | Country name, e.g. United Kingdom or United States. Matches jobs with an office in that country AND remote jobs open to it — including worldwide-remote roles, which match every country. Check each result's locations field before describing a job as being IN that country. | |
| category | No | Job category, e.g. engineering, product, design, marketing, sales, data, devops, finance, hr, legal, operations, security, content, customer-success. | |
| schedule_type | No | Filter by schedule type. Use 4_day_week for a genuine 4-day week at full pay. compressed_week is a 4x10 and is NOT a 4-day week. | |
| work_arrangement | No | One of remote, hybrid or onsite. | |
| posted_after_days | No | Keep only jobs the employer posted within this many days, 1 to 365. | |
| min_work_life_score | No | Keep only jobs whose work-life score is at least this, on a 0-100 scale. The site's own filter offers 55, 70 and 85. See /methodology for how it is calculated. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| jobs | No | ||
| note | No | ||
| page | No | ||
| has_more | No | ||
| returned | No | ||
| next_page | No | ||
| page_size | No | ||
| paging_note | No | ||
| total_matching | No | ||
| paging_limit_reached | No |