Remote Jobs Search: RemoteOK, WWR, Himalayas and More Boards avatar

Remote Jobs Search: RemoteOK, WWR, Himalayas and More Boards

Pricing

from $1.50 / 1,000 job returneds

Go to Apify Store
Remote Jobs Search: RemoteOK, WWR, Himalayas and More Boards

Remote Jobs Search: RemoteOK, WWR, Himalayas and More Boards

Search six remote job boards in one run: Remote OK, We Work Remotely, Himalayas, Working Nomads, Jobgether and Y Combinator. One deduplicated row per job with salary, tags and link, plus a new-jobs-only monitoring mode.

Pricing

from $1.50 / 1,000 job returneds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Search six remote job boards in one run and get one clean, deduplicated list of jobs. Remote OK, We Work Remotely, Himalayas, Working Nomads, Jobgether and Y Combinator's Work at a Startup are searched together for your keywords. A job posted on several boards comes back once, with the other boards named. Each row has the title, company, location, salary when stated, skill tags, posting date and the link to the job page.

Who uses it. Job-board and newsletter builders who need a daily feed of new remote jobs, recruiters and agencies tracking who is hiring remotely for a skill, and job seekers or AI agents that want one search instead of six. Turn on monitoring and schedule it to get only the jobs that are new since your last run.

No login, no API key, no proxy. Every source is a public feed or a documented public API.

How to use

  1. In the Apify Console. Open the actor page and click Start — the keywords field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~remote-jobs-unified-search/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"keywords":["python"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"keywords": [
"python"
]
}

One keyword or phrase per line, for example python, product designer or customer support. A job matching any one of them is returned. Leave empty to get the newest remote jobs from every board. Accepted formats: python, product designer, customer support.

One combined search runs per call, whatever the number of keywords. A job is returned when any one keyword matches.

FieldWhat it does
keywordsJob titles, skills or company names. Empty = the newest remote jobs from every board. Up to 10.
maxItemsMost jobs to return (and pay for). Default 100, up to 1,000. The newest are kept.
boardsOptional. Narrow the search to some boards, by name. Empty = all six.
postedWithinDaysOptional. Only jobs posted in the last N days.
titleMatchOnlyOn = the keyword must be in the job title itself.
onlyNewSinceLastRunMonitoring: only return and bill jobs not seen on your earlier runs.
deltaNameOptional name for a monitoring watchlist.

How matching works. On Working Nomads, We Work Remotely, Remote OK and Y Combinator the keyword is matched against the title, company, category and skill tags. Short keywords match whole words only, so java does not return JavaScript jobs. Himalayas and Jobgether run your keyword through their own search, which also reads the job description, and their newest matches are returned. Turn on titleMatchOnly when you want only jobs with the keyword in the title, on every board.

How much each board holds. The boards publish their current listings, not an archive: about 100 jobs on Remote OK, 90 on We Work Remotely, 50 on Working Nomads, the 30 newest engineering jobs (remote ones only) on Y Combinator, and the top 20 (Himalayas) and newest 25 (Jobgether) matches per keyword. A narrow keyword returns tens of jobs per run, not thousands. Schedule the actor to build up a history.

Output

One row per job. The headline fields of three rows from a real python search:

sourcealsoListedOntitlecompanylocationsalaryTextpostedAturl
Remote OKWorking Nomads, We Work Remotely, HimalayasSenior React Full stack DeveloperLemon.ioAnywhere in the WorldUSD 80,000-200,0002026-10-09https://remoteok.com/remote-jobs/...
JobgetherSoftware Development Engineer in Test II (Python)Akamai TechnologiesNorth America, CanadaCAD 82,100-147,900/year2026-10-10https://jobgether.com/offer/...
HimalayasPython DeveloperAssetIntelUnited States2026-08-22https://himalayas.app/companies/...

The first job was listed on four boards and is returned once; fields its Remote OK copy lacked (here the location) are filled from the other boards' copies.

Every column:

queryfoundstatussearchSummaryjobCounttotalMatchedduplicatesMergedtruncatedboardsSearchedboardsFailedmonitorStatusjobssourcealsoListedOnjobIdtitlecompanylocationemploymentTypesenioritysalaryMinsalaryMaxsalaryCurrencysalaryTextcategorytagspostedAturldescriptionSnippetmatchedKeywordisNewfirstSeenAtscrapedAt
pythontrueOK<all jobs (full list)><description (first 300 characters)><is this job new?>1970-01-01T00:00:00.000Z

A search that matches nothing comes back as one row with "found": false and is never charged. Values a board does not publish are empty (null), never 0: salary is stated on a minority of postings, and Y Combinator publishes no posting date. boardsFailed names any board that did not answer on a run; the other boards' jobs are still returned.

Using Remote OK rows. Remote OK asks anyone who republishes its listings to link back to the job's Remote OK URL (a normal followed link) and to name Remote OK as the source. Every row carries both (url and source), so keep them if you show these jobs on a site.

Pricing

Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed per item only when data is actually found and returned — see .actor/pay_per_event.json for exact prices. A miss is never charged.

You pay per job returned. A search with no match, a monitoring run with nothing new, and the duplicate copies merged into one row cost nothing.

Example runs

Paste any of these into the Input tab and press Start. All three return rows with no key, no token and no account of your own beyond an Apify login.

Python jobs across all six boards, newest 30. The default shape.

{
"keywords": ["python"],
"maxItems": 30
}

Design jobs with the keyword in the title, posted in the last 14 days.

{
"keywords": ["designer"],
"titleMatchOnly": true,
"postedWithinDays": 14,
"maxItems": 50
}

Daily alert for new customer support jobs. Schedule it once a day: each run returns only jobs not seen before.

{
"keywords": ["customer support", "customer success"],
"onlyNewSinceLastRun": true,
"maxItems": 100
}

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~remote-jobs-unified-search/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"keywords":["python"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~remote-jobs-unified-search/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"keywords":["python"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~remote-jobs-unified-search/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"keywords":["{{search}}"]}, mapping the row's search into the keywords array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "remote jobs scraper" — the agent will find and run this actor.