Remote OK Job Scraper — Remote Jobs & Salary Data avatar

Remote OK Job Scraper — Remote Jobs & Salary Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Remote OK Job Scraper — Remote Jobs & Salary Data

Remote OK Job Scraper — Remote Jobs & Salary Data

Remote OK job scraper for remote work: keyword & tag search, salary, descriptions & apply URLs. Stream to dataset + webhook. Recruiters, job boards, hiring intel, AI & automation.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Chidubem Aneke

Chidubem Aneke

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Remote OK Job Scraper

Collect remote job listings from Remote OK at scale. Search by keyword and skill tag, filter by company and location, enrich job URLs, and export clean, structured JSON streamed to your Apify dataset in real time.

Built for recruiters, job boards, growth teams, data engineers, and AI workflows that need reliable remote job data without slow, expensive browser automation.


Why this Actor

Remote OK Job ScraperTypical browser scraper
SpeedFast per-job collectionOften several seconds per listing
Memory256 MB default1–2 GB+
SetupOrganized input UI — run immediatelyOften fragile and high-maintenance
CostLow compute footprintHigh
OutputStructured JSON, LLM-readyOften messy HTML
ScaleLarge runs — 10,000 items per runOften capped lower
DescriptionsFull job text on every rowOften requires extra steps

What you get — 20+ fields per job

Every record includes featureType, jobId, and scrapedAt so you can filter, join, and pipe into any workflow.

Job search (featureType: "job")

FieldDescription
titleJob title
companyEmployer name
companyUrlCompany profile on Remote OK
companyLogoLogo URL when available
locationListed location or region
tags[]Skill and role tags (dev, python, design, etc.)
salary, salaryMin, salaryMaxCompensation when listed
employmentTypeEmployment type when listed
postedAtOriginal post date
descriptionTextFull description as plain text
descriptionHtmlFull description as HTML
applyUrlDirect apply link
jobUrlRemote OK listing URL
slugURL slug for the listing
searchQueryKeyword that produced this row
searchTagTag filter that produced this row
positionRank within the search batch

Same rich fields as search, plus sourceUrl — the exact URL you submitted.

Set includeRaw: true to attach extended payload data on any record (larger output, for advanced users).


Features

Job search — on by default

Run multiple keywords and tags in one actor run — e.g. software engineer with tags dev and python, plus data scientist in the same batch. Layer optional filters for title, company, location, and date posted.

Every matching job includes full description text, tags, salary when listed, and apply links.

Paste Remote OK job URLs to turn a spreadsheet of links into structured records — ideal when you already have a target list from newsletters, communities, or prior runs.

Real-time dataset streaming

Results are written to your Apify dataset one job at a time as they are collected. Long runs do not pile up data in memory.

Webhook delivery (optional)

Set webhookUrl to POST each new job to your CRM, Slack, Zapier, Make, or custom endpoint — in addition to the dataset.


Use cases

  • Remote job boards & newsletters — fresh listings by role, tag, or keyword
  • Recruiting & talent sourcing — pipeline dev, design, marketing, and ops roles worldwide
  • Competitive hiring intel — track which companies post on Remote OK and how often
  • Salary & market research — compare compensation signals across tags and titles
  • Job alert automation — webhook into Slack or email when new matches appear
  • URL list enrichment — start from links and backfill structured job profiles
  • AI & LLM pipelines — JSON for résumé matching, outreach drafts, and market summaries
  • CRM & warehouse feeds — Apify API export, webhook push, or direct integrations

LLM & MCP integration

Output is JSON Lines–friendly structured data — ideal for ChatGPT, Claude, Gemini, LangChain, LlamaIndex, and custom agents.

  1. Run the Actor with keywords, tags, and filters you care about.
  2. Fetch dataset items via Apify API or export JSON/CSV.
  3. Pass records to your LLM with a system prompt, or index into a vector store.

Example: single job for an LLM prompt

{
"featureType": "job",
"jobId": "1134396",
"title": "Senior AI Engineer Architect",
"company": "Lemon.io",
"location": "Worldwide",
"tags": ["dev", "engineer", "senior", "ai", "python"],
"salary": "$80,000 - $190,000",
"salaryMin": 80000,
"salaryMax": 190000,
"postedAt": "2026-07-02T12:25:12+00:00",
"descriptionText": "Are you a talented Senior AI Engineer/Architect looking for a remote job...",
"applyUrl": "https://remoteok.com/l/1134396",
"jobUrl": "https://remoteok.com/remote-jobs/remote-senior-ai-engineer-architect-lemon-io-1134396",
"searchQuery": "software engineer",
"searchTag": "dev"
}

Apify MCP (Model Context Protocol)

Use the Apify MCP server so AI assistants can:

  • Run this Actor with natural-language instructions
  • Read dataset results directly in the chat
  • Chain with other Actors (e.g. enrich → score → CRM)

Typical MCP tool flow:

User: "Find 25 senior Python remote jobs posted this month on Remote OK"
MCP runs Actor with jobKeywords=["senior python"], jobTags=["python","dev"], jobDatePosted=month
MCP reads dataset items
LLM summarizes top matches and drafts outreach notes

API quick start

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"enableJobSearch": true,
"jobKeywords": ["software engineer"],
"jobTags": ["dev", "python"],
"jobDatePosted": "month",
"jobsPerQuery": 25,
"maxItems": 500
}'

Dataset items: GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json


Input reference

Enable only what you need. All features are independent.

InputTypeDefaultDescription
Job search
enableJobSearchbooleantrueKeyword and tag search
jobKeywordsstring[]software engineer, data scientistOne search pass per keyword
jobTagsstring[]dev, pythonSkill/role tags to narrow results
jobTitlestringOptional title filter
jobCompanystringOptional company filter
jobLocationstringOptional location filter
jobDatePostedenummonthany, month, week, day
jobsPerQueryinteger25Max jobs per keyword/tag combo
Job links
enableScrapeByUrlbooleanfalseScrape submitted job URLs
jobUrlsstring[]Remote OK job page URLs
Output & delivery
maxItemsinteger10000Global cap across all modes
webhookUrlstringOptional real-time POST URL — dataset is always written
webhookFormatenumjsonjson (full record) or slack (Slack message)
includeRawbooleanfalseAttach extended payload
proxyConfigurationobjectresidential USApify proxy settings

Full schema: see .actor/input_schema.json or the Input tab on Apify Console.


Output reference

Each dataset row is one job record. Filter by featureType:

featureTypeDescription
jobJob from keyword/tag search
scrape_by_urlJob from a submitted URL

Traceability fields on search results:

  • searchQuery — keyword that matched this job
  • searchTag — tag filter active for this job
  • position — rank within the search batch

Export formats: JSON, CSV, Excel, RSS, or via API.

Dataset views on Apify Console:

  • Overview — title, company, location, tags, salary, links
  • Full details — descriptions, apply URL, and all metadata

Webhook delivery (optional)

Every record is always saved to the Apify dataset first. If you set webhookUrl in the Output & delivery section, each new job is also POSTed in real time to your endpoint.

SettingDescription
webhookUrlYour HTTPS endpoint. Leave empty to use dataset only.
webhookFormatjson — full job object. slack — compact Slack incoming-webhook message.

Webhook delivery is best-effort: a failed webhook never stops the run or prevents dataset writes.

Example — search with Slack alerts

{
"enableJobSearch": true,
"jobKeywords": ["product manager"],
"jobTags": ["product"],
"jobDatePosted": "week",
"jobsPerQuery": 20,
"webhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"webhookFormat": "slack"
}

Example — search with JSON webhook to CRM

{
"enableJobSearch": true,
"jobKeywords": ["backend engineer"],
"jobTags": ["dev", "golang"],
"jobsPerQuery": 50,
"webhookUrl": "https://your-crm.example.com/api/jobs",
"webhookFormat": "json"
}

Quick start examples

Default pattern — ready to run on Apify Console

{
"enableJobSearch": true,
"jobKeywords": ["software engineer", "data scientist"],
"jobTags": ["dev", "python"],
"jobDatePosted": "month",
"jobsPerQuery": 25,
"maxItems": 500
}

Design & creative roles

{
"enableJobSearch": true,
"jobKeywords": ["product designer", "ux designer"],
"jobTags": ["design"],
"jobDatePosted": "week",
"jobsPerQuery": 30
}

Target one company

{
"enableJobSearch": true,
"jobKeywords": ["engineer"],
"jobTags": ["dev"],
"jobCompany": "Stripe",
"jobsPerQuery": 50
}

Enrich a URL list

{
"enableJobSearch": false,
"enableScrapeByUrl": true,
"jobUrls": [
"https://remoteok.com/remote-jobs/remote-senior-ai-engineer-architect-lemon-io-1134396"
]
}

High-volume multi-tag run

{
"enableJobSearch": true,
"jobKeywords": ["developer"],
"jobTags": ["dev", "python", "react", "golang", "rust"],
"jobDatePosted": "month",
"jobsPerQuery": 100,
"maxItems": 2000
}

Proxy & performance

  • Apify residential proxy (US) is enabled by default — no extra setup required on Apify.
  • Default memory: 256 MB — optimized for efficient long runs.
  • Results are streamed to the dataset as they are collected; long runs do not pile up data in memory.

Limitations & compliance

  • Remote OK listings change frequently; run on a schedule for ongoing coverage.
  • Not affiliated with Remote OK. Use responsibly and comply with applicable laws and Remote OK's terms.
  • Always respect rate limits and platform policies when collecting job data.

Contact & custom work

Need something beyond this Actor? I build custom scrapers, data pipelines, and full-stack web applications for startups and enterprises.

Reach out for:

  • Custom Apify Actors (any website or data source)
  • Remote job, hiring, and market-intelligence projects at scale
  • LLM & MCP integrations with your data stack
  • Web apps, dashboards, and automation tools

Remote OK Job Scraper · by DrunkCodes