Remote OK Jobs Scraper: Only New Remote Jobs avatar

Remote OK Jobs Scraper: Only New Remote Jobs

Pricing

from $1.00 / 1,000 jobs

Go to Apify Store
Remote OK Jobs Scraper: Only New Remote Jobs

Remote OK Jobs Scraper: Only New Remote Jobs

Get remote job postings from Remote OK in one clean schema: title, company, location, tags, salary range, date and the link back to each job. Filter by tag and keywords. On scheduled runs, pay only for new or changed jobs. No personal-data fields.

Pricing

from $1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Quicksloth

Quicksloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Get the latest remote jobs from Remote OK in a clean, predictable schema: title, company, location, tags, salary range, posted date and the link to each job on Remote OK. Pick the tags you care about (python, devops, design, customer-support…), filter by title or location keywords, and download the results as JSON, CSV or Excel.

  • Only new or changed jobs. Schedule it daily and, after the first run, get (and pay for) only the jobs that appeared or changed since the last run.
  • Several tags in one run. Jobs listed under more than one of your tags are saved once, not twice.
  • Clean text. Titles and descriptions come with broken characters fixed ("für", not "für"); salaries of 0 become empty.
  • No personal-data fields: the output has no names, emails or phone numbers of people, and job descriptions are off unless you ask for them.
  • Fast and light: one request per tag to the public Remote OK API, no browser, no proxy.

Free Apify plan: up to 100 jobs per run, enough to try it on your tags.

Who is it for?

  • Job seekers and job-alert builders: send new remote jobs for your stack to a spreadsheet, an email digest or a chat channel with Apify schedules and integrations.
  • Remote-work job boards and newsletters: get fresh postings with the link back to Remote OK that its API terms ask for (see Using the data).
  • Recruiters and market researchers: follow which companies hire remotely, with which tags and which published salary ranges.
  • AI agents and data pipelines: a predictable JSON schema that is easy to feed into LLM workflows, spreadsheets or databases, also through Apify's MCP server.

Input

Basic example: the latest Python and DevOps jobs with "engineer" in the title.

{
"tags": ["python", "devops"],
"titleKeywords": ["engineer"],
"maxResults": 100
}

Scheduled monitoring: only new or changed jobs

{
"tags": ["python"],
"titleKeywords": ["engineer", "developer"],
"onlyNewJobs": true,
"stateKey": "daily-python"
}

Leave tags empty to get the latest jobs of all tags.

Input fields

FieldTypeDescription
tagslist of stringsRemote OK tags, as in the tag pages of remoteok.com (python, devops, customer-support). Up to 50. Empty = latest jobs of all tags.
titleKeywordslist of stringsKeep only jobs whose title contains at least one of these words (case-insensitive).
locationKeywordslist of stringsKeep only jobs whose location contains at least one of these words. The location is free text written by the employer ("London,", "Remote - US", "Worldwide") and often empty, so this filter keeps few jobs: prefer tags and title keywords, and avoid short words that match inside longer ones.
includeDescriptionbooleanAdd the job description as plain text. Default false.
onlyNewJobsbooleanReturn only jobs that are new or changed since the previous run with the same filters. Default false.
stateKeystringOptional name for the "only new jobs" history, so different scheduled tasks keep separate histories.
maxResultsintegerStop after this many jobs in total. Empty or 0 = no limit.

Output

Each job is one item in the dataset. Example:

{
"id": "remoteok:1136795",
"jobId": "1136795",
"source": "Remote OK",
"tag": "python",
"title": "Senior Software Engineer Case Execution",
"company": "Pivotal Health",
"location": "New York City",
"tags": ["dev", "python", "senior", "engineer", "backend"],
"postedAt": "2026-08-16T00:00:03.000Z",
"salaryMin": 190000,
"salaryMax": 220000,
"salaryCurrency": "USD",
"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",
"descriptionText": null,
"scrapedAt": "2026-10-09T06:51:05.967Z"
}
FieldDescription
idUnique, stable id (remoteok:<jobId>).
jobIdRemote OK job id.
sourceAlways Remote OK.
tagThe input tag the job was found with; null for the latest jobs of all tags.
title, companyAs published.
locationLocation or region as written by the employer (for example Worldwide); null when not given.
tagsRemote OK tags of the job.
postedAtWhen the job was posted (ISO 8601).
salaryMin, salaryMax, salaryCurrencySalary range as published on Remote OK, in USD. Usually yearly; a few employers enter small numbers that are probably hourly. null when not given.
urlThe job on Remote OK.
applyUrlWhere to apply, as given by the API (often the same page on Remote OK).
descriptionTextPlain-text description, only with includeDescription.
scrapedAtWhen the job was fetched (ISO 8601).

Run summary

The OUTPUT record in the key-value store lists every tag with its status (ok, failed or skipped), how many jobs it gave and a note, if any (for example a tag with no jobs). A tag that fails does not stop the run and costs nothing.

{
"tags": [{ "input": "python", "status": "ok", "jobs": 100, "error": null }],
"totalJobs": 100,
"newJobs": null,
"stoppedBecause": null
}

Pricing

$1.00 per 1,000 jobs ($0.001 per job saved to the dataset), plus Apify's standard start charge of $0.00005 per run. You pay only for jobs you get: tags with no jobs, jobs removed by your filters and jobs already saved under another tag cost nothing.

Jobs savedCost
100$0.10
1,000$1.00
10,000$10.00
  • Example: a run that saves 100 jobs costs $0.10. With Only new or changed jobs on and a daily schedule, you pay only for the jobs that are new or changed since the previous run.

You can set a maximum cost for each run in Apify Console; the Actor stops cleanly when it reaches it and says so in the status message.

Free plan limit

Users on the free Apify plan get up to 100 jobs per run. The run log and status message say when this limit is reached. Paid plans have no such limit.

Only new jobs (scheduled runs)

Turn on onlyNewJobs and schedule the Actor (for example daily). The first run returns all matching jobs and remembers them. Later runs return only jobs that are new or whose title, company, location, tags, salary or link changed. Changes in the description do not count. Jobs that were not returned because of a limit stay "unseen" and come back in the next run. newJobs in the run summary says how many were returned in this mode.

The history is one for all the tags of the run, so a job listed under several of your tags is returned (and paid) once, also across runs. It is kept in a named key-value store in your account (remoteok-jobs-scraper-seen-state) and is separate for each combination of tags and filters: if you change the tags, the next run starts a new history and returns everything again (unless you set stateKey, which names the history and keeps it when the tags or filters change). If you run several scheduled tasks with the same tags and filters, give each one its own stateKey.

Limits

  • The Remote OK API returns about the latest 100 jobs per tag (and about 100 for "all tags"). For a complete stream of a busy tag, run the Actor on a schedule with onlyNewJobs.
  • The API is refreshed periodically, not live: it can lag the Remote OK website by a day or more, so a job posted this morning may appear in a later run.
  • Up to 50 tags per run. The Actor waits one second between requests, as Remote OK's robots.txt asks.
  • Many jobs have no location or salary: those fields are null.

Remote OK's API terms ask everyone who uses the data to mention Remote OK as the source and link back to the job on Remote OK (with a normal, followed link). Each result has source and url for this. Remote OK also asks not to use its logo without written permission. If you publish the jobs, keep the link; otherwise Remote OK may suspend access to its API.

  • The Actor reads only the public Remote OK API, which Remote OK offers for this use, with the attribution described above (legal page). No login, no private data.
  • No personal-data fields: the output has no names, emails or phone numbers of people.
  • Descriptions are off by default. When you turn them on, they are free text written by the employer: email addresses, phone numbers in common formats and names after labels such as "Recruiter:" or "Contact:" are removed, but other mentions of people may remain. Check that you have a legal basis before storing them, and that your use of the employer's text is allowed.
  • The Actor respects Remote OK's robots.txt, including its one-second crawl delay.
  • Remote OK is a trademark of its owner, named here only to say which source the Actor reads. This Actor is not affiliated with or endorsed by Remote OK.
  • You are responsible for how you use the data, including compliance with the laws that apply to you.

FAQ

Which tags can I use? The ones in Remote OK's tag pages, for example python, javascript, devops, design, marketing, customer-support, non-tech. Spaces become dashes. The Actor keeps only jobs that really carry the tag: Remote OK's API also returns jobs whose tags merely contain the word (for ux it returned Linux jobs), and those are dropped without charge. A tag with no jobs gives an empty result and a note in the run summary.

Why are some fields empty? A field is null when the employer did not publish it (location and salary are often missing).

Can I get older jobs? No. The API gives the latest jobs only. Schedule the Actor with onlyNewJobs to build your own history.

Support

Found a problem or need a new field? Open an issue in the Issues tab of this Actor and include the run ID.

Changelog

  • 0.1 (2026-10-09): first version.