Multiple Job Board Scraper — Remote Job Search API avatar

Multiple Job Board Scraper — Remote Job Search API

Pricing

from $5.00 / 1,000 validated job saveds

Go to Apify Store
Multiple Job Board Scraper — Remote Job Search API

Multiple Job Board Scraper — Remote Job Search API

Search public Remote OK, Remotive, and Arbeitnow listings in one normalized, AI-ready dataset for recruiting and job-market research.

Pricing

from $5.00 / 1,000 validated job saveds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What is Multiple Job Board Scraper — Remote Job Search API?

Multiple Job Board Scraper searches the public Remote OK, Remotive and Arbeitnow boards with one query and returns a single normalized dataset of job rows. Every row has the same fields whatever its source: job title, company, location, cleaned description, skill tags, work arrangement, listing and apply URLs, publication date and source provenance. Recruiters, talent-market researchers, job-alert builders and AI agents use it to source remote roles and track hiring demand without maintaining three separate integrations.

Why teams use this remote job search API

  • Three boards, one schema. Results from remoteok, remotive and arbeitnow share the same field names, so they merge cleanly in one sheet or table.
  • All-terms keyword matching. Every word in searchQuery must appear across the title, company, description or tags, which keeps results on topic.
  • Location filter that understands remote. location accepts Remote, a place such as Germany, or any for every location.
  • Skills as tags. tags carries the board's skill and category labels, ready for demand analysis by technology.
  • Compact mode for agents. Set includeDescription to false for lean rows.
  • Honest optional fields. salaryText, employmentType and similar fields stay null unless the board publishes them, so nothing is guessed.

Best fit for remote and international tech roles posted on Remote OK, Remotive and Arbeitnow: building a remote-jobs feed, finding companies hiring for a skill, or giving an agent a quick current sample of open roles.

  • For keyword and location search on LinkedIn job listings, use LinkedIn Jobs Scraper alongside this Actor.
  • When a company from your results runs its own Workday career site, continue with Workday Jobs Scraper to pull its full openings list.

Example workflow: from a skill to a weekly remote-jobs digest

A newsletter editor starts with searchQuery set to react engineer, location set to Remote and maxResults set to 100. The dataset returns each job's title, companyName, tags, postedAt and applyUrl from all three boards. They sort by postedAt, keep the newest roles, and export them into the weekly newsletter. A weekly schedule with the same input refreshes the list, and they compare jobId values against last week's issue to highlight only new openings.

How to search multiple job boards

  1. Enter a Search query, for example data engineer.
  2. Set Location to Remote, a place such as Germany, or any.
  3. Keep all three Job boards selected or choose the ones you need, then set Maximum jobs.
  4. Click Start, then export the dataset as JSON, CSV or Excel, or read it through the API.

Input

{
"searchQuery": "data engineer",
"location": "Remote",
"sources": ["remoteok", "remotive", "arbeitnow"],
"maxResults": 50,
"includeDescription": true
}
FieldTypeWhat it controls
searchQuerystringRequired role or skill keywords. Every word must match. Default software engineer.
locationstringLocation text to match, Remote, or any. Default Remote.
sourcesarrayAny of remoteok, remotive and arbeitnow. Default all three.
maxResultsintegerSaved and billed job cap, from 1 to 500. Default 50.
includeDescriptionbooleanInclude the cleaned description. Default true.

Output

One dataset row per job. Diagnostics for each run go to the OUTPUT and RUN_SUMMARY key-value-store records.

FieldWhat it contains
jobIdSource-prefixed ID, for example remoteok:1137427
titleJob title
companyNameHiring company
locationPublished location or remote region
descriptionCleaned description, when includeDescription is on
salaryTextCompensation text when the board publishes it
employmentTypeFull-time, contract and similar, when the board publishes it
workArrangementNormalized remote signal such as remote
tagsSkill and category tags
jobUrl, applyUrlListing URL and application URL
postedAtPublication date
source, sourceUrl, scrapedAtBoard name, source endpoint and collection time
{
"jobId": "remoteok:1137427",
"title": "Software Engineer",
"companyName": "Prenosis",
"location": "Remote",
"description": "Remote - Prenosis Inc. is an artificial intelligence company pioneering precision medicine in acute care...",
"salaryText": null,
"employmentType": null,
"workArrangement": "remote",
"tags": ["golang", "dev", "engineer", "digital nomad"],
"jobUrl": "https://remoteok.com/remote-jobs/remote-software-engineer-prenosis-1137427",
"applyUrl": "https://remoteok.com/remote-jobs/remote-software-engineer-prenosis-1137427",
"postedAt": "2026-09-23T14:00:02+00:00",
"source": "remoteok",
"sourceUrl": "https://remoteok.com/api",
"scrapedAt": "2026-10-01T01:47:11.433Z"
}

OUTPUT.outcome is one of COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED or CONFIG_ERROR, so code and agents can branch on the result. PARTIAL means useful jobs were saved while one selected board was unavailable.

Pricing

This Actor uses Pay per event with Apify platform usage included in the event price. You pay one Validated job saved event for each job that is validated and written to the dataset, and Actor Start events when the run starts, counted per GB of memory. Unmatched, duplicate and invalid records are never charged, and maxResults caps the job events.

Worked example in words: a run that saves fifty matching jobs costs fifty Validated job saved events plus the start events for the run's memory. Check the live Pricing tab on this page for current event prices, and lower the run memory to reduce start events.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~multiple-job-board-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQuery": "python developer", "location": "any", "maxResults": 25, "includeDescription": false}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/multiple-job-board-scraper").call(run_input={
"searchQuery": "data engineer",
"location": "Remote",
"sources": ["remoteok", "remotive", "arbeitnow"],
"maxResults": 50,
"includeDescription": False,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["source"], job["title"], job["companyName"], job["applyUrl"])

Use with AI agents (MCP)

Connect the Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP and ask:

Find up to 25 remote React engineer jobs across Remote OK, Remotive and Arbeitnow. Return company, location, tags, posting date and application URL.

The agent sets searchQuery, location and maxResults, reads rows back from the dataset, and checks OUTPUT.outcome to tell an empty match from a partial run. Each row keeps jobUrl, source and scrapedAt for citation, and maxResults fixes the cost scope before the run starts.

Best results

Starting situationHelpful actionExpected outcome
A long, specific queryShorten to two or three core words, such as react engineerMore matches, still on topic
Global rolesSet location to anyEvery location the boards publish
European rolesSet location to a country such as GermanyRows whose location text matches
One preferred boardPass only that board in sourcesA single-source dataset
Agent or LLM contextSet includeDescription to falseCompact rows
Skill demand trackingCount tags across a scheduled datasetA trend of technologies in demand

Builder's note

I built this Actor because remote-job research usually means stitching together several boards with different field names. I designed one schema for all three, kept optional fields null instead of inferring them from text, and made maxResults the cap on both output and job charges. I found that requiring every query word to match keeps small searches focused without extra filters.

FAQ

How many jobs can one run return?

Up to 500, set by maxResults. The actual count depends on what the boards list and how many match every term.

Do I need proxies or accounts?

No. The Actor reads the boards' public listings directly.

Why is salary empty on some rows?

salaryText is filled only when the board publishes compensation. Many remote listings omit it.

Can I run it on a schedule?

Yes. Attach an Apify schedule and compare jobId values between runs to find new postings.

Responsible use

This Actor collects public job-listing data. Use it in line with each board's terms and applicable laws, use the output for lawful recruiting and research, and handle any personal data in line with privacy laws such as the GDPR. Remote OK, Remotive and Arbeitnow are trademarks of their owners; this independent Actor is not affiliated with or endorsed by them.