Remote Jobs Aggregator - 6 Job Boards, Ghost-Job Scoring
Pricing
from $2.00 / 1,000 job returneds
Remote Jobs Aggregator - 6 Job Boards, Ghost-Job Scoring
Fetches every open remote job from six public job boards, normalises them onto one schema, folds duplicates, and scores each posting for freshness and ghost-job risk.
Pricing
from $2.00 / 1,000 job returneds
Rating
0.0
(0)
Developer
Dave Fergins
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Remote Jobs Aggregator
Every open remote job from six public job boards, on one schema, with each posting scored for how likely it is to still be real.
Six boards publish remote jobs in six different shapes. Remote OK calls the role position and dates it with a unix epoch; Remotive calls it title with an ISO string; We Work Remotely ships RSS with the company glued to the front of the title. Before you can search across them you have to reconcile all of that, and then work out which postings are still open.
This Actor does both, and hands you a flat dataset you can query.
What you get
Roughly 600 remote jobs on default settings, or ~1,000 with deeper paging, refreshed on every run. Each row carries:
| Identity | stable id across runs, source board, original posting URL, direct applyUrl where the board publishes one |
| The role | title, company, plain-text description, category, tags, employment type, seniority |
| Where | remote flag, the board's own location text, normalised regions (worldwide / usa / canada / latam / uk / europe / apac / africa / middle_east), and any timezone restriction |
| Pay | min, max, currency and period — parsed into numbers from whatever prose the board used |
| When | posted date, expiry where published, and age in days |
| Trust | freshness 0–1, ghostRisk low/medium/high, and ghostReason explaining the verdict in plain words |
The trust fields are the point
Aggregated job feeds are full of postings that are still published but no longer open: filled roles left up for pipeline, evergreen "talent pool" adverts, and boards that never expire anything. Paying per row for those is annoying.
Every posting gets a risk band and the reasons behind it:
{"title": "Senior Backend Engineer","company": "Acme","freshness": 0.71,"ageDays": 10.4,"ghostRisk": "low","ghostReason": ["recent, and nothing contradicts it"]}
{"title": "General Application — Engineering Talent Pool","company": "Globex","freshness": 0.12,"ageDays": 64.2,"ghostRisk": "high","ghostReason": ["posted 64 days ago","reads as an open/pipeline advert: talent pool"]}
The signals are computed from what the boards actually publish — age, the board's own expiry date, corroboration across boards, missing application links, and evergreen phrasing. Nothing is inferred by a model, and nothing claims certainty. You can set maxGhostRisk to filter, or ignore the field entirely and use the reasons yourself.
Freshness decays on a 21-day half-life. A posting with no date scores 0.5, not 1.0 — absence of evidence is not evidence of freshness.
Example input
Recent, well-paid, US-or-worldwide backend roles, nothing that smells stale:
{"query": ["golang", "backend", "platform"],"regions": ["usa"],"seniority": ["senior", "lead", "principal"],"maxAgeDays": 21,"minSalary": 120000,"salaryOnly": true,"maxGhostRisk": "low","maxItems": 200}
Everything is optional. Run it with no input at all and you get every remote job the six boards currently publish, best-first.
A few behaviours worth knowing:
- Search terms are OR-ed.
["go", "rust"]returns jobs mentioning either, which is what a job search means in practice. - Worldwide jobs match every region filter, because a job open to everyone is open to you.
minSalaryis annualised first, so hourly and monthly rates compare correctly against it.maxAgeDaysexcludes rows whose age is unknown. If you ask for jobs under 14 days old, you should not get rows where nobody published a date.maxItemsis your cost ceiling — you are billed per job returned.
Sources
| Board | What it adds |
|---|---|
| Remote OK | broad, global, tech-weighted |
| Remotive | curated, strong salary coverage |
| Himalayas | the only board publishing explicit expiry dates and numeric timezone restrictions |
| Arbeitnow | Europe-weighted, by far the largest single feed |
| We Work Remotely | long-running, well-known employers |
| Jobicy | cleanest structured salary data |
All six are public, documented, unauthenticated APIs or feeds. This Actor does not scrape HTML, defeat a bot check, or touch personal data — these are employer-published job adverts, fetched the way each board asks to be fetched, with a paced, budgeted request pattern and an honest user agent.
Listings from Remote OK are used under their API terms, which require a followed link back — the run report carries the required credit line for every board included.
One thing the data says that you might expect otherwise
These boards barely overlap. Measured across a full live run: 1.7% of employers, and exactly 1 of 1,513 company+title pairs, appear on more than one board.
So this is not a tool that saves you from wading through the same job six times — there is almost no duplication to remove. It is a tool that gets you six boards' worth of distinct jobs in one shape and one query, which is the more useful thing anyway. Duplicates are still folded when they do occur (including repeats within a single board, which are more common), and seenOn tells you every board carrying a row.
Output
One dataset item per job. Two prebuilt views: Jobs (everything) and Low ghost-risk only. Export as JSON, CSV, Excel or via the API like any Apify dataset.
If a board fails, the run does not: the other five still publish, and the failure is named explicitly in the log and the run report rather than quietly reducing your row count.
Not included, deliberately
- No LinkedIn, Indeed or Glassdoor. Those need scraping against active bot defences and, for profile data, raise real GDPR and CCPA questions. Everything here is a published open API.
- No contact details, no candidate data. Job adverts only.
- No guess-work in empty fields. A blank
senioritymeans the source never said, not that the job is mid-level. A blank salary means unpublished, not zero.
Running it yourself
The Actor is a single static Go binary with no third-party dependencies, and it runs identically off-platform:
go test ./...go run ./cmd/actor # reads ./INPUT.json if present, writes NDJSON to stdoutgo run ./cmd/probe # per-board health and field coveragego run ./cmd/probe -overlap # measure how much the boards actually duplicate each other
cmd/probe exists because these are six third-party feeds that change without notice. When a board silently renames a field the Actor does not crash — it quietly publishes rows with an empty company, or a zero date that scores as maximally fresh. The probe reports per-field coverage so that gets caught before a buyer pays for it.