RemoteOK Scraper — Remote Jobs with Salary & Tags
Pricing
from $0.79 / 1,000 results
RemoteOK Scraper — Remote Jobs with Salary & Tags
Scrape remote job listings from RemoteOK. Filter by tags (python, devops, react), posting age and result count. Returns salary ranges, company, tags, direct apply URLs and full job descriptions.
Pricing
from $0.79 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Remote OK Scraper

Extract job listings from remoteok.com at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for remote-first companies worldwide
A dedicated remote-work scraper, not a global tool with a country dropdown. Search, locations and currency (USD) are tuned for remoteok.com.
📄 Complete job data
Full job title and description, direct listing URL and publish date for every record.
💶 Salary data
Salary information parsed from the listing where the employer publishes it, in USD. Missing salaries are returned as null, never guessed.
🏢 Company details
Hiring company name plus the profile details the source publishes, such as logo and company page.
📍 Location fields
Structured location data for every listing, ready for filtering and analysis.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new jobs instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
tags | array | (empty) | Filter jobs by one or more tags (e.g. ["python", "react", "devops"]). Leave empty to fetch all recent remote jobs. |
companies | array | (empty) | Only return jobs from these companies (case-insensitive). Leave empty for all companies. |
minSalary | integer | 0 | Only return jobs with a published salary minimum at or above this value (USD/year). Set to 0 to disable. |
daysOld | integer | 0 | Only return jobs posted within this many days. Set to 0 to disable age filter. |
skipReposts | boolean | false | Skip jobs already returned in a previous run (cross-run deduplication). Ideal for scheduled daily feeds. |
startUrls | array | (empty) | Specific RemoteOK job URLs to scrape directly (e.g. https://remoteok.com/remote-jobs/remote-senior-engineer-acme-1234). Leave empty for search mode. |
searchQuery | string | "developer" | Keywords or job title to search for. |
fetchDetails | boolean | false | Fetch full job details from individual listing pages. |
maxItems | integer | 500 | Maximum number of jobs to return. Set to 0 for no limit. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
jobId | string | Unique listing ID from the source. |
url | string | Direct link to the listing. |
applyUrl | string | Direct application link. |
source | string | Source. |
title | string | Job title as published. |
company | string | Hiring company name. |
location | string | — |
tags | array | Tags or keywords attached to the listing. |
salaryMin | number | Minimum salary (null if not published by the employer). |
salaryMax | number | Maximum salary (null if not published by the employer). |
currency | string | Currency. |
publishDate | string | Publish date. |
publishDateISO | string | Publish date iso. |
descriptionHtml | string | Full job description in HTML. |
descriptionText | string | Full job description in plain text. |
descriptionMarkdown | string | Description markdown. |
scrapedAt | string | Timestamp when this record was scraped. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
Example record
{"jobId": "1134005","url": "https://remoteOK.com/remote-jobs/remote-team-lead-customer-care-capgemini-1134005","applyUrl": "https://remoteOK.com/remote-jobs/remote-team-lead-customer-care-capgemini-1134005","source": "remoteok.com","title": "Team Lead Customer care","company": "Capgemini","location": "Kolkata, ","tags": ["design","technical","microsoft","exec"],"salaryMin": null,"salaryMax": null,"currency": null,"publishDate": "2026-06-23","publishDateISO": "2026-06-23T16:54:43+00:00","descriptionHtml": "Choosing Capgemini means choosing a company where you will be empowered to shape your career in the way youâd like, where youâll be supported and inspired byâ¯a collaborative community of colleag …","descriptionText": "Choosing Capgemini means choosing a company where you will be empowered to shape your career in the way youâd like, where youâll be supported and inspired byâ¯a collaborative community of colleag …","descriptionMarkdown": "Choosing Capgemini means choosing a company where you will be empowered to shape your career in the way youâd like, where youâll be supported and inspired byâ¯a collaborative community of colleag …","scrapedAt": "2026-06-24T17:06:01.197Z","contentHash": "0175b6772c0bc37d"}
Examples
Search for python developer roles:
{"searchQuery": "python developer","maxItems": 100}
Only jobs from the last 3 days:
{"searchQuery": "python developer","maxItems": 100,"daysOld": 3}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.remoteok.com/"}],"maxItems": 200}
Daily feed (run on a schedule):
{"searchQuery": "python developer","daysOld": 1,"skipReposts": true,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours.
💰 Pricing
$0.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.9 |
| 100,000 | ~$99 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.59 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Salary is only returned when the employer publishes it — many listings carry
nullsalary fields. - Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: remoteok.com — remote-first companies worldwide job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl