Article
Search ten job boards with one API call: job scraper bundles, explained
Every serious job hunt eventually turns into the same ritual: a browser window with ten pinned tabs. LinkedIn. RemoteOK. Hacker News "Who is hiring." A couple of niche boards for your field. Each with its own search syntax, its own idea of what "remote" means, its own way of hiding the posting date.
You check them all on Monday. By Thursday you are checking three. By next month you are back to just LinkedIn — which is exactly where every other applicant is looking too. The postings that would have had the least competition were on the boards you stopped opening.
The boards you skip are not the boards where jobs stop appearing. They are just the boards where you stop appearing.
The fix: one endpoint that fans out for you
We publish a set of bundle Actors on the Apify Store that solve exactly this. A bundle is a single Actor that, on each run, fans out to a whole fleet of individual board scrapers — LinkedIn, Hacker News, RemoteOK, EURAXESS, whichever set fits the bundle — runs them in parallel, and merges everything into one deduped dataset. Records from sources inside one bundle follow that bundle's documented contract; do not assume that two different Actors or release versions have interchangeable schemas.
One HTTP call in, one flat JSON list out. The ten-tab ritual becomes:
curl -X POST \
"https://api.apify.com/v2/acts/nomad-agent~web-dev-bundle/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keyword": "react", "maxItemsPerSource": 20}'
The keyword is forwarded to every child board that supports free-text search (boards that don't simply return their fresh postings). Records come back looking the same regardless of origin:
{
"title": "Senior React Developer",
"company": "Acme Software",
"location": "Remote (EU)",
"url": "https://weworkremotely.com/remote-jobs/...",
"source": "remote_boards",
"postedAt": "2026-07-04"
}
The Web Developer bundle deduplicates repeated listing URLs before you see them. URL identity cannot prove that every differently linked semantic duplicate was found.
Pick your bundle
Four useful starting points cover different kinds of search:
Web Developer Jobs — 10 source integrations spanning 12 named sites. LinkedIn, RemoteOK, Remotive, WeWorkRemotely, Built In, JustJoin.it, NoFluffJobs, Hacker News Who-is-Hiring, Y Combinator, Welcome to the Jungle, InfoJobs and Tecnoempleo. The three remote sites share one remote_boards integration; the other sites each have their own source key.
AI & ML Engineer Jobs — 8 boards. Everything above that matters for ML plus aijobs.net, the field's dedicated board. If you are hunting LLM, ML or data roles, this is the one search that covers both the startup boards (HN, YC) and the specialist ones.
Research & Academic Jobs — academic, policy and NGO coverage. Its source set is release-dependent, so use the linked Store Input tab rather than copying a source list from this overview.
Company Careers — track specific companies. The inverse search. Instead of "show me jobs matching X anywhere," you hand it a list of companies you actually want to work for, and it probes six ATS providers: Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Workday. No more bookmarking twenty careers pages.
Source sets and inputs can change between releases. Check each linked Store Input tab before automating against a field or source key; a repository schema or this article does not prove which Actor build is deployed.
aijobs.net, LinkedIn, Hacker News, Y Combinator, Built In, the remote boards and more — one run, one merged, deduped dataset. Pay per result on the Apify Store.
The knobs that matter
Bundles are pay-per-result, so the controls are mostly about cost and freshness:
maxItemsPerSourcecaps what each of the Web Developer bundle's ten source integrations contributes before merging. Twenty per source permits at most 200 items before the mergedmaxItemsceiling and deduplication; billing follows the unique results delivered.sourceslets you drop integrations you don't care about. Not looking in Spain? Drop InfoJobs and Tecnoempleo and the run gets cheaper and faster.cacheTtlSecondsreuses recently fetched source results instead of hitting an upstream again. It can reduce upstream requests and latency during tuning, but it does not waive Actor-start or delivered-result charges.
For scheduled alerts, keep the bundle output as a complete snapshot and track delivered jobs separately for each search profile. That way one shared Actor run can safely serve many users without one user's history hiding a posting from another. Pair a daily schedule with the same morning-delivery trick from our article on beating the 100-applicants wall and you can still surface fresh roles early.
Where the deployed Store Input tab exposes candidate matching, the Web Developer bundle can rank each posting with a 0–10 match score, a match reason and a material-mismatch reason when you bring a supported provider API key. Core fields such as skills, experience, work arrangement and salary come from source data and deterministic normalization, so availability still varies by source.
When a bundle beats a single scraper
A single-board scraper is the right tool when one board is your market — LinkedIn alone is often enough for a first automation. Reach for a bundle when:
- Your field is scattered. Research and NGO jobs are the extreme case — many specialist sources, none dominant — but web-dev remote roles are nearly as fragmented.
- You want fewer moving parts. One scheduled run, one dataset, one place to break instead of ten separate scrapers to babysit.
- You are deduplicating by hand. If your spreadsheet has the same job three times from three boards, the bundle's URL-dedup pays for itself immediately.
Within a given bundle, every selected source is normalized to that bundle's output contract. Switching from a single scraper or another bundle is still an integration change: compare the deployed schemas before reusing a consumer.
The part after the scraping
A merged feed solves the coverage problem. It does not solve the attention problem — 150 fresh postings a day is still 150 things to read. The next layer is scoring: deciding which of those postings deserve your evening, based on your actual experience and constraints. That layer is what we built Oink to be.
Describe the role you want and add a resume where required or useful. Oink searches the public sources available to your run, ranks viable postings 0–5, and delivers explained matches on the web or in Telegram.
Ten tabs, one call. Spend the saved hour on the application that matters.