Remote Jobs Aggregator — 6 Public Feeds
Pricing
from $1.00 / 1,000 jobs
Remote Jobs Aggregator — 6 Public Feeds
[💵 $1.50 / 1K] Six public remote-job feeds in one schema with source links, precise salary filters and new-only monitoring. Confirmed application identities are merged. Source attribution rules apply. For n8n, Make, Zapier and MCP.
Pricing
from $1.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Dataloft Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Remote jobs API that aggregates six active remote job feeds — RemoteOK, Remotive, Himalayas, We Work Remotely, Jobicy and Arbeitnow — 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 reads the selected active feeds, normalises their fields, and merges records with a confirmed shared application identity before delivery.
Every source here is an public feed with source-specific use conditions — no scraping around a login, no browser automation, no proxies needed, job-posting data; free-text descriptions can still contain personal contact details.
What data do you get from the remote job boards?
Output fields
| Field | Notes |
|---|---|
title, company, companyLogo | |
location, locations[], isRemote | region 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, descriptionText | full posting, both formats |
applyUrl, jobUrl | |
postedAt, scrapedAt | ISO 8601 |
source, sourceBoard, sourceHomepage | which 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?
| Board | Feed | Typical volume |
|---|---|---|
| RemoteOK | official JSON API | ~100 latest |
| Remotive | official API | current live set |
| Himalayas | official API, paginated | 100,000+ available, you choose the depth |
| We Work Remotely | official RSS | ~90 latest |
| Jobicy | official API v2 | ~100 latest |
| Arbeitnow | official job-board API, paginated | 1,000+ |
| Working Nomads | disabled pending redistribution permission | not fetched |
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 active feeds combined.
How to build a remote jobs feed
- Leave Sources empty to use all six active feeds, or pick a subset.
- Add filters — keyword, title, location, department, posted-after, minimum salary.
- Set Max jobs in total on a first run to see the output shape cheaply.
- 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
Records with the same canonical application URL, including a confirmed ATS application link in a description, can be merged. Identity-bearing query parameters such as requisition IDs are retained; tracking parameters are ignored. sourcePostings preserves the original board links. Distinct requisitions are not merged merely because company, title and location match. When boards expose no shared identity, potential cross-board duplicates may remain.
Monitoring mode: only new remote jobs since your last run
The first successful run delivers a baseline of the matching postings within your scan limits. Later runs with Only new jobs since last run skip previously delivered identities. This is an unseen-record feed, not proof that a job was first published yesterday, changed, or closed.
Use a distinct Seen-jobs store name per watchlist and run only one task at a time against that store. Named key-value storage has no atomic cross-run lock; do not overlap schedules. Scan/output caps can limit coverage. If history cannot be read or persisted, or a previous delivery is unresolved, monitoring fails visibly instead of silently treating everything as new. Inspect RUN_SUMMARY and the saved pending-delivery record before retrying; do not delete history to bypass a reconciliation error.
Precise salary and title filters
titleIncludes retains its original OR meaning. Use titleIncludeGroups for groups that must all match (OR within a group, AND between groups). To require a senior engineering title and a published annual USD lower salary bound above $150,000:
{"titleIncludeGroups":[["senior","staff","principal","lead"],["engineer","engineering","developer"]],"minSalary":150001,"salaryCurrency":"USD","salaryInterval":"year","salaryThresholdBasis":"minimum","maxJobsPerSource":200,"maxTotalJobs":100}
The default salary threshold basis is maximum for compatibility. minimum requires a known published lower bound. Currency and pay period are matched exactly after normalisation; there is no FX conversion or inferred annualisation. Unknown values do not pass a specific currency/period filter. Location matching is a text filter, not an eligibility decision.
Source attribution and redistribution
- Remote OK: retain and display the original Remote OK job URL and source name; its API notice requests a follow link. API notice.
- Remotive: link back to the Remotive listing and name the source. Public jobs are delayed; its API conditions prohibit syndication to named third-party job platforms and gating listings behind signup/email collection. API conditions.
- Himalayas: retain a Himalayas source link and attribution. Its API conditions restrict submission to third-party job platforms. API conditions.
- We Work Remotely: attribute the RSS source, retain the WWR listing link and route applications through WWR; its API terms restrict competing/replacement job services. RSS, API conditions.
- Jobicy: retain the original listing URL and source attribution; follow its current API fair-use rules. API/RSS documentation.
- Arbeitnow: retain source links and check the API documentation and destination use before publishing. API documentation.
- Working Nomads: disabled in this release. Its published terms restrict commercial exploitation and competitive use; a redistribution grant has not been verified. Selecting it fails before fetching. Terms.
Check conditions for your intended destination before redistribution. The free-text content of a posting may include a person's name or contact details; do not treat every description as non-personal data. Source terms can change.
How much does it cost to aggregate remote jobs?
$1.50 per 1,000 delivered job records at the base tier. Filtered-out records, confirmed duplicates and previously-seen identities are skipped before delivery. Unresolvable cross-board duplicates can remain; this is not a guarantee of one charge per real-world vacancy. No matching result incurs a job event, but the configured Actor-start fee is $0.00005 per GB of memory, including on an empty run (one event at the 1 GB default).
Cost examples
Illustrative result-event charges at the base tier; not measured demand or recurring revenue. Add the small Actor-start fee described above. Actual available matches vary.
| What you run | Rows charged | Cost |
|---|---|---|
| All six active feeds boards, latest window, no filters | ~600 | $0.90 |
| Python + backend roles, salary shown, Europe/worldwide | ~120 | $0.18 |
| Deep Himalayas pull, 5,000 rows | 5,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 Actor → dataloft/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 ApifyClientclient = 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 with an Authorization: Bearer <APIFY_TOKEN> header
What this Actor does and does not do
| Does | Does not |
|---|---|
| Merge six active remote-job feeds into one schema | Scrape LinkedIn, Indeed or boards that forbid it |
| Merge confirmed shared application identities and retain source links | Log in, solve CAPTCHAs, or bypass anti-bot systems |
| Parse salary ranges into structured min/max/currency | Invent salaries that are not published |
| Skip previously delivered identities in monitoring mode | Collect candidate profiles or applications |
Limits and known caveats
- Several 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
failuresin the run summary and the rest still return.
Example tasks
Ready-made feeds — remote Python jobs deduped across 6 active feeds, 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
Is it legal to scrape these job boards?
Public access is not a blanket redistribution licence. Keep the original source name and job URL when displaying records, and check the source-specific conditions below. This Actor provides extraction and formatting; it does not grant ownership of job descriptions or permission to syndicate them everywhere.
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 active feeds 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
- ATS Jobs Scraper — pull roles straight from company career sites across 11 ATS platforms.
- Workday Jobs Scraper — every open role from any Workday career site.
Changelog
-
0.3 — 2026-09-05: monitoring fails visibly on history/delivery errors; budget-aware result charging and delivery reconciliation; published examples corrected and bounded.
-
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.
