Remote Jobs Aggregator - 6 Job Boards, Ghost-Job Scoring avatar

Remote Jobs Aggregator - 6 Job Boards, Ghost-Job Scoring

Pricing

from $2.00 / 1,000 job returneds

Go to Apify Store
Remote Jobs Aggregator - 6 Job Boards, Ghost-Job Scoring

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

Dave Fergins

Maintained by Community

Actor 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:

Identitystable id across runs, source board, original posting URL, direct applyUrl where the board publishes one
The roletitle, company, plain-text description, category, tags, employment type, seniority
Whereremote flag, the board's own location text, normalised regions (worldwide / usa / canada / latam / uk / europe / apac / africa / middle_east), and any timezone restriction
Paymin, max, currency and period — parsed into numbers from whatever prose the board used
Whenposted date, expiry where published, and age in days
Trustfreshness 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.
  • minSalary is annualised first, so hourly and monthly rates compare correctly against it.
  • maxAgeDays excludes rows whose age is unknown. If you ask for jobs under 14 days old, you should not get rows where nobody published a date.
  • maxItems is your cost ceiling — you are billed per job returned.

Sources

BoardWhat it adds
Remote OKbroad, global, tech-weighted
Remotivecurated, strong salary coverage
Himalayasthe only board publishing explicit expiry dates and numeric timezone restrictions
ArbeitnowEurope-weighted, by far the largest single feed
We Work Remotelylong-running, well-known employers
Jobicycleanest 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 seniority means 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 stdout
go run ./cmd/probe # per-board health and field coverage
go 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.