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 with a consistent shape: title, company, location, posting URL, and a source field telling you which board it came from.
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": "weworkremotely",
"postedAt": "2026-07-04"
}
Duplicates — the same posting syndicated to three boards — are collapsed by URL before you ever see them.
Pick your bundle
There are four, each covering a different kind of search:
Web Developer Jobs — 10 boards. LinkedIn, the remote trio (RemoteOK / Remotive / WeWorkRemotely), Built In, JustJoin.it, NoFluffJobs, Hacker News Who-is-Hiring, Y Combinator, Welcome to the Jungle, InfoJobs and Tecnoempleo. The generalist-developer sweep, with strong European coverage.
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 — 10 sources. A different world entirely: EURAXESS, jobs.ac.uk, UN Careers, ReliefWeb, Impactpool, Ikerbasque, Devex, University of Copenhagen, Universitat de Barcelona, plus LinkedIn. Academic, policy and NGO roles live on boards most aggregators have never heard of — this bundle exists because no mainstream tool covers them.
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 each one's careers board across Greenhouse, Lever, Ashby and Workable — automatically detecting which ATS hosts it. No more bookmarking twenty careers pages.
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 child board contributes before merging. This is your cost dial: 20 per source across ten boards is at most 200 billed results per run, usually fewer after dedup.sourceslets you drop boards you don't care about. Not looking in Spain? Drop InfoJobs and Tecnoempleo and the run gets cheaper and faster.cacheTtlSecondsreuses recently fetched results instead of hammering a board again. If you run the bundle several times a day while tuning, the cache keeps repeat runs nearly free.
The company-careers bundle adds a genuinely useful extra: onlyNewSinceLastRun. Turn it on and each run outputs only postings it has not seen before — which turns a scraper into a monitor. Schedule it daily against your dream-company list and the output is literally "what did these companies post since yesterday," most days an empty list, some days the one posting you have been waiting for. Pair it with the same morning-schedule trick from our article on beating the 100-applicants wall and you apply to those roles before they have a crowd.
It can also enrich each posting with AI — key skills, experience level, work arrangement, visa-sponsorship signals — if you bring an Anthropic or Mistral API key. Handy when you are piping results into a spreadsheet and want sortable columns instead of rereading every description.
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 — ten 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.
The output shape is identical to the single scrapers', so you can start with one board and swap in a bundle later without touching whatever consumes the JSON.
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.
Oink runs this kind of search for you around the clock — upload a resume, describe what you want, and an AI pipeline scores fresh postings against your profile and pings you on the web or Telegram.
Ten tabs, one call. Spend the saved hour on the application that matters.