Remote Job Aggregator API
Pricing
from $9.00 / 1,000 job scrapeds
Remote Job Aggregator API
Search remote jobs across Arbeitnow, Jobicy, Himalayas, and RemoteOK in one run — one keyword, one unified output schema, no separate scrapers to manage.
Pricing
from $9.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Remote Job Aggregator API
Search remote jobs across four job boards in a single run: Arbeitnow, Jobicy, Himalayas, and RemoteOK. The Remote Job Aggregator API sends one keyword to all four public job APIs, normalizes the results into one schema, deduplicates, and returns a single clean dataset — no need to run and merge four separate scrapers.
| One keyword search, one set of limits, one output schema across Arbeitnow, Jobicy, Himalayas, and RemoteOK — pick any combination of the four and get back a merged, deduplicated, ready-to-use job feed. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify Actor: parsebird/remote-job-aggregator-api. Searches remote jobs across Arbeitnow, Jobicy, Himalayas, and RemoteOK in one call. Call via ApifyClient: client.actor("parsebird/remote-job-aggregator-api").call(run_input={"searchKeywords": "python developer", "platforms": ["arbeitnow","jobicy","himalayas","remoteok"], "maxJobsPerPlatform": 20, "maxTotalJobs": 50}). Returns per job: title, company, location, salary, description, platform, work_type, job_type, tags, url, posted_date, scraped_at, index. Full API spec: https://apify.com/parsebird/remote-job-aggregator-api/api. Get your token: https://console.apify.com/settings/integrations.
What does Remote Job Aggregator API do?
Instead of running four separate scrapers and merging their outputs yourself, this actor queries Arbeitnow's, Jobicy's, Himalayas's, and RemoteOK's public job APIs directly, in parallel, and maps every result into the same output schema regardless of source.
- 🔍 One keyword, four sources — search once, get matching jobs from up to four job boards.
- 🧹 Cross-platform deduplication — each job is uniquely identified by platform + source ID before being added to the dataset.
- 🌍 Remote-only by design — Jobicy, Himalayas, and RemoteOK are remote-only job boards; Arbeitnow (which lists both remote and on-site roles) is filtered to
remote: truelistings only, so every result in this actor's output is a remote job. - ⚖️ Per-platform and total limits — cap how many jobs come from each board individually, and cap the combined total.
- 🔢 Stable
indexfield — every job in the output dataset is numbered in the order it was collected, which is convenient for digest emails and dashboards.
What job data can you extract?
| Field | Description |
|---|---|
title | Job title |
company | Hiring company name |
location | Location or region restriction, or Worldwide/Anywhere when unrestricted |
salary | Formatted salary range string where the source platform discloses it, else null |
description | Plain-text summary (HTML stripped, truncated to ~500 characters) |
platform | Source board: arbeitnow, jobicy, himalayas, or remoteok |
work_type | Always Remote |
job_type | Normalized employment type where available: Full-Time, Part-Time, Contract, Internship |
tags | Source platform's own skill/category tags |
url | Link to the original job listing |
posted_date | Original publish date (ISO 8601 where the source provides it) |
scraped_at | Timestamp this actor collected the job |
index | 0-based position in this run's combined, deduplicated result set |
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchKeywords | string | No | "" | Keywords to search, e.g. "python developer", "react", "marketing". Empty = fetch all available jobs |
platforms | string[] | No | all four | Which boards to query: arbeitnow, jobicy, himalayas, remoteok (any combination) |
maxJobsPerPlatform | integer | No | 20 | Max jobs to fetch from each platform (1–50) |
maxTotalJobs | integer | No | 50 | Cap total jobs across all platforms (0–200; 0 = unlimited, bounded only by per-platform limits) |
Output example
{"title": "Senior Python & TypeScript Developer","company": "Varicent","location": "Mexico","salary": null,"description": "We're transforming Sales Performance Management with a remote-first team...","platform": "jobicy","work_type": "Remote","job_type": "Full-Time","tags": ["Programming"],"url": "https://jobicy.com/jobs/135061-senior-python-typescript-developer","posted_date": "2025-10-29T07:17:22+00:00","scraped_at": "2026-06-26T15:30:00.000000","index": 6}
Download results as JSON, CSV, Excel, HTML, or XML directly from the Apify Console, or fetch them via the Apify API / dataset endpoint.
Use cases
- Daily job alerts — schedule a run every weekday and email or Slack yourself a fresh digest for a role you're tracking (see the workflow below).
- Job board aggregation — power your own remote-jobs site or newsletter from a single feed instead of integrating four APIs yourself.
- Market research — compare how many roles for a given keyword each platform is currently listing.
- Talent sourcing — pull a broad remote candidate-facing job list for a role category across multiple boards at once.
⚙️ Daily remote-job alert workflow
Turn the actor into a recurring alert instead of checking four job boards manually:
- Build a workflow in n8n, Make, or Zapier with an HTTP request step that calls this actor's run-sync-get-dataset-items endpoint.
- Add an HTTP Header Auth credential with
Authorization: Bearer <YOUR_APIFY_TOKEN>— never paste a token directly into a shared workflow. - Set
searchKeywords,platforms, and the result limits in the request body to match the role you're tracking. - Add a final step (email, Slack, Discord) that formats
title,company,location,platform, andurlfrom each returned job into a digest. - Run the workflow once manually to check the first digest, then activate a weekday (or daily) schedule.
Point the same workflow at a different searchKeywords value any time to monitor a different role, or lower maxTotalJobs to keep digests short.
How it works
- Parallel fetch — the actor queries the selected platforms' public job APIs concurrently: Arbeitnow (paginated, filtered to
remote: true), Jobicy (native keyword + count filter), Himalayas (native keyword + pagination), and RemoteOK (single feed, keyword-matched client-side). - Normalize — every platform's raw response is mapped into the same output schema, with descriptions stripped of HTML and salary data formatted into one readable string.
- Deduplicate — jobs are keyed by platform + source ID before being added to the combined result.
- Cap and index — results are trimmed to
maxTotalJobsand numbered sequentially in theindexfield. - Output — the combined dataset is pushed to Apify, ready for download, API access, or a downstream workflow.
How much does it cost to use the Remote Job Aggregator API?
This actor uses Pay-Per-Event (PPE) pricing — you're charged per job listing extracted, not per compute unit.
| Event | Price per event | Price per 1,000 |
|---|---|---|
job-scraped (Free plan) | $0.012 | $12.00 |
job-scraped (Bronze plan) | $0.011 | $11.00 |
job-scraped (Silver plan) | $0.010 | $10.00 |
job-scraped (Gold plan) | $0.009 | $9.00 |
A run collecting 100 jobs across all four platforms costs roughly $0.90–$1.20 depending on your Apify plan. All Apify accounts include a free trial with credits to try the actor before committing to a paid plan.
FAQ
Why did a platform return fewer jobs than maxJobsPerPlatform?
Each source has its own limits. RemoteOK exposes only its latest ~100 jobs with no pagination, so a narrow keyword can legitimately match few or none of them. Arbeitnow mixes remote and on-site roles — only ~3-5% of listings are remote — and its own API rate-limits pagination past a handful of pages, so narrow remote+keyword searches can return fewer results than requested.
Why is salary sometimes null?
Not every platform discloses compensation for every listing. salary is null whenever the source job has no salary data.
Can I run this on a schedule? Yes. Use Apify Schedules to run it daily or weekly, or wire it into the n8n/Make/Zapier workflow above for automated digests.
What are the limitations of this actor? ⚠️
- RemoteOK has no pagination — only its latest ~100 listings are searchable per run
- Arbeitnow pagination is capped to stay within its own API's rate limits, and only its
remote: truelistings are included job_typeis left blank when the source platform doesn't classify it clearly- Descriptions are truncated to ~500 characters for a consistent digest-style output across all four platforms — use the dedicated single-platform actors below for full descriptions
Is it legal to use this actor?
Yes. This actor only accesses publicly available job listings through each platform's own public job API — Arbeitnow, Jobicy, Himalayas, and RemoteOK — all intended for this kind of programmatic access. It does not bypass login walls or collect personal data about individuals. Scraping publicly available data is generally considered legal — see Apify's overview of web scraping legality for more detail. Users are responsible for ensuring their use of the collected data complies with applicable laws and each platform's Terms of Service.
Python and JavaScript usage
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run_input = {"searchKeywords": "python developer","platforms": ["arbeitnow", "jobicy", "himalayas", "remoteok"],"maxJobsPerPlatform": 20,"maxTotalJobs": 50,}run = client.actor("parsebird/remote-job-aggregator-api").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["platform"], "-", item["title"], "at", item["company"])
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const input = {searchKeywords: 'python developer',platforms: ['arbeitnow', 'jobicy', 'himalayas', 'remoteok'],maxJobsPerPlatform: 20,maxTotalJobs: 50,};const run = await client.actor('parsebird/remote-job-aggregator-api').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Related Actors
Need deeper, platform-specific data (full HTML descriptions, every filter each site supports)? Use the dedicated scrapers this aggregator is built on:
- Arbeitnow Jobs Scraper
- Jobicy Remote Jobs Scraper
- Himalayas Remote Jobs Scraper
- RemoteOK Jobs Scraper
- Hiring.cafe Jobs Scraper — 2.8M+ aggregated postings across 46 ATS platforms
Browse the full catalog on the ParseBird Apify Store page.