Remote Jobs Aggregator — 7 Boards, One Feed avatar

Remote Jobs Aggregator — 7 Boards, One Feed

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Remote Jobs Aggregator — 7 Boards, One Feed

Remote Jobs Aggregator — 7 Boards, One Feed

[💵 $1.50 / 1K] Remote jobs API: RemoteOK, Remotive, Himalayas, We Work Remotely, Jobicy, Arbeitnow and Working Nomads via their official feeds, deduplicated into one schema with salaries and full descriptions. Monitoring mode returns only new jobs. For n8n, Make, Zapier & MCP.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Dataloft Studio

Dataloft Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Remote jobs API that aggregates seven remote job boards — RemoteOK, Remotive, Himalayas, We Work Remotely, Jobicy, Arbeitnow and Working Nomads — through their own public APIs and RSS feeds, merged into one deduplicated feed with a single schema. Works with n8n, Make, Zapier, the Apify API and as an MCP tool for AI agents.

What is the Remote Jobs Aggregator?

Remote job data is scattered across boards that each have their own format, their own idea of what "location" means, and a lot of overlap between them. This actor calls all seven, normalises everything into one shape, and drops the duplicates before anything is charged.

Every source here is an official public feed the board publishes itself — no scraping around a login, no browser automation, no proxies needed, no personal data.

What data do you get from the remote job boards?

Output fields

FieldNotes
title, company, companyLogo
location, locations[], isRemoteregion restrictions kept where the board states them
department, employmentType, seniority, tags[]when the board exposes them
compensation{min, max, currency, interval} — structured where published, parsed from the salary text otherwise
descriptionHtml, descriptionTextfull posting, both formats
applyUrl, jobUrl
postedAt, scrapedAtISO 8601
source, sourceBoard, sourceHomepagewhich board the row came from

Example output JSON

{
"title": "Senior Backend Engineer",
"company": "Orca Bio",
"location": "Worldwide",
"isRemote": true,
"employmentType": "full_time",
"tags": ["python", "django", "aws"],
"compensation": { "min": 120000, "max": 160000, "currency": "USD", "interval": "year" },
"descriptionText": "We are looking for…",
"applyUrl": "https://remoteok.com/remote-jobs/…",
"postedAt": "2026-08-24T09:12:00.000Z",
"sourceBoard": "RemoteOK"
}

Which remote job boards are included?

BoardFeedTypical volume
RemoteOKofficial JSON API~100 latest
Remotiveofficial APIcurrent live set
Himalayasofficial API, paginated100,000+ available, you choose the depth
We Work Remotelyofficial RSS~90 latest
Jobicyofficial API v2~100 latest
Arbeitnowofficial job-board API, paginated1,000+
Working Nomadsofficial feed~40 latest

Himalayas caps every page at 20 rows no matter what you ask for, so the actor pages through it in 20s up to the depth you set — that one board alone can supply far more than the other six combined.

How to build a remote jobs feed

  1. Leave Sources empty to use all seven, or pick a subset.
  2. Add filters — keyword, title, location, department, posted-after, minimum salary.
  3. Set Max jobs in total on a first run to see the output shape cheaply.
  4. Export as JSON, CSV or Excel, or read it from the API.

Example input JSON

{
"sources": ["remoteok", "himalayas", "weworkremotely", "jobicy"],
"keywords": ["python", "backend"],
"locationIncludes": ["europe", "worldwide"],
"minSalary": 80000,
"postedAfter": "2026-08-01",
"maxJobsPerSource": 200,
"maxTotalJobs": 1000
}

Deduplication across boards

The same role frequently appears on several boards. Rows are keyed on the normalised apply URL, falling back to company + title + location. The run summary reports how many duplicates were removed so you can see the overlap — and duplicates are never charged.

Monitoring mode: only new remote jobs since your last run

Turn on Only new jobs since last run and the actor remembers every posting it has already delivered, in a named key-value store on your account, and skips it next time. A daily scheduled run then returns only the roles that appeared since yesterday, which is what a jobs-alert, a newsletter or a Slack feed actually needs. Use Seen-jobs store name to keep separate feeds (one per keyword set, say). The log reports monitoring: scanned N, new M, previously seen K. Pair it with a generous or unset Max jobs in total — the cap bounds the scan, so a capped run returns the next unseen postings rather than everything that is new.

How much does it cost to aggregate remote jobs?

$1.50 per 1,000 jobs. You pay per unique job saved to your dataset. Filtered-out postings, cross-board duplicates and previously-seen postings in monitoring mode are free — deduplication happens before anything is charged, so paying twice for the same role listed on three boards is not possible. Empty runs cost $0.

Cost examples

What you runRows chargedCost
All seven boards, latest window, no filters~600$0.90
Python + backend roles, salary shown, Europe/worldwide~120$0.18
Deep Himalayas pull, 5,000 rows5,000$7.50
Daily monitoring of all boards, ~80 new roles a day~80 per day~$0.12 per day, ~$3.60 per month

Integrations: n8n, Make, Zapier, MCP and the API

Use with AI agents (MCP server)

$npx -y @apify/actors-mcp-server --actors dataloft/remote-jobs-aggregator

Or enable the actor at https://mcp.apify.com with your Apify token. An agent can then answer "find me remote senior Python roles posted this week that state a salary" from one tool call.

n8n, Make and Zapier

Use the Apify node (n8n), the Apify app (Make) or the Apify integration (Zapier): Run Actordataloft/remote-jobs-aggregator → paste the input JSON → read dataset items. With monitoring mode on, "new remote jobs → Slack / Sheets / newsletter draft" is a three-node workflow.

JavaScript, Python and REST

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('dataloft/remote-jobs-aggregator').call({
keywords: ['python'], minSalary: 80000, maxTotalJobs: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(token=os.environ["APIFY_TOKEN"])
run = client.actor("dataloft/remote-jobs-aggregator").call(run_input={"keywords": ["python"], "maxTotalJobs": 300})
items = client.dataset(run["defaultDatasetId"]).list_items().items

REST: POST https://api.apify.com/v2/acts/dataloft~remote-jobs-aggregator/run-sync-get-dataset-items?token=…

What this Actor does and does not do

DoesDoes not
Merge seven official remote-job feeds into one schemaScrape LinkedIn, Indeed or boards that forbid it
Deduplicate the same role across boards before chargingLog in, solve CAPTCHAs, or bypass anti-bot systems
Parse salary ranges into structured min/max/currencyInvent salaries that are not published
Return only new postings in monitoring modeCollect any personal data

Limits and known caveats

  • Five of the seven boards publish a "latest" window (roughly 40–100 postings); only Himalayas and Arbeitnow paginate deep. Volume beyond a few hundred rows comes from those two.
  • Remotive's public API sometimes serves a small set; the per-source count in the run summary shows what the board returned.
  • Location on remote boards is a region restriction, not a city; locations[] keeps the board's wording.
  • One board being down does not fail the run — it is listed under failures in the run summary and the rest still return.

Example tasks

Ready-made feeds — remote Python jobs deduped across 7 boards, remote roles posted this week with salary, new remote jobs since yesterday — are on the Example tasks tab: https://apify.com/dataloft/remote-jobs-aggregator/examples

Every endpoint used here is a public feed the board publishes for third-party consumption — the same feeds job aggregators and RSS readers use. Postings are company information, not personal data. You remain responsible for how you use the output, including under each board's terms if you intend to republish commercially.

Frequently asked questions

Why did Remotive only return a handful of jobs? Because that is what its public API is currently serving. The actor reports the fetched count per source, so a small number there reflects the board, not a failure.

Can I get more than a few hundred jobs? Yes — raise Max jobs per source. Himalayas and Arbeitnow both paginate deep; the other five publish a "latest" window.

Do I need a proxy? No. These are public APIs with normal rate limits. The proxy option exists only for unusually large scheduled runs.

Can I schedule a daily pull? Yes. With Only new jobs since last run on, each run delivers only what is new; with it off, deduplication still gives you a clean current snapshot rather than a growing pile of repeats.

Can I use it from n8n or as an MCP tool? Yes — see Integrations above.

One board failed — did the run fail? No. Sources are independent.

Other job scrapers by Dataloft Studio

Changelog

  • 0.2 — 2026-09-02: monitoring mode (only new jobs since last run); memory capped at 1 GB; dataset schema fixed to match emitted fields; changelog added.
  • 0.1.2 — 2026-08-25: output schema added; first-run prefill capped for the daily automated test.
  • 0.1 — 2026-08-25: initial release, seven boards, cross-board deduplication.

Support and feedback

Issues and feature requests go in the Issues tab. Reports that include the input JSON get fixed fastest.