{"description":"Searches Working Nomads remote job listings with the same search index the jobs page uses: job title, company, category, locations allowed, publication date, tags and link to the listing. First 20 matches by relevance. Expired listings are left out.","effect":"read","id":"workingnomads.com/search-jobs","keywords":["working nomads","workingnomads","remote jobs","remote work","digital nomad","remote developer jobs","remote marketing jobs","customer support jobs","work from anywhere","telecommute","freelance","jobs","homeoffice","stellenangebote"],"output":{"schema":{"properties":{"jobs":{"items":{"properties":{"category":{"type":["string","null"]},"company":{"type":["string","null"]},"locations":{"description":"Where the job may be done, e.g. 'USA - East'","items":{"type":"string"},"type":"array"},"published":{"description":"Publication timestamp (ISO 8601)","type":["string","null"]},"tags":{"items":{"type":"string"},"type":"array"},"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: map(&{title: title, company: company || `null`, category: category_name || `null`, locations: locations || `[]`, published: pub_date || `null`, tags: tags || `[]`, url: join('', ['https://www.workingnomads.com/jobs/', slug])}, steps.search.jobs[?title != `null` && slug != `null` && expired != `true`] || `[]`)}"},"params":{"additionalProperties":false,"properties":{"query":{"description":"Job title, skill or keyword, e.g. 'developer', 'marketing', 'customer support'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"har","notes":"The jobs page loads its list from an Elasticsearch index (jobsapi) on the site's own host. One plain GET to /jobsapi/_search?q=<query>&size=20 answers 200 JSON with hits.hits[]._source (title, company, category_name, locations, pub_date, tags, slug). Listing URLs are /jobs/<slug>, which answered 200 for a sample job. The apply link is an external ATS and is not returned.","recorded_at":"2026-11-08T17:25:00.000Z","recorded_by":"wield-forge (claude-haiku agent)"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"US","id":"workingnomads.com","language":"en","name":"Working Nomads","origin":"https://www.workingnomads.com","origins":["https://www.workingnomads.com"]},"steps":[{"description":"Read-only GET to the jobs search index the site's jobs page uses (elasticRootUrl + /jobsapi/_search, index jobsapi), with q and size. Each hit's _source holds the job fields.","expect":{"content_type":"json","status":[200]},"extract":{"json":{"jobs":"hits.hits[*]._source"}},"id":"search","request":{"headers":{"Accept":"application/json"},"method":"GET","query":{"q":"{{params.query}}","size":"20"},"url":"/jobsapi/_search"}}],"task":"Search remote jobs on Working Nomads","tos":{"notes":"Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.","reviewed":false},"verify":{"checks":["length(output.jobs) > `0`","length(output.jobs[?title != `null`]) == length(output.jobs)","length(output.jobs[?starts_with(url, 'https://www.workingnomads.com/jobs/')]) == length(output.jobs)"],"example_params":{"query":"developer"},"max_ms":5000},"version":1}