Remote Jobs Scraper — Remote OK Listings, Salary Filter, Links avatar

Remote Jobs Scraper — Remote OK Listings, Salary Filter, Links

Pricing

from $0.80 / 1,000 job returneds

Go to Apify Store
Remote Jobs Scraper — Remote OK Listings, Salary Filter, Links

Remote Jobs Scraper — Remote OK Listings, Salary Filter, Links

Get current remote jobs from Remote OK filtered by keyword, tag, seniority, country and stated USD salary, each with its original listing link and attribution, emails and phones redacted. From $0.001 a job, a dollar per thousand. Callable by AI agents.

Pricing

from $0.80 / 1,000 job returneds

Rating

0.0

(0)

Developer

Logan Parker

Logan Parker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Get current remote jobs from Remote OK filtered by keyword, tag, seniority, country and stated salary — each with its title, company, location restrictions, annual USD salary when the listing states one, date, tags and the original listing link, credited "via Remote OK". For job seekers' tools and AI agents that must cite where a job came from: keep the link and the credit, and do not resubmit these jobs to other job sites. From $0.001 a job, a dollar per thousand jobs.

Example result

A job record from the production image's run of the smoke input against the live source (2026-10-26T12:48:26Z). The run's first record is a free summary of listings read, matching and returned.

{
"type": "job",
"source": "remoteok",
"attribution": "via Remote OK",
"jobId": "1137571",
"title": "Senior Software Engineer",
"company": "Klardaten",
"seniority": [
"Senior"
],
"categories": [
"dev",
"senior",
"javascript",
"typescript",
"full stack",
"api"
],
"locationRestrictions": [],
"location": {
"raw": null,
"city": null,
"region": null,
"country": null,
"remote": true
},
"salary": {
"min": 80000,
"max": 100000,
"currency": "USD",
"period": "year",
"source": "stated"
},
"postedAt": "2026-10-25T12:34:21Z",
"descriptionMarkdown": null,
"applyUrl": "https://remoteOK.com/remote-jobs/remote-senior-software-engineer-klardaten-1137571",
"sourceUrl": "https://remoteOK.com/remote-jobs/remote-senior-software-engineer-klardaten-1137571",
"ok": true,
"matchedTerms": [
"engineer"
]
}

How to use it

Start a run in Apify Console, by API or from an agent with an input like this one — it is the input Apify runs every day to test this Actor:

{
"keywords": [
"engineer"
],
"maxResults": 10
}
FieldTypeMeaning
keywordsarrayReturn only listings whose title, company or tags contain any of these words or phrases (case-insensitive).
categoriesarrayReturn only listings carrying any of these Remote OK tags (dev, design, marketing, sales, …).
seniorityarrayReturn only listings whose tags or title name any of these levels (intern, junior, senior, lead, principal, staff).
countriesarrayAccept listings open worldwide or restricted to any of these countries (names or ISO 3166-1 codes).
salaryMinintegerReturn only listings whose stated annual USD range reaches this amount; listings stating no salary are left out.
postedWithinDaysintegerReturn only listings posted in the last N days; 1–365, default 14.
sourcesarraySources to read: remoteok (the only permitted source; Himalayas is excluded under its terms).
maxResultsintegerMost listings returned, newest first; 1–1,000.
includeDescriptionbooleanReturn each listing's description as redacted Markdown.

Events and prices

EventTitleCharged whenFREE / BRONZESILVERGOLD / PLATINUM / DIAMOND
job-returnedJob returnedOne posting returned.$0.001$0.0009$0.0008

Worked cost: a search returning 50 listings costs 50 × $0.001 = $0.05 at the FREE and BRONZE price, $0.045 on SILVER and $0.04 on GOLD and above, plus the actor-start event.

Platform usage is not passed through. Apify's automatic actor-start event remains $0.00005 per started GB (one GB or less counts once). The synthetic dataset-item event is absent. Failure records and the free summary records are never charged; when the run's maximum total charge is reached, further work stops and the rest gets uncharged charge_limit_reached records. Work completed before an abort is settled.

Call it from an agent

Through Apify's MCP server (https://mcp.apify.com) use call-actor:

{
"actor": "hermeskd/remote-jobs",
"input": {
"keywords": [
"engineer"
],
"maxResults": 10
},
"callOptions": {
"maxTotalChargeUsd": 0.05,
"timeout": 600
},
"waitSecs": 30
}

Then call get-dataset-items with the returned defaultDatasetId. Dedicated tool URL: https://mcp.apify.com?tools=hermeskd/remote-jobs

Output fields

FieldMeaning
typesummary: the run's first record, free (jobs read, matching and returned, failed sources); job: one listing.
sourcesSummary record: the sources read (Remote OK; Himalayas is excluded under its terms).
sourceThe listing's source: remoteok.
attributionCredit to show with the job, e.g. "via Remote OK": the source asks to be named.
jobIdRemote OK listing id.
titleJob title.
companyHiring company as the listing names it.
senioritySeniority only where the listing's own tags name one (Intern, Junior, Senior, Lead, Principal, Staff).
categoriesThe listing's own tags.
locationRestrictionsWhere the listing says applicants must be; empty when it states no restriction.
locationLocation parsed from the source text: raw text, and city, region (US state code) and ISO 3166-1 alpha-2 country only when the text states them unambiguously; remote when the source says so.
salaryPay range only when the source states one; never inferred.
postedAtWhen the listing was posted (UTC, ISO 8601).
descriptionMarkdownDescription as Markdown with emails and phone numbers redacted; null unless includeDescription is true.
applyUrlThe listing's apply link as the source gives it.
sourceUrlThe original listing URL, unmodified: link to it (a followed link) wherever the job is shown.
matchedTermsThe keywords this listing matched.
sourceJobsSummary record: listings read per source.
matchingJobsSummary record: listings matching the filters.
returnedJobsSummary record: listings returned (maxResults applied).
failedSourcesSummary record: sources that could not be read this run.
okTrue for a summary of a successful read and for every returned listing.
errorFailure, never charged.

Limits and run time

One request per run: the Remote OK feed, which carries its latest listings (99 on 2026-10-26). 1–1,000 results (maxResults, default 100), newest first; postedWithinDays defaults to 14. Remote OK states salary as an annual USD range (its listing pages show it as "$min — $max/year"), so salaryMin compares USD a year and leaves out listings that state none. Seniority is only what the listing's own tags or title name; a location restriction is matched to a country only when it names one (a city alone matches no country). The smoke input (ten results) ran in 3.4 seconds end to end in the production image on 2026-10-26; the default run timeout is 600 seconds. Cold platform time, cost and the smallest passing memory are measured by the deploy.

Errors

CodeMeaning
source_unavailableThe Remote OK feed could not be read this run; the summary record says so, nothing is charged.
rate_limitedThe source asked us to slow down (HTTP 429); nothing was charged.
source_schema_changedThe source's response no longer has the verified shape; the run fails loudly when every input does.
download_failedThe request failed, timed out or answered an unexpected HTTP status.
robots_disallowedrobots.txt forbids fetching the URL; no request was made to it.
blocked_hostThe host is on the deny-list or resolves to a private or local address; no request was made.
timeoutThe input did not finish within the run's time budget.
invalid_inputThe run input passed the input schema but cannot be used; the message names the field.
internal_errorUnexpected failure; the message carries the error class.
charge_limit_reachedThe run reached its maximum total charge; this input was not processed.

No failure record is charged. A run fails only when every input failed on the Actor's side (internal_error, timeout, source_schema_changed); caller-side failures and mixtures leave the run SUCCEEDED.

Sources and terms

Remote OK (remoteok.com/api). Its terms are the legal notice at the head of the feed, read 2026-10-26: "Please link back (with follow, and without nofollow!) to the URL on Remote OK and mention Remote OK as a source", and do not use the Remote OK logo without written permission. Every record carries sourceUrl and attribution; no logo field is returned. Himalayas is not a source: its terms (current as of 2026-10-25) say its jobs may be shown "only on sites and apps you operate" and not passed "to other job boards, aggregators"; Remotive is excluded for the same reason. Only process content you have the right to process. Every request obeys HermesBot robots-group selection, the shared deny-list, public-address checks on connections and redirects, an honest user-agent, a 30-second deadline per request and at most one request a second per host (Lever and Remote OK ask Crawl-delay: 1). No caller credentials, cookies, CAPTCHA solving, residential proxies or evasion. Job text is returned with email addresses and phone numbers redacted; no recruiter, applicant or hiring-team object is ever read or returned, and the application endpoints are never called.

Not affiliated

This Actor is not affiliated with Remote OK, Apify or the companies whose listings it returns. Third-party names describe the source.

Changelog

2026-10-26: first version (build unit 5): Remote OK only (Himalayas excluded under its changed terms), filters, attribution, redaction; listing written to the amended store contract.