We Work Remotely Scraper - Expiry & Ghost Job Filter
Pricing
from $2.00 / 1,000 job returneds
We Work Remotely Scraper - Expiry & Ghost Job Filter
Scrape the We Work Remotely feed into a clean JSON or CSV job dataset, splitting company from title. Real expiry dates make the freshness and ghost-job scoring evidence-based here: expired and stale job postings are detected outright, not guessed from age.
Pricing
from $2.00 / 1,000 job returneds
Rating
0.0
(0)
Developer
Dave Fergins
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
We Work Remotely Jobs Scraper
Scrape the We Work Remotely feed into a clean JSON or CSV job dataset, splitting company from title. Real expiry dates make the freshness and ghost-job scoring evidence-based here: expired and stale job postings are detected outright, not guessed from age.
Two things this board does that break naive scrapers
1. There is no company field. We Work Remotely publishes an RSS feed where the employer is glued to the front of the title: "Fullscript: Senior Product Designer". A scraper that maps title straight through gives you a company column that does not exist and a job title that starts with a company name.
This Actor splits them — but only on the first colon, and only when both halves are plausible. Titles legitimately contain colons ("Engineer: Platform Team"), and splitting those would invent a company that does not exist.
2. It publishes real expiry dates. Along with Himalayas, this is one of only two boards here that states when a listing closes. That makes the ghost-job scoring unusually well-grounded: an expired posting is detected outright rather than guessed at from age.
Region coverage is strong too — around 96% of listings resolve to a hiring region, since the feed carries separate region, country and state fields rather than one free-text blob.
What each row contains
| Identity | stable id across runs, posting URL, direct applyUrl where published |
| The role | title, company, plain-text description, tags, employment type, seniority |
| Where | remote flag, the board's own location text, and normalised regions (worldwide / usa / canada / latam / uk / europe / apac / africa / middle_east) |
| Pay | min, max, currency and period as numbers, annualised on request |
| When | posted date, expiry where published, age in days |
| Trust | freshness 0-1, ghostRisk low/medium/high, and ghostReason explaining the verdict in plain words |
The trust fields
Job boards are full of postings still published but no longer open — filled roles left up for pipeline, evergreen "talent pool" adverts, and listings nothing ever expires. Every row here carries 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"]}
Signals come from what the board actually publishes: age, its own expiry date where there is one, missing application links, and evergreen phrasing. Nothing is inferred by a model. Freshness decays on a 21-day half-life, and a posting with no date scores 0.5 rather than 1.0 — absence of evidence is not evidence of freshness.
Example input
{"query": ["golang", "backend"],"regions": ["usa"],"seniority": ["senior", "lead"],"maxAgeDays": 21,"maxGhostRisk": "low","maxItems": 200}
Everything is optional — run it empty and you get the whole board, best-first.
- Search terms are OR-ed.
["go", "rust"]returns jobs mentioning either. - 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.maxItemsis your cost ceiling — you are billed per job returned.
Output
One dataset item per job, ordered best-first: lowest ghost-job risk, then freshest. Export as JSON, CSV or Excel, or read it from the API like any Apify dataset.
Common uses
- Filtering out expired and stale job postings. This board publishes real expiry dates, so
ghostRisk,ghostReasonandfreshnessare unusually well grounded here — an expired posting is detected outright rather than inferred from age. - Job posting freshness checks. If your question is "is this listing still open?", this is the board where the answer is evidence-based.
- Salary benchmarking and compensation data. Where this board publishes pay,
salaryMin,salaryMax,salaryCurrencyandsalaryPeriodcome through as numbers, andminSalaryannualises before comparing. - Job market and hiring data. Run it on a schedule and track how hiring, salary ranges, seniority mix and regions move over time.
- Building a job board, job feed or job alerts.
idis stable across runs, so diffing today's dataset against yesterday's gives you genuinely new jobs rather than a board reshuffle. - Recruitment and talent research. Company, title, tags, seniority, employment type and normalised regions on every row.
Export as JSON, CSV or Excel, or read the dataset straight from the Apify API.
How it fetches
We Work Remotely publishes a public RSS feed and this Actor reads it — paced, budgeted, with an honest user agent. No HTML scraping, no bot-check evasion, no personal data. Job adverts only.
Want more than one board?
Remote Jobs Aggregator runs this same pipeline across six boards at once — Remote OK, Remotive, Himalayas, Arbeitnow, We Work Remotely and Jobicy — folding duplicates and recording which boards carry each job.
Measured while building it: those six boards barely overlap. Only 1 of 1,513 company+title pairs appeared on more than one. The aggregator is not about removing duplication — there is almost none — it is about getting six boards' worth of distinct jobs from one call.