{"description":"Searches Jobindex like its job search page (/jobsoegning?q=...): job title, employer, place of work, first and last publication dates and link to the ad. First page of results (about 20 ads). Sponsored ads (paid placements) are dropped. Returns an empty list when nothing matches.","effect":"read","id":"jobindex.dk/search-jobs","keywords":["jobindex","job","jobs","ledige job","stillinger","karriere","arbejde","jobsøgning","danmark","denmark","job search","vacancies","udvikler","sygeplejerske"],"output":{"schema":{"properties":{"jobs":{"items":{"properties":{"company":{"type":["string","null"]},"deadline":{"description":"Last day to apply, YYYY-MM-DD","type":["string","null"]},"location":{"type":["string","null"]},"published":{"description":"First publication date, YYYY-MM-DD","type":["string","null"]},"title":{"type":"string"},"url":{"type":"string"}},"required":["title","url"],"type":"object"},"type":"array"},"query":{"type":"string"}},"required":["query","jobs"],"type":"object"},"value":"{query: params.query, jobs: steps.search.jobs[?title != `null` && url != `null`].{title: title, company: company || `null`, location: location || `null`, published: published || `null`, deadline: deadline || `null`, url: url}}"},"params":{"additionalProperties":false,"properties":{"query":{"description":"Job title, skill or keyword, e.g. 'udvikler', 'sygeplejerske', 'lager'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"har","notes":"The work item's search_url (/?s=...) is a 404 page; the real search is /jobsoegning?q=..., whose HTML carries the result list only as the inline 'var Stash' JSON (storeData.searchResponse.results: headline, company, area, dates, share_url, has_spo). Sponsored results (has_spo true) are dropped. The script is picked by its position (third script element), since the selector language has no text match.","recorded_at":"2026-11-08T13:00:00.000Z","recorded_by":"wield-forge (claude-haiku agent)"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"DK","id":"jobindex.dk","language":"da","name":"Jobindex","origin":"https://www.jobindex.dk","origins":["https://www.jobindex.dk"]},"steps":[{"description":"Job search page /jobsoegning?q=...; read-only GET. The page's job list is client-rendered from the inline 'var Stash' JSON (jobsearch/result_app/list.storeData.searchResponse.results). Sponsored results (has_spo true) are dropped.","expect":{"assert":"status == `200` && contains(body, 'var Stash')","content_type":"html","status":[200]},"extract":{"embedded_json":{"selector":"script:nth-of-type(3)","strip_js":true,"strip_js_after":"var Stash = ","vars":{"jobs":"\"jobsearch/result_app/list\".storeData.searchResponse.results[?has_spo == `false`].{title: headline, company: (company.name || companytext), location: area, published: firstdate, deadline: lastdate, url: share_url}"}}},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"q":"{{params.query}}"},"url":"/jobsoegning"}}],"task":"Search Danish job ads on Jobindex","tos":{"notes":"Not reviewed. One search page per call, the same page a visitor loads; no basket, account or checkout calls. The site's terms on automated access were not checked.","reviewed":false},"verify":{"checks":["length(output.jobs) > `0`","starts_with(output.jobs[0].url, 'https://www.jobindex.dk/vis-job/')","length(output.jobs[?title != `null`]) == length(output.jobs)","length(output.jobs[?company != `null`]) > `0`"],"example_params":{"query":"udvikler"},"max_ms":6000},"version":1}