RemoteOK Remote Jobs Scraper
Pricing
from $1.00 / 1,000 results
RemoteOK Remote Jobs Scraper
Scrape remote job listings from RemoteOK.com using their official public JSON API. Filter by skill tags, minimum salary, and keywords. Returns structured job data with salary, company info, tags, and direct apply links. No proxy or authentication needed.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
In life Projects Dev
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
36 minutes ago
Last modified
Categories
Share
Fetches remote job listings from RemoteOK's official public JSON API — no authentication, no proxy, no browser automation required. Each run returns up to ~100 of the most recent jobs per tag filter, normalized into a consistent NormalizedJob schema and pushed to an Apify Dataset. Supports optional webhook delivery for job board pipelines.
✨ Features
- Official RemoteOK JSON API — no browser, no proxy, no CAPTCHAs
- Filter by skill tags (javascript, python, react, devops, design etc.)
- Client-side keyword filter on title, company, tags
- Minimum salary filter (USD)
- Verified listings filter
- Non-tech role filter (optional)
- HTML stripped from descriptions — clean plain text output
- Webhook delivery in batches of 50 for job board pipelines
- Same NormalizedJob output schema as inlifeprojects/himalayas-jobs-scraper
- Results in under 5 seconds — extremely fast and cheap to run
🎯 Use Cases
- Job boards and aggregators
- Recruitment pipeline automation
- Salary research by tech stack
- Remote work trend monitoring
- AI agent job search workflows
📥 Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
tags | string[] | [] | Skill/category tags to filter by. Each tag is a separate API request. Leave empty for all recent jobs. |
keywordFilter | string | "" | Client-side keyword match against title, company, and tags. Case-insensitive. |
minSalary | integer | 0 | Exclude jobs where salary_max is below this value (USD). Jobs without salary data always pass through. |
includeUnverified | boolean | true | When false, only returns listings where verified=true. |
filterNonTech | boolean | false | When true, removes clearly non-technical roles (receptionist, accountant, driver, nurse etc.). |
maxResults | integer | 0 | Cap on total jobs returned across all tag requests. 0 means no limit. |
webhookUrl | string | "" | If set, POSTs all results to this URL in batches of 50 on completion. |
webhookSecret | string | "" | Sent as X-Scraper-Secret header with every webhook batch. |
📤 Output Format
Each item in the Apify Dataset conforms to the NormalizedJob schema:
{"id": "senior-python-engineer-techcorp","source": "remoteok","source_url": "https://remoteok.com/remote-jobs/senior-python-engineer-techcorp","apply_url": "https://techcorp.com/jobs/senior-python-engineer","title": "Senior Python Engineer","description": "We are looking for a Senior Python Engineer to join our backend team. You will design and build scalable APIs using Django and deploy them on AWS...","type": "full-time","work_mode": "remote","location": "Worldwide","experience_level": "","salary_min": 130000,"salary_max": 160000,"currency": "USD","salary_period": "year","company_name": "TechCorp","company_slug": "techcorp","company_url": "https://remoteok.com","company_logo_url": "https://remoteok.com/assets/companies/techcorp-logo.png","tags": ["python", "django", "aws", "backend"],"markets": ["python", "django", "aws", "backend"],"posted_at": "2026-04-28T14:23:00.000Z","expires_at": null,"scraped_at": "2026-04-29T09:00:00.000Z","data_source": "RemoteOK","data_source_url": "https://remoteok.com"}
🚀 Example Inputs
Fetch all recent remote jobs (no filter)
{}
Returns ~100 of the most recent jobs across all categories.
Filter by skill tags
{"tags": ["javascript", "react", "typescript"],"minSalary": 80000,"filterNonTech": true}
Job board pipeline with webhook
{"tags": ["python", "javascript", "devops", "react"],"webhookUrl": "https://yoursite.com/api/internal/scraper/ingest","webhookSecret": "your-secret-here"}
Senior roles only with salary filter
{"keywordFilter": "senior","minSalary": 120000,"includeUnverified": false}
⚡ Performance & Cost
- Single API request returns ~100 most recent jobs
- 4 tag filters = 4 API requests, ~400 jobs after deduplication
- Typical run: under 5 seconds
- Approximate Apify compute: 0.001–0.005 compute units per run
- Extremely cheap — well within Apify free tier
🏷️ Popular Tag Filters
javascript, typescript, python, react, vue, node, php, ruby, golang,rust, java, kotlin, swift, flutter, devops, aws, docker, kubernetes,design, ux, marketing, sales, finance, legal, hr, writing, customer-support
📋 Important Notes
- RemoteOK returns the ~100 most recent listings per tag request (not a full historical archive)
- Salary data is only available on ~30-40% of listings
- Salary currency is always USD on RemoteOK
- Employment type is always
"full-time"— RemoteOK doesn't expose type in their API - Attribution required: results include direct
source_urllinks to RemoteOK per their terms of use
🔗 Also by inlifeprojects
- Himalayas Remote Jobs Scraper — search remote jobs from Himalayas.app by keyword, seniority, employment type, and country. Supports full pagination up to 500 results per keyword with automatic deduplication.
- We Work Remotely Jobs Scraper — scrape remote job listings from WeWorkRemotely.com — the world's largest remote work community — via their official public RSS feeds. 11 category feeds covering programming, devops, design, product, marketing, and more. No proxy or auth needed.
All three Actors share the same NormalizedJob output schema — run them together and combine the results with zero extra normalization work for maximum remote job coverage.
🙏 Attribution
Data sourced from RemoteOK — the #1 remote-only job board on the web. Per RemoteOK terms: results link directly back to the original job listing on RemoteOK with no redirects.
⚠️ Limitations
- ~100 most recent jobs per tag (not full archive)
- Salary data sparse (~30-40% of listings)
- No pagination — RemoteOK API is a flat feed
- Rate limiting applies — built-in retry on 429
📝 Changelog
0.1.0
- Initial release