{"description":"Searches Reed.co.uk, one of the UK's largest job boards, like its search: job title, employer or agency, location, contract type (permanent, contract, temporary), full or part time, remote/hybrid/on-site, salary range with its unit (per year, day or hour), posted and expiry dates, and the link, 25 per page with the total. Filters: distance, salary, contract type, hours. Promoted jobs are dropped by default; include_ads keeps them, marked.","effect":"read","id":"reed.co.uk/search-jobs","keywords":["reed","reed.co.uk","jobs","uk jobs","london jobs","vacancies","permanent","contract","temporary","part time","remote","hybrid","salary","recruitment"],"output":{"schema":{"properties":{"jobs":{"items":{"properties":{"company":{"description":"Employer or recruitment agency","type":["string","null"]},"contract":{"description":"permanent, contract or temporary","type":["string","null"]},"easy_apply":{"type":"boolean"},"expires_at":{"type":["string","null"]},"hours":{"description":"full_time, part_time or both","type":["string","null"]},"location":{"type":["string","null"]},"posted_at":{"description":"UK local time, no offset","type":["string","null"]},"promoted":{"type":"boolean"},"salary_from":{"description":"GBP","type":["number","null"]},"salary_per":{"description":"year, day or hour","type":["string","null"]},"salary_to":{"description":"GBP","type":["number","null"]},"title":{"type":"string"},"url":{"type":"string"},"working":{"description":"remote, hybrid or onSite","type":["string","null"]}},"type":"object"},"type":"array"},"keywords":{"type":"string"},"location":{"type":["string","null"]},"page":{"type":"integer"},"total":{"type":["integer","null"]}},"required":["keywords","jobs"],"type":"object"},"value":"let $ads = params.include_ads == `true`, $s = steps.search[0] in {keywords: params.keywords, location: params.location || `null`, total: $s.count || `0`, page: params.page || `1`, jobs: map(&(let $ty = to_string(type), $pe = to_string(per) in {title: title, company: company || `null`, location: location || `null`, contract: (`[[\"1\",\"permanent\"],[\"2\",\"contract\"],[\"4\",\"temporary\"]]`[?@[0] == $ty] | [0][1]) || `null`, hours: (full && part && 'both') || (part && 'part_time') || (full && 'full_time') || `null`, working: working || `null`, salary_from: (from > `0` && from) || `null`, salary_to: (to > `0` && to) || `null`, salary_per: ((from > `0` || to > `0`) && (`[[\"5\",\"year\"],[\"2\",\"day\"],[\"1\",\"hour\"]]`[?@[0] == $pe] | [0][1])) || `null`, posted_at: posted || `null`, expires_at: expires || `null`, easy_apply: easy == `true`, promoted: promoted == `true`, url: join('', ['https://www.reed.co.uk', url])}), ($s.jobs || `[]`)[?$ads || promoted != `true`])}"},"params":{"additionalProperties":false,"properties":{"contract":{"default":"any","enum":["any","permanent","contract","temporary"],"type":"string"},"distance_miles":{"default":10,"description":"Only with location","enum":[0,1,3,5,10,15,20,30,50],"type":"integer"},"hours":{"default":"any","enum":["any","full_time","part_time"],"type":"string"},"include_ads":{"default":false,"description":"Keep promoted jobs (marked)","type":"boolean"},"keywords":{"description":"Job title or skill, e.g. 'python', 'data scientist', 'warehouse'","maxLength":100,"minLength":2,"type":"string"},"location":{"description":"UK town, city or postcode area, e.g. 'london', 'manchester', 'leeds'","maxLength":60,"minLength":2,"type":"string"},"max_salary":{"description":"GBP per year","minimum":0,"type":"integer"},"min_salary":{"description":"GBP per year","minimum":0,"type":"integer"},"page":{"default":1,"maximum":20,"minimum":1,"type":"integer"}},"required":["keywords"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"The search form leads to /jobs/<keywords>-jobs-in-<location> (or /jobs/<keywords>-jobs) with filters as URL parameters (proximity, salaryFrom, salaryTo, perm/contract/temp, fullTime/partTime, pageno), which the page's criteria echo. __NEXT_DATA__ props.pageProps.searchResults: count, jobs[] (25 per page) with jobDetail {jobTitle, ouName, displayLocationName, jobType 1 permanent / 2 contract / 4 temporary, isFullTime, isPartTime, workingOption, salaryFrom, salaryTo, salaryType 5 per year / 2 per day / 1 per hour (checked against the snippets: '650–750 per day', '£14.70 per hour'), displayDate, expiryDate, isEasyApply, isPromoted}, url. A separate promotedJobs list is not read; promoted jobs inside the list are dropped unless include_ads.","recorded_at":"2026-11-07T22:30:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"GB","id":"reed.co.uk","language":"en","name":"Reed","origin":"https://www.reed.co.uk","origins":["https://www.reed.co.uk"]},"steps":[{"description":"Reed's search page (/jobs/<keywords>-jobs-in-<location>, the URL its search form produces), a Next.js page whose __NEXT_DATA__ carries the results (searchResults.jobs, count). Filters are the page's own URL parameters.","expect":{"content_type":"html","status":[200]},"extract":{"embedded_json":{"selector":"script#__NEXT_DATA__","vars":{"count":"props.pageProps.searchResults.count","jobs":"props.pageProps.searchResults.jobs[].{title: jobDetail.jobTitle, company: jobDetail.ouName, location: jobDetail.displayLocationName, type: jobDetail.jobType, full: jobDetail.isFullTime, part: jobDetail.isPartTime, working: jobDetail.workingOption, from: jobDetail.salaryFrom, to: jobDetail.salaryTo, per: jobDetail.salaryType, posted: jobDetail.displayDate, expires: jobDetail.expiryDate, easy: jobDetail.isEasyApply, promoted: jobDetail.isPromoted, url: url}"}}},"foreach":{"as":"f","in":"let $k = replace(lower(trim(params.keywords)), ' ', '-'), $l = params.location && replace(lower(trim(params.location)), ' ', '-'), $c = params.contract || 'any', $h = params.hours || 'any' in [{path: ($l && join('', [$k, '-jobs-in-', $l])) || join('', [$k, '-jobs']), perm: ($c == 'permanent' && 'true') || `null`, contract: ($c == 'contract' && 'true') || `null`, temp: ($c == 'temporary' && 'true') || `null`, full: ($h == 'full_time' && 'true') || `null`, part: ($h == 'part_time' && 'true') || `null`}]","max":1},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"contract":"{{f.contract}}","fullTime":"{{f.full}}","pageno":"{{params.page}}","partTime":"{{f.part}}","perm":"{{f.perm}}","proximity":"{{params.distance_miles}}","salaryFrom":"{{params.min_salary}}","salaryTo":"{{params.max_salary}}","temp":"{{f.temp}}"},"url":"/jobs/{{f.path | urlencode}}"}}],"task":"Search UK jobs on Reed","tos":{"notes":"robots.txt allows the search pages; it disallows /api/ and search URLs with sortBy=, so the recipe never sorts. No rules for Claude agents or AI content signals. One request per call; no applications, job alerts or saved jobs.","reviewed":false},"verify":{"checks":["length(output.jobs) >= `10`","output.total > `100`","length(output.jobs[?promoted]) == `0`","length(output.jobs[?contract == 'permanent']) == length(output.jobs)","length(output.jobs[?starts_with(url, 'https://www.reed.co.uk/jobs/')]) == length(output.jobs)","length(output.jobs[?salary_from != `null` && salary_per == 'year']) > `5`"],"example_params":{"contract":"permanent","keywords":"python","location":"london"},"max_ms":4000},"version":1}