Job Board Harvester — Multi-Platform avatar

Job Board Harvester — Multi-Platform

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Job Board Harvester — Multi-Platform

Job Board Harvester — Multi-Platform

Collect jobs from company career pages (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Personio, Teamtailor), AI talent marketplaces (Mercor, micro1, Turing, Himalayas) and LinkedIn into one clean, filterable dataset — or get only new jobs on a schedule. From $1 per 1,000 jobs.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Tapaswai Ashok Choudhary

Tapaswai Ashok Choudhary

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 hours ago

Last modified

Share

Job Board Harvester — Every Job Board, One Clean Dataset

Pull job postings from company career pages, AI talent marketplaces, and the big job search boards into a single, normalized, deduplicated dataset — ready to export to JSON, CSV, or Excel, push to your database, or feed into another Actor.

Track hiring at the companies you care about, build a jobs feed, power a recruiting tool, or run market research — without wiring up a dozen different sites yourself.

What it does

Three ways to source jobs, mixed freely in one run:

  • Company boards — name a company, get all its open roles.
  • AI & remote talent marketplaces — Mercor, micro1, Turing and Himalayas: expert, AI-training and remote roles, often with hourly rates.
  • Search boards — search by keyword, location, and filters across thousands of companies.

Every posting comes back in the same shape no matter where it came from, enriched with a work-mode (remote / hybrid / on-site), a seniority level, and a parsed salary — so results from Greenhouse, LinkedIn, and Workday all line up in one table.

Why this harvester

  • Fast. A company's whole board typically comes back in about a second — 200 jobs in under 2 seconds on the platform. No browser is started; the Actor reads each board's own data directly and fetches sources in parallel.
  • Costs almost nothing to run. It's a small native program that runs in 256 MB of memory, so platform usage for a typical run is a fraction of a cent. You pay for results, not machine time.
  • Starts instantly. A tiny container means runs begin in seconds, and the always-on API mode answers with no start-up wait at all.
  • Handles rate limits for you. When a board says “slow down” (HTTP 429) the Actor waits exactly as long as asked and carries on; server errors, timeouts and dropped downloads are retried automatically, and request speed adapts per site.
  • Never loses or double-bills work. Results are saved as each source finishes. If the platform moves your run to another server it resumes where it stopped without charging twice, and it stops cleanly at your maximum charge, keeping everything collected so far.
  • One clean format for every board. Structured location with ISO country code, remote/hybrid/on-site (only when the posting says so), employment type, seniority, experience, job function, skills and salary annualized for comparison — identical columns whether a job came from Greenhouse, Workday or LinkedIn.
  • Simple setup. Paste career-page links or company names and press Start. No API keys or logins for any of the “works out of the box” boards.

Only need one board? There's a focused, simpler Actor for each: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Recruitee, Personio, Teamtailor, LinkedIn, Himalayas and AI training jobs (Mercor, micro1, Turing).

Supported sources

Works out of the box — just add the source:

SourceYou provide
Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Personio, TeamtailorCompany name as it appears in its jobs-page address
WorkdayThe company's careers page URL
Mercor, micro1, Turing, HimalayasNothing — optionally a search query
LinkedInSearch query (+ optional location, date, remote)

Unlock with your own access (see Unlock more boards):

Naukri, Monster, Dice, and deeper LinkedIn results sit behind logins and anti-bot protection. Bring your own session or access key and this Actor will collect them for you.

Input

Quickest start: paste career-page links into careerPageUrls — the board is detected for you:

{ "careerPageUrls": ["https://boards.greenhouse.io/stripe", "https://jobs.lever.co/spotify", "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite"] }

For searches, marketplaces, and per-source options, provide a sources array — each entry names a platform and its parameters:

PlatformTypeParameters
greenhouse, lever, ashby, smartrecruiters, recruitee, personio, teamtailorCompanycompany (e.g. stripe for boards.greenhouse.io/stripe, acme for acme.jobs.personio.de)
workdayCompanyboardUrl (careers page, e.g. https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite), optional query
mercor, micro1, turing, himalayasMarketplaceoptional query, maxPages
linkedinSearchquery, plus optional location, datePosted (day/week/month), remote, maxPages
naukri, monster, diceSearch (your access)query, optional location, experience, plus sessionCookies / headers
FieldTypeDefaultDescription
careerPageUrlsarray—Career-page links (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday, Personio, Teamtailor); board auto-detected.
sourcesarray—Boards, marketplaces and searches with their options. Give this and/or careerPageUrls.
maxItemsinteger200Maximum total postings across all sources.
maxItemsPerSourceinteger—Optional cap per source, so every source gets its share.
enrichbooleantrueAdd work-mode, seniority, and parsed salary.
dedupebooleantrueDrop duplicate postings.
includeDetailsbooleanfalseOpen each job's own page for extra fields where lists are thin (LinkedIn: full description, level, employment type, applicants). Only for jobs that pass your filters.
titleIncludesarray—Keep jobs whose title contains any of these words.
titleExcludesarray—Drop jobs whose title contains any of these words.
locationIncludesarray—Keep jobs whose location contains any of these (e.g. Berlin, Remote).
postedWithinDaysinteger—Keep jobs posted in the last N days (undated jobs are kept).
remoteOnlybooleanfalseKeep only remote jobs.
workModesarray—Keep only remote, hybrid and/or onsite jobs.
employmentTypesarray—Keep only full_time, part_time, contract, internship, temporary, freelance.
senioritiesarray—Keep only intern, junior, mid, senior, lead, principal, director, executive.
jobFunctionsarray—Keep only functions like engineering, data, product, sales, marketing.
descriptionIncludesarray—Keep jobs whose title, description or skills mention any of these (e.g. Kubernetes).
companyExcludesarray—Drop companies whose name contains any of these.
minAnnualSalaryinteger—Minimum yearly pay (posting's currency); unpublished pay is kept unless onlyWithSalary.
onlyWithSalarybooleanfalseKeep only jobs that publish pay.
visaSponsorshipOnlybooleanfalseKeep only jobs offering visa sponsorship.
onlyNewbooleanfalseEmit only jobs no earlier run has delivered — for scheduled monitoring.
monitorNamestringautoName of the onlyNew history (defaults to one per set of sources).
includeReferralLinksbooleantrueAdd a referralUrl where available (see below).
proxyConfigurationobjectoffOptional; Apify Proxy or your own proxy URLs (rotated). Recommended for the search boards.

Filters apply the same way to every board, after normalization — so "senior remote engineering roles from the last week" means the same thing on Greenhouse, Workday, and LinkedIn.

Example input:

{
"sources": [
{ "platform": "greenhouse", "company": "stripe" },
{ "platform": "lever", "company": "spotify" },
{ "platform": "workday", "boardUrl": "https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite", "query": "engineer" },
{ "platform": "linkedin", "query": "backend engineer", "location": "remote", "datePosted": "week" }
],
"maxItems": 500,
"titleIncludes": ["engineer", "developer"],
"titleExcludes": ["intern"],
"postedWithinDays": 14
}

Monitor new jobs on a schedule

Turn on onlyNew and schedule the Actor (e.g. daily). Each run delivers only postings that earlier runs haven't — you're charged only for new jobs. Use a different monitorName per monitor if you run several. Pair it with an Apify integration (Slack, email, Google Sheets, webhooks) to get new jobs delivered automatically.

Use it as an instant API

The Actor also runs in Standby mode: an always-ready web endpoint that returns jobs directly in the response — ideal for apps, spreadsheets, and AI agents. Find the endpoint URL on the Actor's Standby tab and call it with your Apify API token:

curl "https://<standby-url>/?platform=greenhouse&company=stripe&titleIncludes=engineer&maxItems=20" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>"

Pass any input field as a query parameter (a single source can be given flat, as above), or POST the full input as JSON. The response looks like {"success": true, "count": 20, "items": [ … ]}. Pricing is the same per job.

Output

Every job comes back in the same shape, whichever board it came from. Board-specific labels are normalized (e.g. FullTime, fulltime_permanent and Full-time all become full_time) and the original is kept in a …Raw field.

FieldDescription
titleJob title
company / companySlugCompany name, and its board handle for career-page sources
companyLogoCompany logo (when available)
location / locationsLocation as listed, and all listed locations
city / region / country / countryCodeStructured location (ISO country code)
workMode / remoteremote, hybrid or onsite — only when the posting says so
employmentTypefull_time, part_time, contract, internship, temporary, freelance
seniorityintern, junior, mid, senior, lead, principal, director, executive
yearsExperienceMin / yearsExperienceMaxRequired experience, when stated
jobFunctionEngineering, data, AI training, product, design, sales, marketing, …
skillsSkills listed by the board plus those named in the posting
salary{min, max, currency, period, annualMin, annualMax} — annualized for easy comparison
salaryTextPay as the board shows it
educationLevelHighest degree asked for (bachelor, master, doctorate, …)
visaSponsorshiptrue / false when the posting says so
department / team / industryOrganization details (when available)
summary / descriptionShort summary and full description
qualificationsRequirements section (some boards, with includeDetails)
jobId / requisitionIdThe posting's identifiers
url / applyUrlPosting and apply links
postedAt / postedAtIso / postedDaysAgoPosting date as listed, normalized, and its age in days
hoursPerWeek / applicantsHours and applicant count (when available)
referralReward / referralUrlReferral details (see below)
source / scrapedAtBoard and collection time

The run's summary (OUTPUT) also reports field coverage — the share of results carrying each field — so you can see data completeness at a glance.

Several talent marketplaces reward members who refer candidates. Where the Actor's maintainer has a referral link for a board, jobs from that board carry an extra referralUrl field — applying through it may credit the maintainer, at no cost to the candidate. The posting itself, url, and applyUrl are never changed, and you can leave the field out entirely with includeReferralLinks: false.

Unlock more boards with your own access

Some boards — Naukri, Monster, Dice, and LinkedIn beyond public search — guard their listings behind a login or anti-bot protection. You can unlock them by letting the Actor use your own access. Add either of these to any source:

Your session — sign in to the board in your browser, copy your session cookie, and pass it as sessionCookies. The Actor collects jobs through your authenticated session, exactly as you'd see them.

{ "platform": "naukri", "query": "rust developer", "location": "bangalore",
"sessionCookies": "paste-your-cookie-header-here" }

Your access key — if you have an API key for the board, or a key from a web-unlock provider, pass it under headers and it's applied to every request for that source.

{ "platform": "dice", "query": "data engineer",
"headers": { "x-api-key": "your-key" } }

Your credentials are used only for your own run to fetch data you already have access to.

Pricing

Pay per result: you're charged per job posting delivered — nothing for filtered-out, duplicate, or (with onlyNew) already-seen jobs. See the Pricing tab for the current rate. Set a maximum charge on the run to cap spend.

On Apify's free plan each run returns up to 500 jobs — plenty to try everything. Any paid Apify plan removes the limit.

Tips

  • Start with a small maxItems to preview results, then scale up.
  • Set a maximum charge on the run to cap spend — the Actor stops cleanly at your limit and keeps everything collected so far.
  • Results are saved as each source finishes, so a long run that times out still keeps its data.
  • For the search boards, enabling a proxy improves reliability.
  • Company sources need the company name exactly as it appears in its jobs-page address.
  • If a run is interrupted by the platform, it picks up where it left off without charging twice.

Support & requests

  • Report a problem — use the Issues tab on this Actor's page. Include the source you ran and what you expected, and it's much quicker to fix.
  • Request a job board or platform — open an issue with a link to the board you want supported. New platforms are prioritised by how often they're asked for, so requests genuinely decide what gets added next.
  • Request a field or filter — if a posting has data you need that isn't in the output yet, say which board and which field and it can usually be mapped.

Feedback is actively monitored — if something's broken or missing, please say so.