RemoteOK Jobs Scraper
Pricing
from $1.00 / 1,000 results
RemoteOK Jobs Scraper
[๐ฐ $1.0 / 1K] Extract remote jobs from RemoteOK by category, keyword, salary, tags, location, and posted-within window. Returns structured data with normalized salaries, ISO dates, and clean descriptions.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Pull remote job listings from RemoteOK at scale โ normalized USD salaries, structured tags, ISO-dated posts, geographic restrictions, apply links, and clean text descriptions on every row. Built for technical recruiters, remote-work analysts, and job-aggregator teams who need fresh remote-job intelligence from one of the largest English-speaking remote boards without checking the homepage every morning or maintaining a custom scraper.
Why This Scraper?
- 46 categories and skill tags in one picker โ the 17 headline categories (Engineering, Design, Sales, Customer Support, Finance, Operations and more) plus the skill tags people actually search: Python, JavaScript, React, Full stack, Backend, Front end, DevOps, Java, Golang, SQL, Cloud, AI, Machine learning, Virtual assistant, SEO, Legal and others. Pick one or combine several in a single run.
- 5 posted-window filters โ
24h,7d,30d,90d, orany. Surface only this week's listings for an alert, or pull a 90-day backlog for trend analysis. - Required-tags AND filter โ combine skills like
python+aws+seniorand only get jobs that match every one. Case-insensitive, applied across job tags. - USD salary parsed into three fields โ
salaryMinUSD,salaryMaxUSD, and a pre-formattedsalaryTextlike$190k โ $220k, populated whenever the employer published a range. Not a free-text "salary" blob you have to pick apart yourself. - Minimum-salary filter that keeps unlisted salaries โ set a floor of, say, $100,000 and the actor returns jobs at or above it plus jobs with no salary disclosed. Most boards drop the latter silently.
- ISO 8601
postedDateplus rawpostedEpochโ one field for humans and dashboards, one for time-series joins and recency math. - HTML and clean-text descriptions side by side โ keep
descriptionHtmlfor fidelity, usedescriptionTextfor downstream NLP, embedding, or LLM ingestion. Toggle off the cleanup pass to shrink output when you don't need it. - Job links normalized to a lowercase host โ RemoteOK serves mixed-case URLs (
https://remoteOK.com/...). We lowercase the host so the same job never appears twice in your CRM or pipeline, and listings RemoteOK publishes without their own page come back with an empty link rather than one pointing at the wrong job. - Reach far beyond the newest listings โ RemoteOK's public feed only surfaces the ~99 most recent jobs. This actor keeps going into the archive to pull thousands of historical postings per category.
Use Cases
Recruiting & Talent Sourcing
- Build a live feed of senior Engineering or Design roles for outbound targeting
- Match passive candidates to fresh openings by required skill stack
- Track which companies are hiring most aggressively for remote teams
Compensation Benchmarking
- Pull min/max USD salary ranges by category and seniority
- Compare disclosed pay across Engineering, Product, Design, and Marketing
- Build internal pay-band reports backed by current-market data
Job Aggregators & Board Operators
- Mirror RemoteOK listings into your own job board with full attribution
- Refresh categories on a daily schedule and dedupe by
id - Enrich your existing inventory with logos, tags, and geographic restrictions
Market Intelligence & Research
- Quantify demand for specific tech stacks (
react,rust,kubernetes) over time - Detect emerging remote-friendly industries by tag-frequency analysis
- Track location-restriction language (
europe-only,americas,worldwide)
Lead Generation for HR & Dev Tools
- Identify companies hiring at scale โ your buyer signal for ATS, payroll, and DevOps platforms
- Pull company logos and apply URLs for outreach personalization
- Filter by category to focus on segments that match your ICP
Job Seekers & Career Coaches
- Get a clean daily list of Python, Sales, or Customer Support remote roles
- Filter by minimum salary and geographic eligibility in one pass
- Export to CSV or Google Sheets for tracking applications
Getting Started
Newest Jobs from the Global Feed
The simplest possible run โ latest remote jobs across every category:
{"maxResults": 100}
Engineering Jobs Posted This Week
Narrow to one category and the last seven days:
{"categories": ["engineer"],"postedWithin": "7d","maxResults": 200}
Senior Python Roles from the Last 30 Days
Combine categories, a required-tags AND filter, and a salary floor:
{"categories": ["python", "senior"],"requiredTags": ["python", "senior"],"minSalaryUSD": 120000,"postedWithin": "30d","maxResults": 500}
Work-From-Anywhere Design Jobs from a Specific URL
Paste any RemoteOK URL and add a location filter:
{"searchUrls": ["https://remoteok.com/remote-design-jobs"],"locationContains": "anywhere","keyword": "product","maxResults": 100,"includeGlobalFeed": false}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
categories | string[] | [] | Pick from 46 RemoteOK categories and skill tags (Engineering, Design, Sales, Python, React, Full stack, Virtual assistant, and more). Each one is scraped as its own search. Leave empty to use the global feed only. |
searchUrls | string[] | [] | Paste any RemoteOK URL โ the homepage, a category page like https://remoteok.com/remote-python-jobs, or https://remoteok.com/api. Each URL is scraped separately. |
includeGlobalFeed | boolean | true | Also pull the latest jobs across all categories and merge with category results. Turn off if you only want a specific category or URL. |
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | "" | Only keep jobs whose title, company, tags, or description contain this text. Case-insensitive. |
requiredTags | string[] | [] | Only return jobs that include ALL of these tags (e.g. python, react, senior). Case-insensitive. |
minSalaryUSD | integer | null | Only return jobs whose maximum advertised salary is at least this amount (USD/year). Jobs without disclosed salary pass through. |
postedWithin | select | "any" | Time window: any, 24h, 7d, 30d, or 90d. |
locationContains | string | "" | Only keep jobs you are allowed to work from this place โ it matches the location restriction, not the company's own city. Values that work: anywhere, united states, canada, united kingdom, india, australia. Case-insensitive. |
Limits & Options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Maximum unique jobs to return across all sources, counted after your filters are applied. Set to 0 for unlimited. |
stripHtml | boolean | true | Emit a clean plain-text descriptionText alongside the HTML description. Turn off to shrink output when you only need the raw HTML. |
Output
Every row is a single job posting with normalized salary, dates, tags, and descriptions:
{"id": "1136795","slug": "remote-senior-software-engineer-case-execution-pivotal-health-1136795","url": "https://remoteok.com/remote-jobs/remote-senior-software-engineer-case-execution-pivotal-health-1136795","applyUrl": "https://remoteok.com/remote-jobs/remote-senior-software-engineer-case-execution-pivotal-health-1136795","position": "Senior Software Engineer Case Execution","company": "Pivotal Health","companyLogoUrl": "https://r2.remoteok.com/jobs/097ca4f4e8ab46a27c635df9bb179daf1786838404.png","location": "United States","locationText": "New York City, New York, United States","tags": ["dev", "front end", "python", "senior", "backend", "engineer", "medical"],"salaryMinUSD": 190000,"salaryMaxUSD": 220000,"salaryText": "$190k โ $220k","descriptionHtml": "<h1>About Pivotal Health</h1><p>Pivotal Health is the leading technology platform that helps healthcare providers get paid fairly...</p>","descriptionText": "About Pivotal Health\nPivotal Health is the leading technology platform that helps healthcare providers get paid fairly...","postedDate": "2026-08-16T00:00:03+00:00","postedEpoch": 1786838403,"categories": ["python"],"sourceUrl": "https://remoteok.com/api?tags=python","scrapedAt": "2026-08-19T16:57:11+00:00"}
Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique RemoteOK job identifier. Stable across runs โ use it for deduplication. |
slug | string | URL-friendly job slug (e.g. senior-python-engineer-acme-corp-1078421). |
url | string | Canonical RemoteOK listing URL, lowercase host. Null for the rare listing RemoteOK publishes without its own page. |
applyUrl | string | Where to apply. RemoteOK keeps applications on the listing page itself, so this matches url. |
position | string | Job title as posted by the company. |
company | string | Hiring company name. |
companyLogoUrl | string | Company logo image URL. Populated on roughly 95% of listings. |
location | string | The hiring restriction: where you are allowed to work from. Usually Anywhere, otherwise a country such as United States, Canada or India. This is the field locationContains filters on. A listing RemoteOK has not stated a restriction for falls back to the employer's own city. |
locationText | string | Where the company itself sits, as the employer wrote it โ New York City, New York, United States, Sydney, Berlin. Useful for timezone overlap. Null on older listings, which carry the restriction only. |
tags | string[] | Lower-cased skill, role, and seniority tags. |
salaryMinUSD | number | Minimum annual salary in USD, only when the employer published a range. Null otherwise. |
salaryMaxUSD | number | Maximum annual salary in USD, only when the employer published a range. Null otherwise. |
salaryText | string | Pre-formatted range like $190k โ $220k or up to $100k. Null when the employer published no range. |
descriptionHtml | string | Full job description with original HTML markup preserved. |
descriptionText | string | Clean plain-text version of the description. Null when stripHtml is off. |
postedDate | string | ISO 8601 timestamp of when the job was posted. |
postedEpoch | number | Unix epoch seconds of the posting date โ useful for time-series joins. |
categories | string[] | The category or tag this job was pulled from. Empty for global-feed rows. |
sourceUrl | string | The exact feed URL that produced this row. |
scrapedAt | string | ISO 8601 timestamp of extraction. |
Tips for Best Results
- Start small. Run with
maxResults: 50on your first try to confirm the categories and filters return what you expect, then scale up. - Combine
categoriesandrequiredTags. Categories choose which searches to run; tags narrow the results within them. Pairingcategories: ["python"]withrequiredTags: ["aws"]is far faster than pulling everything and filtering on the consumer side. - Match
locationContainsto how RemoteOK writes locations. Most listings sayAnywhere; the rest name a country or city.anywhere,united states,canada,united kingdom,indiaandaustraliaall return results โ continent words likeeuropeoramericasreturn nothing, because RemoteOK never uses them. - Need a tag that isn't in the picker? RemoteOK has hundreds. Paste its page URL into
searchUrls, for examplehttps://remoteok.com/remote-rust-jobs, and it is scraped just like a built-in category. - Treat
minSalaryUSDas a trimmer, not a salary search. Only a small share of RemoteOK employers publish a range, so a floor drops the jobs whose disclosed maximum falls below it and lets every undisclosed-salary job through. That keeps coverage high, but don't expect a salary on most rows. - Use
postedWithin: "24h"for daily-alert workflows. Schedule the actor on Apify, dedupe byidagainst yesterday's run, and you have a clean new-jobs feed. - Use
keywordfor cross-field matching. It searches title, company, tags, and description in one pass โ handy for niche terms like"hugging face"or"vector database"that don't have dedicated tags. - Pick the description format that matches your downstream tool. Keep
descriptionHtmlif you need formatting (lists, links, headings) preserved for rendering or a search index that handles HTML; the bundleddescriptionTextis friendlier for downstream NLP, embeddings, and plain-text storage. - Keep
includeGlobalFeed: truefor category runs. RemoteOK's category pages can omit jobs that were filed under a sibling tag โ merging the global feed back in catches them, and the deduper drops repeats byid.
Pricing
$1.00 per 1,000 results. No compute charges โ you only pay per result returned.
| Results | Estimated Cost |
|---|---|
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |
A "result" is any unique job row in the output dataset. Platform fees beyond per-result charges do not apply to this actor.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications on new results
- Webhooks โ Trigger custom APIs on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate recruiting, market research, compensation benchmarking, and job-board operations. Users are responsible for complying with applicable laws and RemoteOK's terms of service. Do not use extracted data for spam, harassment, or any illegal purpose, and respect the privacy of any personal contact information surfaced in job descriptions.