RemoteOK Jobs Scraper | Remote Tech Jobs, Salary & Stack avatar

RemoteOK Jobs Scraper | Remote Tech Jobs, Salary & Stack

Pricing

from $0.80 / 1,000 results

Go to Apify Store
RemoteOK Jobs Scraper | Remote Tech Jobs, Salary & Stack

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

TQM

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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?

FieldDescription
titleJob title as posted
companyHiring company
jobUrlLink to the original RemoteOK posting
applyUrlDirect application link, when RemoteOK carries one
salarySalary string exactly as posted
salaryMin / salaryMaxParsed annual salary bounds
currencySalary currency (USD)
locationLocation as posted; Remote when the posting states none
tagsRemoteOK's own tags, lower-cased
techStack / skillsTechnologies detected in the title and description (the two carry the same list)
jobTypeAlways remote — RemoteOK is a remote-only board
categoryJob category, when one of RemoteOK's tags matches a known category
postedAtPublication date from the feed
descriptionPosting body, HTML stripped, truncated to 1,000 characters
jobIdStable RemoteOK id, useful as a deduplication key
scrapedAtWhen this run collected the row

How do I use RemoteOK Job Scraper?

  1. Click Try for free.
  2. 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.
  3. Click Save & Start.
  4. 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

OptionTypeDefaultWhat it does
maxJobsinteger100How many postings to return. 100 is the real ceiling — see below.
techStackFilterarray(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.
categoriesarray(none)Restrict to RemoteOK's category labels. The only values that exist are dev, design, sales, marketing, support, admin — see below.
minSalaryinteger0Drop postings below this annual USD figure. Postings with no stated salary are also dropped once this is set.
regionsarray(none)Substring match against the posting's free-form location text, e.g. ["United States"] — not a region taxonomy. See below.
failOnZeroResultsbooleantrueFail 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.

valuepostings
dev29
marketing27
design27
sales2
(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:

valuepostings
Remote34
United States8
US7
India2
Europe · Asia · Germany · Anywhere · Worldwide0

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 jobUrl links 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.

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.