We Work Remotely (WWR) is one of the largest and oldest dedicated remote work job boards on the internet, with a curated focus on fully remote positions that sets it apart from general job boards that simply filter by remote option. Since 2011, WWR has been the go-to platform for companies committed to distributed work and for job seekers who specifically target remote-first employers. Its reputation as a high-signal platform — listings are paid and manually reviewed, reducing noise compared to free-posting boards — makes it particularly valuable as a data source for understanding the premium segment of the remote job market.
For remote work researchers, HR technology companies, compensation analysts, and talent market intelligence teams, WWR offers a clean, curated dataset of genuine remote job opportunities. The platform does not provide a bulk data API. Extracting job data at scale for analysis, monitoring, or dataset creation requires a scraping approach.
WeWorkRemotely’s technical stack is simpler than JavaScript-heavy platforms like LinkedIn or ZipRecruiter — the site renders server-side HTML — but it presents its own scraping challenges. The job detail pages required to access full listing content, salary information, and company data involve navigation patterns and pagination structures that trip up naive scrapers, and the site applies rate limiting that breaks bulk collection attempts.
The incomplete data problem: WWR job cards in the listing view display only a subset of the data available on full job detail pages. Category, job title, company name, and posting date appear in cards, but salary ranges, full job descriptions, location restrictions, and application instructions only exist on the detail page. Two-pass collection is required: first scrape the listing view to collect detail page URLs, then fetch each detail page individually. For large scraping runs covering hundreds of listings, this doubles request volume and significantly increases the probability of hitting rate limits mid-run. Many scraping approaches collect only the shallow card data and miss the salary and full description fields that make the dataset analytically useful.
WWR uses Cloudflare protection that blocks straightforward data center HTTP requests. While WWR’s protection is less aggressive than platforms like LinkedIn, it reliably blocks requests from known data center IP ranges without browser-like headers, TLS fingerprints, and request pacing. Bulk collection from a single IP or small proxy pool without residential IP coverage fails quickly as Cloudflare identifies the traffic pattern as automated.
Listing freshness adds a time-sensitivity dimension. WWR jobs expire and are removed from the listing view as positions are filled, and the platform archives old listings rather than leaving them accessible. Building a longitudinal dataset of remote job market trends requires ongoing regular scraping rather than periodic one-off snapshots, since historical coverage cannot be reconstructed from current listing pages once old jobs roll off.
We maintain a WeWorkRemotely Jobs Scraper on Apify that handles Cloudflare bypass, two-pass collection (listing cards plus job detail pages), category traversal, and structured output normalization. You configure categories and filters; it returns complete remote job listing data including full descriptions and salary information.
Scrape all current listings in specific categories:
{
"categories": ["programming", "devops-sysadmin", "product"],
"maxResults": 300,
"includeFullDescription": true
}
Or scrape the full board and filter by keyword:
{
"categories": ["all"],
"keywords": ["python", "machine learning"],
"maxResults": 500,
"datePostedWithin": 30
}
Each job listing returns a structured object:
{
"jobId": "wwr_20260427_173849",
"title": "Senior Backend Engineer (Python)",
"company": "StreamlineHQ",
"companyUrl": "https://streamlinehq.com",
"category": "Programming",
"subcategory": "Back-End Programming",
"region": "Worldwide",
"locationRestrictions": ["USA", "Canada", "EU"],
"jobType": "Full-Time",
"salaryMin": 130000,
"salaryMax": 165000,
"salaryCurrency": "USD",
"salaryPeriod": "annual",
"description": "We are looking for a Senior Backend Engineer to help us scale our data processing infrastructure...",
"requirements": [
"5+ years of Python development experience",
"Strong background in distributed systems",
"Experience with PostgreSQL and Redis",
"Comfort with async programming patterns"
],
"benefits": ["Health insurance", "Home office stipend", "$2,000/year learning budget", "Flexible hours"],
"applyUrl": "https://weworkremotely.com/remote-jobs/...",
"datePosted": "2026-04-25",
"isActive": true,
"url": "https://weworkremotely.com/remote-jobs/streamlinehq-senior-backend-engineer-python"
}
| Field | Type | Description |
|---|---|---|
title | string | Job title as posted |
company | string | Hiring company name |
category | string | WWR job category |
region | string | Geographic region allowed (Worldwide, USA only, etc.) |
locationRestrictions | array | Specific countries or regions accepted |
jobType | string | Full-time, part-time, or contract |
salaryMin / salaryMax | integer | Salary range in posted currency (if provided) |
description | string | Full job description text |
requirements | array | Extracted requirement bullet points |
benefits | array | Listed benefits and perks |
datePosted | string | Date the listing was posted |
isActive | boolean | Whether the listing is currently active |
applyUrl | string | Direct application link |
Output is available as JSON, CSV, or XLSX. Scheduled Apify runs let you monitor the WWR board continuously — tracking new listings as they appear, alerting when companies in your target list post new roles, or building longitudinal datasets of remote job market trends across categories and salary ranges.
The actor uses Pay Per Event pricing at $0.01 per job listing.
| Volume | Cost |
|---|---|
| 100 listings | $1.00 |
| 500 listings | $5.00 |
| 1,000 listings | $10.00 |
| Weekly full-board snapshot (×4 weeks) | ~$20.00/month |
WeWorkRemotely Jobs Scraper on Apify →
Apify has a free tier for testing. Sign up here if you do not have an account. The actor integrates with Apify’s scheduling, webhook, and dataset APIs so you can build automated remote job monitoring pipelines without managing any scraping infrastructure.