Remote Job Aggregator API avatar

Remote Job Aggregator API

Pricing

from $9.00 / 1,000 job scrapeds

Go to Apify Store
Remote Job Aggregator API

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

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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: true listings 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 index field — 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?

FieldDescription
titleJob title
companyHiring company name
locationLocation or region restriction, or Worldwide/Anywhere when unrestricted
salaryFormatted salary range string where the source platform discloses it, else null
descriptionPlain-text summary (HTML stripped, truncated to ~500 characters)
platformSource board: arbeitnow, jobicy, himalayas, or remoteok
work_typeAlways Remote
job_typeNormalized employment type where available: Full-Time, Part-Time, Contract, Internship
tagsSource platform's own skill/category tags
urlLink to the original job listing
posted_dateOriginal publish date (ISO 8601 where the source provides it)
scraped_atTimestamp this actor collected the job
index0-based position in this run's combined, deduplicated result set

Input parameters

ParameterTypeRequiredDefaultDescription
searchKeywordsstringNo""Keywords to search, e.g. "python developer", "react", "marketing". Empty = fetch all available jobs
platformsstring[]Noall fourWhich boards to query: arbeitnow, jobicy, himalayas, remoteok (any combination)
maxJobsPerPlatformintegerNo20Max jobs to fetch from each platform (1–50)
maxTotalJobsintegerNo50Cap 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:

  1. Build a workflow in n8n, Make, or Zapier with an HTTP request step that calls this actor's run-sync-get-dataset-items endpoint.
  2. Add an HTTP Header Auth credential with Authorization: Bearer <YOUR_APIFY_TOKEN> — never paste a token directly into a shared workflow.
  3. Set searchKeywords, platforms, and the result limits in the request body to match the role you're tracking.
  4. Add a final step (email, Slack, Discord) that formats title, company, location, platform, and url from each returned job into a digest.
  5. 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

  1. 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).
  2. 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.
  3. Deduplicate — jobs are keyed by platform + source ID before being added to the combined result.
  4. Cap and index — results are trimmed to maxTotalJobs and numbered sequentially in the index field.
  5. 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.

EventPrice per eventPrice 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: true listings are included
  • job_type is 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

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 ApifyClient
client = 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);

Need deeper, platform-specific data (full HTML descriptions, every filter each site supports)? Use the dedicated scrapers this aggregator is built on:

Browse the full catalog on the ParseBird Apify Store page.