RemoteOK Jobs Scraper | Remote Tech Jobs, Salary & Stack
Pricing
from $0.80 / 1,000 results
RemoteOK Jobs Scraper | Remote Tech Jobs, Salary & Stack
Scrape the whole RemoteOK board into structured rows: job title, company, salary range, tech stack, location and a link to the original posting. Reads RemoteOK's public JSON feed - no browser, no proxy, no login - so a full run takes seconds. Filter by tech stack, category, region or minimum salary.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
TQM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
RemoteOK Job Scraper turns RemoteOK's remote-job board into clean, structured rows — job title, company, salary, tech stack, location and a link back to the original posting.
It reads RemoteOK's public JSON feed directly. No browser, no proxy, no login, which is why a full run finishes in seconds and costs a fraction of a browser-driven scraper.
What data can I extract from RemoteOK?
| Field | Description |
|---|---|
title | Job title as posted |
company | Hiring company |
jobUrl | Link to the original RemoteOK posting |
applyUrl | Direct application link, when RemoteOK carries one |
salary | Salary string exactly as posted |
salaryMin / salaryMax | Parsed annual salary bounds |
currency | Salary currency (USD) |
location | Location as posted; Remote when the posting states none |
tags | RemoteOK's own tags, lower-cased |
techStack / skills | Technologies detected in the title and description (the two carry the same list) |
jobType | Always remote — RemoteOK is a remote-only board |
category | Job category, when one of RemoteOK's tags matches a known category |
postedAt | Publication date from the feed |
description | Posting body, HTML stripped, truncated to 1,000 characters |
jobId | Stable RemoteOK id, useful as a deduplication key |
scrapedAt | When this run collected the row |
How do I use RemoteOK Job Scraper?
- Click Try for free.
- The form opens with one filter already set,
categories: ["dev"], which returns the board's developer postings (23 of 99 on 2026-09-26). Clear it to get the whole feed, or swap in a filter of your own;techStackFilter: ["aws", "kubernetes"]is a good first try. - Click Save & Start.
- When the run finishes, open the Storage tab and export as JSON, CSV, Excel or feed it straight to the API.
A default run takes a few seconds and returns whatever RemoteOK is currently listing.
Input reference
| Option | Type | Default | What it does |
|---|---|---|---|
maxJobs | integer | 100 | How many postings to return. 100 is the real ceiling — see below. |
techStackFilter | array | (none) | Keep only postings mentioning these technologies, e.g. ["aws", "terraform"]. Matched on word boundaries over the title and description, so aws does not match laws. |
categories | array | (none) | Restrict to RemoteOK's category labels. The only values that exist are dev, design, sales, marketing, support, admin — see below. |
minSalary | integer | 0 | Drop postings below this annual USD figure. Postings with no stated salary are also dropped once this is set. |
regions | array | (none) | Substring match against the posting's free-form location text, e.g. ["United States"] — not a region taxonomy. See below. |
failOnZeroResults | boolean | true | Fail the run, with a reason, when it returns nothing. See below. |
Input sample
{"maxJobs": 100,"categories": ["dev"],"techStackFilter": ["aws", "kubernetes", "terraform"],"minSalary": 80000,"failOnZeroResults": true}
Two filters where the value matters more than you'd expect
Both are measured against a live 99-posting board, so these are real numbers rather than illustrations.
categories takes six values, and only six. RemoteOK labels a posting dev, design, sales, marketing, support or admin. Anything else — devops, backend, engineering — matches nothing at all.
| value | postings |
|---|---|
dev | 29 |
marketing | 27 |
design | 27 |
sales | 2 |
| (no category) | 14 |
14 postings carry no category, and this filter rejects them — a posting with no category cannot satisfy a category filter. They report separately as categories_uncategorised if a run comes back empty, so you can tell "my value was wrong" from "the board is unlabelled".
regions is a substring match, not a taxonomy. It matches your string against the posting's location text, which the employer writes freehand. There is no list of regions behind it:
| value | postings |
|---|---|
Remote | 34 |
United States | 8 |
US | 7 |
India | 2 |
Europe · Asia · Germany · Anywhere · Worldwide | 0 |
Use a string you'd expect to see typed into a job posting, and expect small numbers.
Filters stack, and these two stack hard. Every filter you add is an AND. Measured on the same board, categories: ["dev"] alone returns 23 and regions: ["United States"] alone returns 6, but both together return nothing: the 23 developer postings and the 6 US-located ones do not overlap. Add one filter at a time and watch the count rather than setting several at once.
Output sample
{"source": "remoteok","jobId": "1013845","title": "Senior Platform Engineer","company": "Acme Cloud","jobUrl": "https://remoteok.com/remote-jobs/1013845","applyUrl": "https://acmecloud.example/careers/senior-platform-engineer","salary": "$120,000 - $160,000","salaryMin": 120000,"salaryMax": 160000,"currency": "USD","location": "Remote","tags": ["devops", "aws", "kubernetes"],"techStack": ["aws", "kubernetes", "terraform"],"skills": ["aws", "kubernetes", "terraform"],"jobType": "remote","category": "devops","postedAt": "2026-09-01","description": "We are looking for a senior platform engineer to own our AWS estate...","scrapedAt": "2026-09-04T09:12:44.118Z"}
How many jobs can I scrape from RemoteOK?
Roughly 100 — and that is the whole board, not a limit we imposed.
RemoteOK's feed is a single un-paginated page carrying about 100 live postings at any time. Measured on 2026-09-04 it held 99. maxJobs is capped at 100 for that reason.
If you see an actor advertising "up to 1,000 jobs" from RemoteOK, it cannot deliver them — there are not 1,000 to deliver. To build a larger dataset over time, schedule this actor daily and deduplicate on jobId; new postings appear continuously.
A run that returns nothing tells you why
With failOnZeroResults: true (the default) an empty run fails and names the cause in its status message, for example:
Read 99 postings but every one was removed by your filters (techStackFilter=99). Loosen the filters and re-run.
This is deliberate. A zero-row run that reports success is indistinguishable from a broken actor, and on pay-per-result pricing it is you paying for nothing. Set failOnZeroResults: false if you are polling on a schedule and quiet runs are expected.
How much does it cost?
This actor is cheap to run because it never opens a browser: one HTTP request to a public JSON feed, then parsing. A full-board run is a single request regardless of how many filters you apply — a narrow techStackFilter costs exactly the same as no filter at all, because filtering happens after the fetch.
The most reliable way to price your own use case is to run it once with your real input and read the run's cost from the Runs tab, then multiply by how often you intend to schedule it.
Who is this for?
- Recruiters and talent teams benchmarking remote salaries and tracking which stacks are in demand.
- Job seekers aggregating remote roles into a spreadsheet instead of refreshing a board, with direct
jobUrllinks to apply. - Market researchers measuring remote-hiring trends, salary distributions and tech-stack adoption over time.
- Lead generation — every posting names a company that is actively spending money on engineering.
- Developers who want a job feed as JSON without writing and maintaining a scraper.
FAQ
Do I need a RemoteOK account?
No. This actor reads RemoteOK's public feed. There is no login, no cookie and no account to be banned.
Will I get blocked?
Very unlikely. The actor makes a single request to a public endpoint that RemoteOK publishes for programmatic use, and it does not need a proxy.
Is it legal to scrape RemoteOK?
This actor collects only what RemoteOK publishes publicly for anyone to read, and extracts no private user data. RemoteOK's API terms do require attribution: if you republish or display these postings, link back to the original posting and name RemoteOK as the source. Every row carries jobUrl for exactly that purpose. Using this actor does not exempt you from that obligation — please read RemoteOK's API terms before publishing what you collect.
Your results may contain personal data. You should not scrape or store personal data without a legitimate reason; if you are unsure whether yours qualifies, consult your lawyers.
Can I export to Excel or Google Sheets?
Yes. Every run's dataset downloads as JSON, CSV, XML or Excel from the Storage tab, with no code required.
Can I run this on a schedule?
Yes. Use Apify Schedules to run it daily or hourly, and deduplicate on jobId to build a growing dataset of everything RemoteOK has listed.
Integrations and API
Runs can be triggered and results collected through the Apify API, the JavaScript and Python clients, or any of Apify's built-in integrations — Zapier, Make, Slack, Google Drive, GitHub and generic webhooks. Point a webhook at a run's completion event to push new remote jobs straight into your own system.
Support
Found a bug, or a field you need that we do not return? Open an issue on this actor's Issues tab and it will reach the maintainers directly.