Remote Jobs with Yearly USD Salary: 6 Boards Deduped avatar

Remote Jobs with Yearly USD Salary: 6 Boards Deduped

Pricing

from $0.90 / 1,000 job listings

Go to Apify Store
Remote Jobs with Yearly USD Salary: 6 Boards Deduped

Remote Jobs with Yearly USD Salary: 6 Boards Deduped

Remote jobs from 6 official job-board APIs (Remotive, Remote OK, We Work Remotely, Himalayas, Jobicy, Arbeitnow), deduped, with listed salaries converted to yearly USD so they compare. Category, seniority, region and timezone filters; monitor mode charges only new jobs. No login.

Pricing

from $0.90 / 1,000 job listings

Rating

0.0

(0)

Developer

Detroit Web Agent - Open Data

Detroit Web Agent - Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

Remote Jobs Aggregator: 6 Remote Job Boards in One Clean, Deduped Dataset

Remote jobs from Remotive, Remote OK, We Work Remotely, Himalayas, Jobicy and Arbeitnow in one deduped dataset: the same job posted on several boards becomes one row, salaries are parsed into numbers, and every board shares the same categories, job types, seniority levels and regions.

This Actor vs memo23/remote-jobs-aggregator: that one reads 7 boards, including Relomote and a full-depth Remote OK crawl, and adds opt-in employer emails. Choose this one for a minimum-salary filter in 7 currencies, region and UTC timezone filters, and a monitor mode that returns, and charges for, only jobs you have not seen before.

Remote Jobs Aggregator: features, price and a real output row

Run it free on Apify

Price per 1,000 jobsFree planStarterScaleBusiness
This Actor$1.50$1.20$1.00$0.90

Remote Jobs Aggregator sample output table from a real run

Get remote jobs from Remotive, Remote OK, We Work Remotely, Himalayas, Jobicy and Arbeitnow in one run. The same job posted on several boards becomes one row. Salaries are parsed into numbers, and every board uses the same categories, job types, seniority levels and regions. Monitor mode only returns, and only charges for, jobs you have not seen before.

  • In short: Remote Jobs Aggregator (Apify actor transparent_meteorite/remote-jobs-aggregator) reads the official public APIs and feeds of 6 remote job boards. It returns one flat, typed row per unique remote job and keeps a link back to the original listing on every row.
  • Who it is for:
    • remote job seekers and job alert newsletters
    • remote job boards and aggregators that want a clean feed
    • recruiters and sourcing teams
    • salary and labour market researchers
    • sales teams looking for companies that are hiring
    • AI agents that need fresh remote jobs as a tool
  • Input:
    • keywords (any or all), exclude keywords, title-only matching
    • which boards to read
    • categories, job types and experience levels
    • minimum yearly salary in 7 currencies, "only jobs with a salary"
    • candidate regions, UTC timezones, posted within N days
    • company include and exclude lists
    • sort order, max jobs, description format (text, HTML, Markdown)
    • monitor mode for new jobs only
  • Output: 37 fields per job, including:
    • title, company, logo and company URL
    • board, listing URL and apply URL
    • posted date, normalised category, tags, job type, experience level
    • parsed salary (min, max, currency, period), salary converted to yearly and to yearly USD, the salary text as posted
    • location restriction, regions, timezones
    • description as text, HTML or Markdown
    • dedupKey, alsoListedOn (the same job on other boards), attribution line
  • Pricing: pay per event. $1.50 per 1,000 jobs on the Free plan, and less on paid Apify plans (down to $0.90 per 1,000 on Gold, Platinum and Diamond). There is also a start event of $0.00005. Duplicates and already-seen jobs are never charged.
  • Limits: you get only what the boards publish in their public APIs and feeds. Each board shows its newest jobs, not its whole archive. The actor never calls a board more often than that board allows. Results are cached per Apify account, so two runs a few minutes apart return the same jobs.

Key facts

  • Actor name: Remote Jobs Aggregator
  • Data sources: the official public APIs/feeds of Remotive, Remote OK, We Work Remotely, Himalayas, Jobicy and Arbeitnow
  • Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
  • Access: Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, Apify MCP server
  • Login, proxy or third-party API key needed: no, only an Apify account
  • Also known as: remote job scraper, remote jobs API, remote job board aggregator, Remotive API alternative, Remote OK scraper, We Work Remotely scraper, Himalayas jobs API

Run in 30 seconds

  1. Open Remote Jobs Aggregator and press Try for free (you need a free Apify account).
  2. Keep the prefilled input, or clear it to get the newest remote jobs from all 6 boards, then press Start. A run usually takes under a minute.
  3. Open the Output tab. Switch to the Table view, or download the results as CSV, Excel or JSON.

Prefilled input:

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

To get the newest 200 remote jobs from every board, use an empty input: {}.

Why choose this over alternatives

  • Six boards and one schema. Every board names its fields differently. Here every row has the same fields, and those fields use the same fixed lists:

    • 17 categories
    • 6 job types
    • 6 experience levels
    • 11 regions
  • Real dedupe across boards. Many companies post the same job on Remote OK, We Work Remotely and Jobicy. Each such job becomes one row, and the other listings go to alsoListedOn. You pay for the job once.

  • Salary as numbers you can filter. The actor parses salaries from three places, in this order:

    • the board's structured salary fields
    • the board's salary text (for example "$35,3k - $52k" or "$50/hour")
    • the description itself, as a last resort ("base salary of $140,000 - $180,000 USD per year")

    Every salary is turned into a yearly amount and a yearly amount in USD. minSalary compares like with like, so a $60/hour contract and a $120k salary sit on the same scale.

  • More filters than other remote-job actors:

    • exclude keywords and title-only matching
    • normalised categories and experience levels
    • minimum salary in 7 currencies, and "only jobs with a salary"
    • candidate regions, with or without worldwide jobs
    • UTC timezones
    • company allow and block lists
    • a choice of three sort orders
  • Monitor mode that saves money. Schedule the actor every few hours. You get, and pay for, only jobs you have not received before.

  • Polite and durable. The actor uses only the official public APIs and RSS feeds, with no scraping of HTML pages and no proxies. It respects each board's stated call limits through a cache shared by your runs. Every row keeps the attribution link that each board asks for.

What it does and who it is for

Remote Jobs Aggregator collects remote job listings from six job boards that offer a public API or feed. It then normalises them into one table. For each board it reads the endpoint the board publishes for developers:

  • the Remotive remote-jobs API
  • the Remote OK JSON API
  • the We Work Remotely RSS feed
  • the Himalayas jobs API (plus its search endpoint for keyword runs)
  • the Jobicy v2 API
  • the Arbeitnow job-board API, keeping only its remote jobs

It then does six things:

  1. Cleans up each job. It decodes HTML, repairs broken characters, and converts every date to ISO 8601 UTC.
  2. Sorts each job into fixed lists. Each job gets a category, a job type and an experience level from fixed lists. Where the board gives a value, the actor uses it. Otherwise it works one out from the title.
  3. Parses the salary, as described above.
  4. Reads where candidates can live. It turns the board's location restriction ("USA only", "Europe", "Anywhere in the world") into region codes, and reads timezones where the board publishes them.
  5. Merges duplicates. It treats two listings as the same job when the company name and the job title match after normalisation. The most complete listing becomes the row, and the others are listed under alsoListedOn.
  6. Applies your filters, sorts the jobs and stops at maxItems.

Typical uses:

  • Job alert emails and Slack/Discord bots: run on a schedule in monitor mode and post only new jobs.
  • Niche job boards ("remote Python jobs", "remote design jobs in Europe"): keep an up-to-date, deduped feed with attribution links.
  • Salary research: collect remote jobs that publish a salary and compare the yearly USD figures by category or seniority.
  • Recruiting and sales prospecting: spot which companies are hiring remote engineers right now, with company links for your CRM.
  • AI agents: give an assistant a "find remote jobs" tool through the Apify MCP server.

Quick start

  • Everything new, all boards: {} returns the newest 200 jobs. Boards are mixed in turns, so every board is represented.
  • Remote Python jobs paying $100k or more: {"keywords": ["python"], "minSalary": 100000, "hasSalaryOnly": true}
  • Remote design jobs open to Europe, from the last 3 days: {"categories": ["design"], "regions": ["europe"], "postedWithinDays": 3}
  • A daily feed of new senior engineering jobs: {"categories": ["software-development"], "experienceLevels": ["senior", "lead"], "monitorMode": true}, scheduled daily.

What you get: output fields

FieldTypeWhat it is
idstringBoard id plus the board's own job id, for example remoteok:1131313.
titlestringJob title, cleaned.
companystringCompany name.
companyLogostring or nullLogo image URL as published by the board.
companyUrlstring or nullCompany website or company page on the board.
sourcestringBoard id: remotive, remoteok, weworkremotely, himalayas, jobicy, arbeitnow.
sourceNamestringBoard name, for example "We Work Remotely".
sourceUrlstringThe listing on the board. Link back to this; each board asks for it.
applyUrlstringWhere to apply (the board's apply link or the listing).
postedAtstringPublish time, ISO 8601 UTC.
expiresAtstring or nullExpiry time, where the board publishes it.
categorystringNormalised category: software-development, design, marketing, sales, customer-support, product, data, devops, qa, finance, hr, writing, management, legal, education, healthcare, other.
sourceCategorystring or nullThe board's own category label.
tagsarrayThe board's tags and skills.
jobTypestring or nullfull-time, part-time, contract, freelance, internship, temporary.
experienceLevelstring or nullinternship, entry, mid, senior, lead, executive.
salaryMin, salaryMaxnumber or nullSalary range in the posted currency and period.
salaryCurrencystring or nullISO currency code, for example USD, EUR, GBP, CAD.
salaryPeriodstring or nullhour, day, week, month or year.
salaryTextstring or nullThe salary as posted.
salaryYearlyMin, salaryYearlyMaxnumber or nullThe range converted to a yearly amount (hourly × 2,080, monthly × 12, and so on).
salaryYearlyMaxUsdnumber or nullYearly top of the range in USD, using fixed approximate exchange rates. Used by minSalary and the salary sort.
salarySourcestring or nullWhere the salary came from: structured, text or description.
locationRestrictionstring or nullWhere candidates may live, as posted ("USA", "Europe", "Worldwide").
regionsarrayNormalised regions: worldwide, usa, canada, north-america, latam, europe, uk, apac, oceania, africa, middle-east.
timezonesarrayUTC offsets the job asks for, for example ["UTC-5", "UTC+1"].
isRemotebooleanAlways true. Non-remote Arbeitnow jobs are dropped.
descriptionTextstring or nullDescription as plain text (default format).
descriptionHtmlstring or nullDescription as HTML (format html or all).
descriptionMarkdownstring or nullDescription as Markdown (format markdown or all).
dedupKeystringNormalised `company
alsoListedOnarrayThe same job on other boards: {source, sourceName, sourceUrl, postedAt}.
sourcesCountnumberHow many boards list this job.
attributionstringReady-made credit line, for example "Job listed on Jobicy: https://jobicy.com/jobs/...".
scrapedAtstringWhen this run produced the row.

Sample output

{
"id": "jobicy:153107",
"title": "Senior Manager, Corporate Sales - West",
"company": "Webflow",
"companyUrl": "https://jobicy.com/company/webflow",
"source": "jobicy",
"sourceName": "Jobicy",
"sourceUrl": "https://jobicy.com/jobs/153107-senior-manager-corporate-sales-west",
"applyUrl": "https://jobicy.com/jobs/153107-senior-manager-corporate-sales-west",
"postedAt": "2026-10-13T02:10:22.000Z",
"category": "sales",
"tags": ["Sales"],
"jobType": "full-time",
"experienceLevel": "executive",
"salaryMin": 255000,
"salaryMax": 350000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryYearlyMaxUsd": 350000,
"salarySource": "structured",
"locationRestriction": "Canada, USA",
"regions": ["usa", "canada", "north-america"],
"timezones": [],
"descriptionText": "Webflow is the agentic web marketing platform for modern marketing teams...",
"dedupKey": "webflow|senior manager corporate sales west",
"alsoListedOn": [
{ "source": "weworkremotely", "sourceName": "We Work Remotely", "sourceUrl": "https://weworkremotely.com/remote-jobs/webflow-senior-manager-corporate-sales-west", "postedAt": "2026-10-13T07:31:00.000Z" }
],
"sourcesCount": 2,
"attribution": "Job listed on Jobicy: https://jobicy.com/jobs/153107-senior-manager-corporate-sales-west"
}

Sources, terms and attribution

The actor only uses boards whose public API or feed may be read by programs without logging in, without getting past bot protection, and without a terms-of-service ban. It follows each board's attribution rule and call limit. If you republish the jobs, you must follow the same rules. Every row gives you sourceUrl and a ready-made attribution line for this.

BoardEndpoint usedTermsAttribution and limits the actor respects
Remotiveremotive.com/api/remote-jobsAPI documentationLink back to the Remotive listing and mention Remotive as the source. At most 4 calls a day (the actor calls it at most once every 6 hours per Apify account). Jobs appear with a 24-hour delay. Do not submit Remotive jobs to third-party job sites such as Jooble, Google Jobs or LinkedIn Jobs.
Remote OKremoteok.com/apiAPI notice (first element of the response)Link back to the Remote OK listing URL and mention Remote OK as the source. Do not use the Remote OK logo.
We Work Remotelyweworkremotely.com/remote-jobs.rssPublic RSS feed published by the board for readers and aggregatorsLink back to the listing. The feed's TTL is 60 minutes, and the actor does not read it more than once an hour. The board has no separate API terms page that we could load, so treat it as an RSS feed: show the title, link to the listing, and do not republish full descriptions without permission.
Himalayashimalayas.app/jobs/api and /jobs/api/searchRemote jobs API docsFree and needs no key. Attribution with a link to Himalayas is required. Rate-limited, and its data is refreshed about every 24 hours, so the actor caches it for 12 hours.
Jobicyjobicy.com/api/v2/remote-jobsAPI and feed termsCredit Jobicy with a direct link to the listing, and send apply clicks to the original URL. Do not sync more than once an hour (the actor caches it for 60 minutes).
Arbeitnowarbeitnow.com/api/job-board-apiJob board APIA free public API ("please do not abuse"). Linking back is appreciated. Only jobs marked remote are kept.

Boards we checked and left out on purpose:

  • The Muse: its API terms require app registration and forbid redistributing or reselling the data.
  • Working Nomads: its terms forbid commercial use of the service and building a competing product.

Input options

InputTypeDefaultWhat it does
keywordsarraynoneWords or phrases matched as whole words in title, company, tags and description. Keyword runs also query the Himalayas search endpoint, which reaches deeper than its newest-jobs feed.
keywordModeany / allanyA job needs at least one keyword (any) or every keyword (all).
excludeKeywordsarraynoneDrop jobs containing any of these words.
titleOnlybooleanfalseMatch keywords and exclude keywords against the title only.
sourcesarrayall 6Which boards to read: remotive, remoteok, weworkremotely, himalayas, jobicy, arbeitnow.
himalayasPagesinteger10Pages of the Himalayas feed to read (20 jobs per page, 1 to 50).
arbeitnowPagesinteger3Pages of the Arbeitnow feed (100 jobs per page; only remote ones are kept).
categoriesarrayanyNormalised categories to keep (see the output table).
jobTypesarrayanyfull-time, part-time, contract, freelance, internship, temporary.
experienceLevelsarrayanyinternship, entry, mid, senior, lead, executive.
postedWithinDaysinteger0 (off)Keep jobs posted in the last N days.
companiesarraynoneKeep only these companies (a name contains-match).
excludeCompaniesarraynoneDrop these companies, for example staffing agencies.
minSalaryinteger0 (off)Drop jobs whose yearly top of range is below this. Jobs without a salary are kept unless hasSalaryOnly is on.
salaryCurrencystringUSDCurrency of minSalary: USD, EUR, GBP, CAD, AUD, CHF or INR.
hasSalaryOnlybooleanfalseKeep only jobs that publish a salary.
regionsarrayanyKeep jobs open to candidates in these regions.
includeWorldwidebooleantrueWith regions, also keep jobs open worldwide.
timezonesarrayanyUTC offsets such as -5, +1 or UTC+5:30. Jobs that list no timezone are kept.
maxItemsinteger200Stop after this many jobs. You only pay for jobs delivered.
sortBystringbalancedbalanced puts the newest jobs first within each board and takes the boards in turns. newest sorts strictly by date. salary puts the highest yearly USD salary first.
dedupebooleantrueMerge the same job across boards.
includeDescriptionbooleantrueInclude the description.
descriptionFormatstringtexttext, html, markdown or all.
monitorModebooleanfalseReturn and charge only jobs not delivered by earlier monitor runs.
stateStoreNamestringremote-jobs-aggregator-seenNamed key-value store holding the seen jobs. Use one name per saved search.

The actor also accepts searchKeyword (a single string) as an alias for keywords, and locationRestrictions as an alias for regions. This lets inputs written for other remote-job actors work unchanged.

Input examples

Remote contract work for React developers, excluding crypto, newest first:

{
"keywords": ["react"],
"titleOnly": true,
"jobTypes": ["contract", "freelance"],
"excludeKeywords": ["crypto", "web3"],
"sortBy": "newest"
}

The highest-paying remote data jobs open to candidates in Canada:

{
"categories": ["data"],
"regions": ["canada", "north-america"],
"hasSalaryOnly": true,
"sortBy": "salary",
"maxItems": 100
}

Jobs open to Europe in the UTC+1 timezone, with full HTML and Markdown descriptions:

{
"regions": ["europe"],
"timezones": ["+1"],
"descriptionFormat": "all"
}

Use cases and n8n automation ideas

Run this actor from an n8n workflow with the Apify node or an HTTP Request node, then read the dataset items in the next step. Ideas:

  • Job board feeds. Combine several remote job boards into one deduplicated list with parsed salary.
  • Salary research. Filter by category or seniority and compare the parsed yearly salary ranges.
  • New-job alerts. Use monitor mode from n8n so only jobs not seen before are returned and sent to Slack or email.

Pricing

This actor uses pay-per-event pricing. You pay for each unique job delivered, plus a tiny start fee per run. Apify platform usage is included in these prices.

Apify planPrice per jobPrice per 1,000 jobs
Free$0.0015$1.50
Bronze (Starter)$0.0012$1.20
Silver (Scale)$0.0010$1.00
Gold (Business)$0.0009$0.90
Platinum$0.0009$0.90
Diamond$0.0009$0.90
Actor start (every plan)$0.00005 per run

Worked examples:

  • The default run ({}, 200 jobs) on the Free plan costs 200 × $0.0015 + $0.00005 ≈ $0.30.
  • A daily monitor run that finds 40 new jobs costs about $0.06 per day on the Free plan, or $0.04 on Silver. Jobs already sent in earlier runs cost nothing.
  • 10,000 jobs a month on Gold costs $9.00.

You are never charged for:

  • duplicates merged across boards
  • jobs removed by your filters
  • jobs skipped by monitor mode

Set a maximum cost per run in the run options. The actor stops cleanly when it reaches that limit.

How to run it

In Apify Console

Open the actor, fill in the input form (every field has a description), and press Start. Results appear live in the Output tab. You can download them as JSON, CSV, Excel, XML or HTML, or open them through the API.

From the API or a client library

curl (synchronous; returns the jobs directly):

curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~remote-jobs-aggregator/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["python"], "minSalary": 100000, "maxItems": 50}'

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("transparent_meteorite/remote-jobs-aggregator").call(run_input={
"keywords": ["python"],
"minSalary": 100000,
"maxItems": 50,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["company"], job["salaryYearlyMaxUsd"], job["sourceUrl"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('transparent_meteorite/remote-jobs-aggregator').call({
categories: ['design'],
regions: ['europe'],
postedWithinDays: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);

On a schedule

In Apify Console, open Schedules, create a schedule (for example every 6 hours), and add this actor or a saved task with "monitorMode": true. Each run then returns only new jobs. Add a webhook or an integration to send them to email, Slack, Google Sheets or your own API.

With n8n, Make, Zapier or AI agents

  • n8n: use the Apify node ("Run actor and get dataset").
  • Make: use the Apify app ("Run an Actor" and then "Get Dataset Items").
  • Zapier: use the Apify integration.

A common flow:

  1. A schedule runs the actor in monitor mode.
  2. The flow loops over the new jobs.
  3. It posts each job to Slack or Discord, or appends it to a Google Sheet.

AI agents can call the actor through the Apify MCP server (see below).

Watch mode (new jobs only)

Turn on monitorMode and keep the same stateStoreName between runs. The actor keeps a small map of delivered jobs, keyed by dedupKey, in that named key-value store.

  • Delivered jobs are skipped on later runs, and skipped jobs are not charged.
  • The first run delivers everything that matches your filters. Later runs deliver only new jobs.
  • A job seen on one board is not sent again when it later appears on another board.
  • Entries older than 120 days are forgotten automatically.
  • Use a different stateStoreName for each saved search, so separate alerts do not hide each other's jobs.

Run summary record

Each run writes an OUTPUT record to its default key-value store. It contains:

  • Per-board results: jobs fetched, whether the cache served them, cache age, any error, and the board's terms URL.
  • Totals: jobs fetched, unique jobs, duplicates merged, jobs matched, jobs delivered, jobs skipped as already seen.
  • Filters: how many jobs each filter removed (for example {"keywords": 447, "minSalary": 8}).
  • Warnings: anything worth checking.

Use it to see why a run returned fewer jobs than you expected.

Limits and honest caveats

  • Newest jobs, not full archives. Each board's public API returns its recent jobs. Remote OK returns about 100, the We Work Remotely feed about 90, Jobicy up to 200, and Remotive's free API a delayed sample. Himalayas and Arbeitnow page deeper. Expect a few hundred to about a thousand unique jobs per full run, depending on settings. Run on a schedule in monitor mode to build up a complete history.
  • Shared cache. To respect each board's call limits, the actor stores responses in a key-value store in your account called remote-jobs-aggregator-cache. Each board is called again only after its minimum interval: Remotive 6 hours, Himalayas 12 hours, the others 1 hour. Runs inside that interval reuse the stored copy. If a board is down, a copy up to 48 hours old is used, and the run shows a warning.
  • Remotive jobs are delayed by 24 hours in its free API.
  • Inferred fields are best effort. Category, experience level and regions use the board's own values where they exist; otherwise they are inferred from the title and the location text. They are good for filtering, not for legal decisions.
  • Exchange rates are fixed and approximate. salaryYearlyMaxUsd is for ranking and filtering, not for payroll.
  • Dedupe matches company plus title. Two genuinely different openings with the same company and the same title (for example in different countries) merge into one row. The other listings stay visible in alsoListedOn. Set dedupe: false to keep every listing.

FAQ

Do I need API keys or accounts for these job boards? No. All six boards publish keyless public APIs or feeds. You only need an Apify account.

Why did my keyword run return only a few jobs? Boards publish their newest jobs only, and keyword matching uses whole words. Try keywordMode: "any" with several synonyms, or turn off titleOnly. The OUTPUT record shows how many jobs each filter removed.

Can I republish these jobs on my own site? Follow each board's attribution rule (see the sources table). Link every job to its sourceUrl and name the board. Do not use the Remote OK logo. Do not pass Remotive jobs on to other job sites such as Google Jobs, LinkedIn or Jooble. The attribution field gives you a ready-made credit line.

How is this different from scraping each board myself? You get one schema for six boards, cross-board dedupe, parsed salaries and regions, monitor mode, and built-in respect for each board's call limits, without maintaining six parsers.

Why does a second run within the hour return the same jobs? That is the shared cache, which respects the boards' call limits. New jobs appear after the board's refresh interval. In monitor mode, repeats are skipped and never charged.

Does it include salaries for jobs that only mention pay in the description? Yes. When there is no structured salary or salary text, the actor looks for a pay range in the description. Such rows have salarySource: "description".

What does minSalary do with jobs that have no salary? It keeps them, because many good remote jobs do not publish pay. Add hasSalaryOnly: true to drop them.

Can I get the description in Markdown for an LLM? Yes. Set descriptionFormat to markdown, or to all to get text, HTML and Markdown.

Troubleshooting

SymptomLikely causeFix
0 jobs deliveredFilters too strict, or monitor mode has already sent everythingCheck filteredOut and skippedAlreadySeen in OUTPUT. Loosen the filters or wait for new jobs.
A board shows error in OUTPUTThe board was down or rate-limitedThe run continues with the other boards. A cached copy (up to 48 hours old) is used when available. Retry later.
Same jobs as the last runThe shared cache is inside the board's refresh intervalExpected. Use monitor mode to get only new jobs.
Salary looks offUnusual salary textCompare with salaryText and salarySource, and open an issue with the job URL.
Fewer Remotive jobs than on its siteThe free API returns a 24-hour-delayed sampleExpected. The other boards cover the gap.

Terms and responsible use

The actor reads only public, keyless APIs and feeds that the boards publish for programmatic use. It does not log in, solve captchas, rotate proxies or scrape HTML pages. It calls each board no more often than that board allows, and it keeps a link back to each original listing on every row.

You are responsible for how you use the data. Follow each board's attribution rule and restrictions, listed in the sources table. Do not resubmit Remotive jobs to third-party job boards. Do not imply that any board endorses your product. Treat company names and job descriptions as the property of their owners.

More resources

Works well with

Other actors from Detroit Web Agent - Open Data that pair with this one:

Changelog

  • 0.1 (2026-10-13): first release. Six boards (Remotive, Remote OK, We Work Remotely, Himalayas, Jobicy, Arbeitnow). Added in this release:
    • cross-board dedupe with alsoListedOn
    • salary parsing with yearly and yearly-USD amounts
    • normalised categories, job types, experience levels, regions and timezones
    • monitor mode
    • text, HTML and Markdown descriptions
    • balanced, newest and salary sort orders
    • a per-account cache that respects each board's call limits

Support

Found a bug, or need a board or a field? Open an issue on this actor's Issues tab. Include the run URL and an example job URL, and we will reply there.


Built and maintained by Detroit Web Agent - Open Data (Detroit, Michigan). Questions, bugs or a field you need: open an issue on this Actor's Issues tab and we will reply there.

Use it from AI assistants (MCP)

Remote Jobs Aggregator works as a tool for AI assistants through the official Apify MCP server. Add this server URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):

https://mcp.apify.com/?actors=transparent_meteorite/remote-jobs-aggregator
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=transparent_meteorite/remote-jobs-aggregator",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Example prompts: "Find remote Python jobs paying over $120k posted this week", "List new remote design jobs open to Europe".

Did this actor do the job? If it saved you time, a short honest review on the Reviews tab helps other people judge it. If something was off, open an Issue on this page with the input you used. I read every one and fix real bugs, usually the same day.