RemoteOK Jobs Scraper avatar

RemoteOK Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
RemoteOK Jobs Scraper

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

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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?

  • 17 official RemoteOK categories โ€” Engineering, Software Development, Senior, Lead, Management, Design, Marketing, Growth, Sales, Customer Support, Product, Operations, Finance, Data, Writing & Content, Technical, and Non-tech. Pick one or combine several in a single run.
  • 5 posted-window filters โ€” 24h, 7d, 30d, 90d, or any. 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 + senior and only get jobs that match every one. Case-insensitive, applied across job tags.
  • USD salary parsed into three fields โ€” salaryMinUSD, salaryMaxUSD, and a pre-formatted salaryText like $80k โ€“ $120k. Not a free-text "salary" blob you have to regex 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 postedDate plus raw postedEpoch โ€” one field for humans and dashboards, one for time-series joins and recency math.
  • HTML and clean-text descriptions side by side โ€” keep descriptionHtml for fidelity, use descriptionText for downstream NLP, embedding, or LLM ingestion. Toggle off the cleanup pass to shrink output when you don't need it.
  • Apply links normalized to 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.
  • Browse deeper history than the homepage โ€” RemoteOK's public feed only exposes the newest ~99 jobs. This actor reaches into the deep XHR pagination layer 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 Paying $120k+

Combine a category, required-tags AND filter, and a salary floor:

{
"categories": ["engineer", "senior"],
"requiredTags": ["python", "senior"],
"minSalaryUSD": 120000,
"postedWithin": "30d",
"maxResults": 500
}

Europe-Restricted Design Jobs from a Specific URL

Paste any RemoteOK URL and add a geographic substring filter:

{
"searchUrls": ["https://remoteok.com/remote-design-jobs"],
"locationContains": "europe",
"keyword": "product",
"maxResults": 100,
"includeGlobalFeed": false
}

Input Reference

What to Scrape

ParameterTypeDefaultDescription
categoriesstring[][]Pick one or more of 17 RemoteOK categories (Engineering, Design, Sales, Customer Support, etc.). Leave empty to use the global feed only.
searchUrlsstring[][]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.
includeGlobalFeedbooleantrueAlso pull the latest jobs across all categories and merge with category results. Turn off if you only want a specific category or URL.

Filters

ParameterTypeDefaultDescription
keywordstring""Only keep jobs whose title, company, tags, or description contain this text. Case-insensitive.
requiredTagsstring[][]Only return jobs that include ALL of these tags (e.g. python, react, senior). Case-insensitive.
minSalaryUSDintegernullOnly return jobs whose maximum advertised salary is at least this amount (USD/year). Jobs without disclosed salary pass through.
postedWithinselect"any"Time window: any, 24h, 7d, 30d, or 90d.
locationContainsstring""Substring match on the job's geographic restriction (e.g. europe, americas, worldwide). Case-insensitive.

Limits & Options

ParameterTypeDefaultDescription
maxResultsinteger100Maximum unique jobs to return across all sources. Set to 0 for unlimited.
stripHtmlbooleantrueEmit 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": "1078421",
"slug": "senior-python-engineer-acme-corp-1078421",
"url": "https://remoteok.com/remote-jobs/1078421",
"applyUrl": "https://remoteok.com/l/1078421",
"position": "Senior Python Engineer",
"company": "Acme Corp",
"companyLogoUrl": "https://remoteok.com/assets/logos/acme.png",
"location": "Worldwide",
"tags": ["python", "senior", "django", "aws", "remote"],
"salaryMinUSD": 120000,
"salaryMaxUSD": 160000,
"salaryText": "$120k โ€“ $160k",
"descriptionHtml": "<p>We're looking for a senior Python engineer to join our distributed team...</p>",
"descriptionText": "We're looking for a senior Python engineer to join our distributed team...",
"postedDate": "2026-05-12T08:30:00+00:00",
"postedEpoch": 1747038600,
"categories": ["engineer"],
"sourceUrl": "https://remoteok.com/api?tags=engineer",
"scrapedAt": "2026-05-16T14:22:31+00:00"
}

Fields

FieldTypeDescription
idstringUnique RemoteOK job identifier. Stable across runs โ€” use it for deduplication.
slugstringURL-friendly job slug (e.g. senior-python-engineer-acme-corp-1078421).
urlstringCanonical RemoteOK listing URL, lowercase host.
applyUrlstringRemoteOK's apply redirect link, lowercase host. May be null on global-feed rows.
positionstringJob title as posted by the company.
companystringHiring company name.
companyLogoUrlstringCompany logo image URL when available.
locationstringGeographic restriction text (e.g. Worldwide, Europe, Americas only).
tagsstring[]Lower-cased skill, role, and seniority tags.
salaryMinUSDnumberMinimum advertised annual salary in USD. Null when not disclosed.
salaryMaxUSDnumberMaximum advertised annual salary in USD. Null when not disclosed.
salaryTextstringPre-formatted range like $120k โ€“ $160k or up to $100k. Null when not disclosed.
descriptionHtmlstringFull job description with original HTML markup preserved.
descriptionTextstringClean plain-text version of the description. Null when stripHtml is off.
postedDatestringISO 8601 timestamp of when the job was posted.
postedEpochnumberUnix epoch seconds of the posting date โ€” useful for time-series joins.
categoriesstring[]RemoteOK category slug(s) the job was pulled from.
sourceUrlstringThe exact feed URL that produced this row.
scrapedAtstringISO 8601 timestamp of extraction.

Tips for Best Results

  • Start small. Run with maxResults: 50 on your first try to confirm the categories and filters return what you expect, then scale up.
  • Combine categories and requiredTags. Categories narrow the source feed; tags narrow within it. Pairing categories: ["engineer"] with requiredTags: ["rust"] is far faster than pulling Engineering and filtering on the consumer side.
  • Leave minSalaryUSD empty when you want full coverage. RemoteOK paywalls salary on many listings โ€” setting a floor drops only the jobs whose disclosed maximum is below it, but unlisted-salary jobs always pass through. Set it deliberately when you only want paid-disclosure roles.
  • Use postedWithin: "24h" for daily-alert workflows. Schedule the actor on Apify, dedupe by id against yesterday's run, and you have a clean new-jobs feed.
  • Use keyword for 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 descriptionHtml if you need formatting (lists, links, headings) preserved for rendering or a search index that handles HTML; the bundled descriptionText is friendlier for downstream NLP, embeddings, and plain-text storage.
  • Keep includeGlobalFeed: true for 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 by id.

Pricing

$1.00 per 1,000 results. No compute charges โ€” you only pay per result returned.

ResultsEstimated 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

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.