RemoteOK Jobs Scraper & Remote Jobs API avatar

RemoteOK Jobs Scraper & Remote Jobs API

Pricing

from $0.30 / 1,000 job extracteds

Go to Apify Store
RemoteOK Jobs Scraper & Remote Jobs API

RemoteOK Jobs Scraper & Remote Jobs API

Export public RemoteOK jobs by feed, tag, keyword, company, location, salary, and date. Get clean text and HTML descriptions, category, seniority, worldwide status, salary metadata, company logos, and apply links.

Pricing

from $0.30 / 1,000 job extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

an hour ago

Last modified

Share

Search and export current public RemoteOK jobs by API feed or category URL, tag, keyword, company, location, salary, and posting date.

Use this Actor to build remote-job feeds, monitor hiring signals, track salaries, enrich recruiting workflows, and collect remote-work market data. Results can be downloaded as CSV, JSON, Excel, XML, RSS, or used through the Apify Dataset API.

At a glance

  • Remote job search: Filter RemoteOK listings by category feed, skills, keywords, company, exclusions, location, freshness, and salary.
  • Spreadsheet-ready rows: Export company, role, category, tags, salary, seniority, worldwide status, links, logo, and timestamps.
  • Clean and original descriptions: Export normalized text for NLP and optional source HTML without removing the backward-compatible description field.
  • Monitoring workflows: Schedule focused searches for new roles, salary changes, niche job feeds, or market reports.
  • API export: Send RemoteOK job rows to newsletters, job boards, CRMs, dashboards, databases, or AI agents.

Ready-to-run examples

Use these saved Store examples as starting points. Open any example to prefill the Actor input, then adjust URLs, keywords, limits, or filters for your own run.

What can it do?

RemoteOK Jobs Scraper extracts structured remote job data from public RemoteOK listings and saves one dataset row per job.

  • Find roles by stack or category: Use tags such as python, react, sales, marketing, or customer support.
  • Add free-text matching: Use keywords for title, company, tag, location, or description matches.
  • Filter by market: Keep listings by location text, salary range, or posting date.
  • Collect links: Export apply URLs and source URLs for follow-up.
  • Build recurring feeds: Schedule daily or weekly runs with sinceDate and focused filters.
  • Use category feeds: Add RemoteOK pages such as https://remoteok.com/remote-python-jobs; the Actor validates and uses their public JSON feeds.
  • Diagnose every run: Read RUN_SUMMARY for source failures, retries, duplicates, filtered rows, deadline stops, and honest empty results.

Common workflows

  • Remote recruiting: Track remote engineering, support, sales, or marketing roles by skill and region.
  • Job-board feeds: Build a curated remote-work feed or newsletter from current listings.
  • Salary research: Monitor visible salary ranges for remote roles and skill categories.
  • Lead generation: Find companies actively hiring remote workers in a target function.
  • Market analysis: Compare demand across tags, locations, and posting dates.
  • Automation: Feed job rows into alerts, dashboards, enrichment systems, or AI matching tools.

What data can you extract?

The Actor returns one dataset row per public RemoteOK job listing.

FieldDescription
idRemoteOK job identifier
slugRemoteOK job slug
epoch, postedAtNumeric and normalized ISO posting timestamps
datePosting date when available
companyHiring company name
positionJob title or role
tagsSkills and categories attached to the listing
categoryFirst RemoteOK category/tag
descriptionBackward-compatible optional job description HTML
descriptionText, descriptionHtmlOptional clean text and explicit source HTML
locationLocation text from the listing
isWorldwideWhether the location says worldwide, anywhere, or global
salaryMinLower salary bound when available
salaryMaxUpper salary bound when available
salaryCurrency, salaryDisclosedUSD normalization and disclosure flag
seniorityConservative seniority hint inferred from public title/tags
applyUrlDirect apply or listing URL
sourceUrlSource job page URL
sourceFeedUrlRemoteOK API/category feed that supplied the row
logoCompany logo URL when available
scrapedAtTimestamp when the Actor saved the row
runTagOptional workflow label copied from input

Pricing

This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.

EventWhat is chargedPrice
startOne-time fee charged when a run starts. Covers fixed startup cost.$0.005
EventWhat is chargedFree / no discountStarter / BronzeScale / SilverBusiness / GoldCustom / PlatinumCustom / Diamond
itemCharged per RemoteOK job extracted.$0.575 / 1,000$0.5 / 1,000$0.39 / 1,000$0.3 / 1,000$0.2 / 1,000$0.14 / 1,000

Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.

Input configuration

SettingJSON keyUse it forExample
RemoteOK feedsstartUrlsMain API or RemoteOK category pages; leave empty for the main feed.[{"url":"https://remoteok.com/remote-python-jobs"}]
Tags or skillstagsSkill tags or terms to match. Leave empty for all jobs.["python", "react"]
KeywordskeywordsExtra free-text filters for title, company, tags, location, or description.["backend"]
Exclude keywordsexcludeKeywordsSkip jobs matching any unwanted term.["senior"]
CompanycompanyKeep companies containing this text.Acme
Location containslocationKeep jobs whose location text contains the value.USA
Posted since datesinceDateKeep jobs posted on or after a YYYY-MM-DD date.2026-07-01
Posted within dayspostedWithinDaysRelative freshness window for scheduled monitors; use instead of sinceDate.7
Minimum salaryminSalaryKeep jobs whose salary range reaches at least this annual USD amount.100000
Maximum salarymaxSalaryKeep jobs whose salary range starts at or below this annual USD amount. Use 0 to disable.180000
Salary onlysalaryOnlyKeep only jobs with a disclosed salary bound.true
Maximum jobsmaxItemsCap saved job rows and spend.25
Include descriptionsincludeDescriptionInclude RemoteOK HTML job descriptions.false
Include explicit HTMLincludeDescriptionHtmlReturn both descriptionHtml and clean descriptionText.false
Safe run deadlinemaxRunSecondsPreserve stored rows before the platform timeout.270
Run tagrunTagCopy a stable workflow label to every row.weekly-python-feed
Proxy configurationproxyConfigurationOptional Apify Proxy routing; direct HTTP is the default.{"useApifyProxy":false}

Example input

{
"startUrls": [{"url": "https://remoteok.com/remote-python-jobs"}],
"tags": ["python", "react"],
"keywords": [],
"location": "",
"sinceDate": "",
"minSalary": 0,
"maxSalary": 0,
"postedWithinDays": 30,
"salaryOnly": false,
"maxItems": 20,
"includeDescription": false,
"includeDescriptionHtml": false,
"runTag": "monthly-python-feed"
}

Example output

{
"id": "1133690",
"slug": "remote-example-role-1133690",
"epoch": 1784073600,
"date": "2026-06-19T00:03:05+00:00",
"postedAt": "2026-06-19T00:03:05.000Z",
"company": "Example Company",
"position": "Remote Software Engineer",
"tags": ["python", "react"],
"category": "python",
"location": "Worldwide",
"isWorldwide": true,
"salaryMin": 100000,
"salaryMax": 160000,
"salaryCurrency": "USD",
"salaryDisclosed": true,
"seniority": null,
"applyUrl": "https://remoteok.com/remote-jobs/example",
"sourceUrl": "https://remoteok.com/remote-jobs/example",
"sourceFeedUrl": "https://remoteok.com/remote-python-jobs.json",
"logo": "https://remoteok.com/assets/example.png",
"scrapedAt": "2026-06-20T00:00:00.000Z",
"runTag": "monthly-python-feed"
}

How to run it

  1. Open the Actor on Apify.
  2. Add skills, tags, keywords, or leave filters broad.
  3. Optionally add location, salary, or date filters.
  4. Set maxItems to the number of matching jobs you want.
  5. Choose whether to include descriptions.
  6. Start the run and export the dataset.

Search tips

  • Use broad tags for market research: Tags like python, react, or marketing show category-level demand.
  • Use narrow filters for alerts: Combine tag, location, and sinceDate for daily or weekly monitoring.
  • Leave location empty for global remote jobs: Add location only when you need a regional subset.
  • Watch salary filters: Many listings do not publish salaries, so salary filters can reduce results sharply.
  • Choose salary behavior deliberately: salaryOnly excludes undisclosed salaries; minimum and maximum salary filters do the same.
  • Control row size: Enable includeDescriptionHtml only when you need source HTML; descriptionText is cleaner for AI and analysis.

Limits and caveats

  • The Actor extracts publicly visible RemoteOK job data.
  • It does not access private employer dashboards, applicant data, or login-gated content.
  • Some listings do not publish salary ranges, logos, descriptions, or exact locations.
  • Salary values are based on public listing data and should be reviewed before analysis.
  • RemoteOK's current public feeds are best for monitoring, not guaranteed historical backfills.
  • A successful zero-row filtered run is recorded as EMPTY_FILTERED; invalid inputs and unknown source changes fail clearly before paid result storage.

Categories

This Actor uses the Store categories JOBS, LEAD_GENERATION, and DEVELOPER_TOOLS for recruiting, hiring-signal, API, MCP, and automation discovery.

Integrations

You can connect RemoteOK job data to downstream tools:

  • Export CSV or Excel to spreadsheets for remote-work reports.
  • Send results to Slack, email, or webhooks after scheduled runs.
  • Build newsletters, job-board feeds, or niche alert workflows.
  • Load JSON rows into a database, warehouse, or BI dashboard.
  • Combine results with company enrichment or contact-finding Actors.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/remoteok-jobs-scraper').call({
tags: ['python'],
maxItems: 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/remoteok-jobs-scraper').call(run_input={
'tags': ['python'],
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~remoteok-jobs-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"tags":["python"],"maxItems":20}'

MCP and AI agents

This Actor can be used through the official Apify MCP server at https://mcp.apify.com.

For a focused single-Actor tool setup, use:

$claude mcp add apify-remoteok-jobs --transport http "https://mcp.apify.com/?tools=fetch_cat/remoteok-jobs-scraper"

Claude Desktop or another JSON-configured client can use:

{
"mcpServers": {
"apify-remoteok-jobs": {
"url": "https://mcp.apify.com/?tools=fetch_cat/remoteok-jobs-scraper"
}
}
}

Use the same JSON keys shown in the input configuration table, such as tags, keywords, location, sinceDate, minSalary, maxSalary, maxItems, and includeDescription.

Example prompts:

  • "Find 20 RemoteOK Python jobs posted in the last seven days."
  • "Export RemoteOK jobs with disclosed salaries and clean descriptions."
  • "Monitor RemoteOK marketing jobs and label every row weekly-marketing."

FAQ

Can I use this as a RemoteOK API?

Yes. You can run the Actor through the Apify API and read results from the Dataset API.

Can I export RemoteOK jobs to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, HTML, or accessed through the API.

Why are salary fields empty?

Some RemoteOK listings do not publish salary ranges. Salary filters also exclude jobs without visible salary data.

Can I run recurring remote job alerts?

Yes. Use Apify schedules with focused tags, sinceDate, and a moderate maxItems value.

Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

Privacy and data handling

This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses job-search inputs and public job-posting results to produce the output dataset and sends requests to public Remoteok Jobs pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.