Remote Jobs Aggregator: 7 Boards incl. Remote OK
Pricing
from $0.98 / 1,000 jobs
Remote Jobs Aggregator: 7 Boards incl. Remote OK
Remote jobs scraper for 7 job boards at once: Himalayas, Remote OK (open posts, not just its API), We Work Remotely, Jobicy, Relomote, Arbeitnow, Working Nomads. Filter by keyword, category, country, date. Title, company, location, job type, links, description, plus salary and logo when listed.
Remote jobs scraper for 7 boards: Himalayas, Remote OK (its open posts, not just its ~100-job API), We Work Remotely, Jobicy, Relomote, Arbeitnow and Working Nomads. Type a keyword like python or customer support and get one list of remote jobs, shared out across the boards, with title, company, location, job type, posted date, apply link, description and the salary when the job lists one.
| πΌ Title | π’ Company | π Location | π Job Type | π° Salary | π Posted | π Boards |
|---|---|---|---|---|---|---|
| Senior Applied AI/ML Scientist | NobleAI | United States | Full-time | USD 190,000 - 220,000 per year | 2026-10-01 | Himalayas |
| Senior Customer Success Manager | 1Password | United Kingdom | Full-time | GBP 73,000 - 106,000 per year | 2026-10-01 | Jobicy |
| Senior Software Engineer, Card Authorization | Lithic | Anywhere | Full-time | β | 2026-09-30 | We Work Remotely |
$0.98 per 1,000 jobs on every plan (Free, Starter, Scale and Business). The prefilled run (up to 100 jobs: 50 python and 50 customer support jobs of the last 7 days) costs about $0.10.
It reads the boards' public job feeds and pages at run time: no login, no browser. The prefilled run with a $0.05 spending limit on 2026-10-01 (build 0.1.33) found 201 matching jobs and delivered the 51 that $0.05 pays for, from all 7 boards: Himalayas 13, Jobicy 13, We Work Remotely 12, Relomote 8, Remote OK 2, Arbeitnow 2 and Working Nomads 1 (Remote OK, Arbeitnow and Working Nomads post few new remote jobs a week). 6 of the 8 Relomote jobs link the employer's own apply page. The first job was in the dataset 7 seconds after the run was started, and the run took 41 seconds.
What you can do with it
- Find remote work in one place: one search covers seven remote job boards, with a job listed on several boards shown once.
- Feed a job board, newsletter or Slack channel with fresh remote jobs: schedule it daily with
postedWithinDaysset to 2. - Filter by where you live:
Open to candidates inkeeps the jobs open to your country, including worldwide jobs and jobs for your region (Europe, LATAM, APAC, North America). - Benchmark remote pay: the π° With Salary list holds every job with a published salary, with numbers you can sort and average.
- Track who's hiring remotely for a skill or role, by company and category.
Input
{"keywords": ["python", "customer support"],"categories": ["Software Development", "Customer Support"],"country": "Germany","postedWithinDays": 7,"maxJobsPerKeyword": 100}
| Field | What it does |
|---|---|
keywords | What to search for, one per line: a skill, role or tool (python, product designer, customer support, react). A job matches when every word is in its title, company, or the board's own category and tags, as whole words (java doesn't find JavaScript). A skill or tool (python, kubernetes, machine learning) also matches when the whole phrase is in the description. Words that name a kind of job (sales, design, marketing, data, customer support, product manager) and short keywords of 1 to 3 letters (ai, go, qa) match the title, category and tags only, since nearly every description mentions them. When maxJobsPerKeyword cuts, title matches go first, then category and tag matches, then description matches, and within each the boards take turns, so one busy board can't fill the cap. An empty list gives the latest remote jobs of every kind. |
categories | Optional. Keep only jobs in these categories: Software Development, Data & AI, DevOps & IT, Design, Product, Marketing, Sales, Customer Support, Finance & Legal, HR & Recruiting, Writing & Content, Operations, Other. Each board's own category is mapped to these. |
country | Optional (Open to candidates in in the form). A country you live in, e.g. United States, Germany, India, Brazil. Keeps the jobs open to its residents: jobs that name the country or its region, and jobs open worldwide. Worldwide keeps only the jobs open to anyone, anywhere. |
postedWithinDays | Keep only jobs posted in the last N days (0 = any date). Older jobs cost nothing. |
maxJobsPerKeyword | The jobs to keep per keyword, across all boards: the best matches, shared out so each board with matches gets its turn (Himalayas alone posts hundreds of jobs a day and would otherwise fill it), newest first in the dataset (default 100; the form starts at 50). 0 = every job the boards give. You pay per job, so this caps the cost per keyword. |
boards | Which boards to search: himalayas, jobicy, remoteok, weworkremotely, workingnomads, arbeitnow, relomote (all seven by default). 4 Day Week is no longer searched: its jobs' apply links need a paid 4dayweek.io account (an input that names fourdayweek still runs, without it). |
employmentTypes | More filters. Keep only these job types: Full-time, Part-time, Contract, Temporary, Internship. Jobs whose board and title don't give a type are left out. |
seniority | More filters. Keep only these levels: Entry-level, Mid-level, Senior, Manager, Director, Executive. Himalayas and Jobicy give a level; for the other boards only a clear title word counts (Senior, Lead, Junior, Director, VP). |
minSalary | More filters. Keep only jobs listing a US-dollar salary whose top of range is at least this per year (hourly and monthly pay converted). Jobs with no salary or another currency are left out. |
timezone | More filters. A UTC offset you work in (UTC-5, UTC+1, UTC+5:30). Keeps Himalayas jobs that accept it (the only board that lists time zones) and, from the other boards, only jobs open worldwide. |
maxResults | Advanced. Stop after this many jobs in total (default 1,000). |
includeDescription | Advanced. Full description as plain text (on by default, same price). |
includeDescriptionHtml | Advanced. Also the description as HTML, in descriptionHtml (off by default, same price). |
findContactEmails | Advanced. For jobs whose description gives no email, look for one on the company's own website: its home page, then its contact, careers or about page. Only an address on the company's own domain counts. The website is the one We Work Remotely lists, or the company's name as a domain (acme.com, acme.io, acme.ai) when that site's title carries the company's name. Off by default; charged per job that gets an email this way (see Pricing). In two test runs on 2026-10-01 (the prefill with a $0.05 limit), 4 to 7 of about 45 jobs got one from a website and 6 to 7 from their description, mostly general or accessibility inboxes (info@, contact@, accommodations@) rather than careers@. It makes a run slower, since a slow company site can take 20 s: those runs (build 0.1.24) took 77 s and 157 s, against 22 s for the same search without it. |
proxyConfiguration | Advanced. Apify Proxy (datacenter) by default; the feeds are public, so it only spreads the requests over several IPs. Residential and SERP proxies are replaced with datacenter. |
Output
One row per job. Rows go out as the boards answer, so the first jobs are in the dataset within seconds: for each keyword, the boards that answer within a second of the first one go out together, newest first, and a slower board's jobs follow as soon as it answers. A job that several boards list comes once: when those boards answer together, its fields come from the richest board (Himalayas, then Jobicy, Remote OK, We Work Remotely, Working Nomads, Arbeitnow, Relomote) and sources / sourceUrls list every board with the job's page there; a board that answers after the job's row went out isn't added to it (OUTPUT counts these). A job that several keywords find comes once, under the first keyword that found it.
Two datasets, both with the same rows:
- πΌ All Jobs (default dataset). Views: π Overview (πΌοΈ Logo, πΌ Title, π’ Company, π Location, π Job Type, ποΈ Category, π° Salary, π Posted, π Boards, π Job Page) and π Details (πΌ Title, π’ Company, ποΈ Seniority, π Worldwide, πΊοΈ All Locations, π Time Zones, π° Salary Min, π° Salary Max, β±οΈ Pay Period, β Expires, π Apply, π Board Links, π Keywords, π Job ID) and π Contacts (πΌοΈ Logo, πΌ Title, π’ Company, π§ Contact Email, π§ Email Source, π Website, π’ Company Page, π Apply, π Job Page).
- π° With Salary: the delivered jobs that publish a salary, in the same order, at no extra charge. View π° Salaries: πΌοΈ Logo, πΌ Title, π’ Company, π Location, π° Salary, π° Salary Min, π° Salary Max, π± Currency, β±οΈ Pay Period, π Posted, π Job Page.
Output fields
In row order:
companyLogo: the company's logo from the board (Himalayas, Jobicy, Remote OK, Relomote and some We Work Remotely jobs; Arbeitnow and Working Nomads show none).title: job title.company: company name.location: where a hire may live, in short:Anywhere,United States,Europe, United Kingdom, orAlbania, Andorra, Argentina + 70 morefor a long list.isWorldwide:truewhen anyone anywhere can apply,falsewhen the board names places, empty when it doesn't say.employmentType:Full-time,Part-time,Contract,Temporary,InternshiporVolunteer.seniority:Entry-level,Mid-level,Senior,Manager,DirectororExecutive, when the board says (Himalayas, Jobicy, some Remote OK and Arbeitnow jobs). A Himalayas job open to two levels lists both (Mid-level, Senior).category: the board's category in common words (seecategoriesabove).salary: published pay, e.g.USD 160,000 - 200,000 per year. Empty when the job lists none (18 of 51 jobs had one in the prefilled run on 2026-10-01; We Work Remotely lists none).salaryMin: the lowest pay in the range, as a number.salaryMax: the highest pay in the range, as a number.salaryCurrency: ISO currency code, e.g.USD,EUR.salaryPeriod:year,month,2 weeks,week,dayorhour.postedAt: when the job was published on the board, in UTC (2026-09-30T15:08:46Z). For Arbeitnow it's the date on the job's own page: its feed's date is when it last refreshed the listing, often weeks later, so it's never used. Empty when the board gives no date.expiresAt: when the board takes the listing down, in UTC (Himalayas, We Work Remotely, Remote OK, Arbeitnow, Relomote).jobUrl: the job's page on its first board.applyUrl: where to apply: for Relomote jobs, the employer's own page its Apply button opens (Greenhouse, Ashby, Workday, Workable...); for the other boards, the employer's own link when a description gives one (an applicant tracking system or form), else the board's apply page (Working Nomads' sends you on to the employer; We Work Remotely and Jobicy ask you to sign in to apply). A link a description offers for accommodation, accessibility or privacy requests is never taken as the apply link.contactEmail: a contact email for the job: from a description (a hiring mailbox such as jobs@ or recruiting@ first), or withfindContactEmailsfrom the company's website. Empty when neither gives one, which is most jobs (4 to 14 of 51 in the prefilled runs on 2026-10-01 had one from a description, often a general or accessibility inbox).contactEmailSource: the page the email was found on: the job's page, or a page of the company's website.companyWebsite: the company's own website (We Work Remotely lists it for about a third; withfindContactEmails, also the site the search confirmed). Empty otherwise.companyUrl: the company's page on the board (Himalayas, Remote OK, Relomote).locations: every country or region the board lists. Empty when the job is open anywhere or the board doesn't say.timezones: UTC offsets a hire must work in (UTC-5), orAny. Himalayas lists them.tags: skills and tags from Remote OK, We Work Remotely, Working Nomads and Arbeitnow (Python,Django), or Himalayas' own role labels (Data Engineer,Staff Data Engineer, not skills) when no other board lists the job. Jobicy and Relomote give none.boardCategory: the board's own category name as it prints it (Developer,Sales and Marketing); for Remote OK its industry (Startups).description: the full job description as plain text,β’for list items. Only withincludeDescription(on by default).descriptionHtml: the board's description as HTML. Only withincludeDescriptionHtml.sources: every board that lists the job, the row's own board first.sourceUrls: the job's page on each of those boards, same order.jobId: the job's id on its first board.keywords: your keywords that found the job. Empty for a run without keywords.scrapedAt: when this run read the job (UTC).
Example row (with findContactEmails and includeDescriptionHtml on; lists and description shortened):
{"companyLogo": "https://cdn-images.himalayas.app/95gzgg20hqvtq04pae5z2598mdmo","title": "Sr. Security Researcher","company": "Crowdstrike","location": "United States","isWorldwide": false,"employmentType": "Full-time","seniority": "Senior","category": "Software Development","salary": "USD 85,000 - 120,000 per year","salaryMin": 85000,"salaryMax": 120000,"salaryCurrency": "USD","salaryPeriod": "year","postedAt": "2026-10-01T01:33:24Z","expiresAt": "2026-11-30T01:33:23Z","jobUrl": "https://himalayas.app/companies/crowdstrike/jobs/sr-security-researcher-1862189292","applyUrl": "https://himalayas.app/companies/crowdstrike/jobs/sr-security-researcher-1862189292","contactEmail": "info@crowdstrike.com","contactEmailSource": "https://crowdstrike.com/en-us/contact-us/","companyWebsite": "https://crowdstrike.com/","companyUrl": "https://himalayas.app/companies/crowdstrike","locations": ["United States"],"timezones": ["UTC-10", "UTC-9", "UTC-8", "UTC-7", "UTC-6", "UTC-5"],"tags": ["Security Researcher", "Threat Intelligence Analyst", "Vulnerability Researcher", "Malware Analyst"],"boardCategory": "Developer","description": "As a global leader in cybersecurity, CrowdStrike protects the people, processes and technologies that drive modern organizations. Since 2011, our ...","descriptionHtml": "<p>As a global leader in cybersecurity, CrowdStrike protects the people, processes and technologies that drive modern ...","sources": ["Himalayas"],"sourceUrls": ["https://himalayas.app/companies/crowdstrike/jobs/sr-security-researcher-1862189292"],"jobId": "crowdstrike/sr-security-researcher-1862189292","keywords": ["python"],"scrapedAt": "2026-10-01T01:58:41Z"}
The run's π§Ύ Run summary (the OUTPUT record in the key-value store) shows, per keyword and board, how many jobs the board sent and how many matched, plus any error.
Credit the boards
The boards share their jobs on the condition that you credit them: keep each job's sourceUrls (a link back to the original posting) and name the board in sources when you show the jobs to others. Remote OK asks for a followed link and the name "Remote OK" (not its logo); Arbeitnow asks for a link back to its site. Himalayas asks that its jobs aren't submitted to third-party job sites such as Google Jobs, LinkedIn Jobs or Jooble.
When something goes wrong
- If a board doesn't answer after several retries on fresh IPs, the run still delivers the other boards' jobs and says which board failed in the status message and the run summary. If no board answers at all, or a board fails and the others find nothing, the run ends as failed so you notice.
- If a board answers in a format we can't read (a changed feed), that board counts as failed in the same way, with the reason in the run summary (
boardsChangedFormat,boardErrors), instead of quietly giving fewer jobs. - If a board asks us to slow down (HTTP 429), the run waits as long as the board asks and tries again from the same IP.
- A keyword no board has jobs for gives a clean empty result and a status message saying so. The status message says a board "had no matching job" only when it answered every search; a board your spending limit or
maxResultsstopped before it answered is named as not having answered. - When
maxResultsor your spending limit is reached, the run stops there, after delivering every job the limit pays for (the prefilled run with a $0.05 limit delivered 51 jobs at $0.98 per 1,000); you pay only for the jobs delivered.
Pricing
You pay per job delivered: $0.98 per 1,000 jobs on every plan (Free, Starter, Scale and Business). Descriptions, salaries, apply links and the emails job descriptions give are included at the same price. No start fee. With findContactEmails on, a job that gets its contact email from the company's website adds $0.98 per 1,000 such jobs (on every plan); a job without one adds nothing. Requests, retries, jobs left out by your filters and the π° With Salary list cost nothing.
Examples: the prefilled run (up to 100 jobs) about $0.10; the default maxResults of 1,000 jobs $0.98; 5,000 jobs $4.90. maxJobsPerKeyword and maxResults cap what a run can cost.
FAQ
How many jobs does a keyword reach? Himalayas' search goes up to 5,000 jobs per keyword, Remote OK the open posts in our index (below), Jobicy its latest 200, We Work Remotely its ten category feeds (about 300 jobs), Relomote the newest 90 fully remote jobs of each matching category in North America and in Europe (its plain category pages are mostly hybrid jobs), Arbeitnow its last few days (about 140 remote jobs) and Working Nomads its latest 60 or so. maxJobsPerKeyword keeps the best matches across all of them, each board with matches taking its turn. With no keyword, maxJobsPerKeyword 0 and a high maxResults, a run takes every job those feeds give.
How does it read Remote OK's full board? Remote OK's public API holds only about 100 jobs, days behind the site, and the feed its own page scrolls through is one its robots.txt asks crawlers not to use; we respect robots.txt (the same reason Remotive isn't included). So we read the job pages its robots.txt does allow, one per second as it asks, and keep the open ones in an index that a scheduled run brings up to date every two hours. Remote OK keeps a post's page up after its poster closes it, marked "closed", so each update also reads the indexed jobs checked longest ago again and drops the ones closed since, so a post closed since its last check (at most a few hours) can still come through. The index is still filling with Remote OK's older posts, a few hundred pages per update. Your run reads that index in a second and reads the few Remote OK pages posted since the last update itself. The run summary's remoteOkFullBoard shows how many jobs the index held and how old it was.
How fresh is the data? Each run reads the boards' feeds at run time, so a job comes in as soon as its board lists it. Remote OK's index is at most about two hours old, and your run adds the Remote OK jobs posted since.
Can I get new jobs every day? Yes: save your input as a task, schedule it daily, and set postedWithinDays to 2 so each run brings the latest postings. A job two runs find comes in both; dedupe on jobUrl.
Does it collect personal data? Rows hold jobs and companies, no recruiter profiles. contactEmail is the address a job posting or the company's website publishes for applications or inquiries, which can be a recruiter's work email; use it within the privacy and anti-spam rules that apply to you.
One board only
Need just one board? Himalayas Jobs and We Work Remotely Jobs run this same search on that board alone, with a form and a table made for it.
Feedback
Missing a board, a field or a filter? Open an issue on the Issues tab and we'll look at it. If the data helped you, a short review on this page helps other people find it.