We Work Remotely Scraper — Latest Remote Jobs, All Categories
Pricing
from $0.64 / 1,000 jobs
We Work Remotely Scraper — Latest Remote Jobs, All Categories
We Work Remotely jobs scraper: the latest remote jobs from every category (programming, design, devops, product, marketing, support…) with company, region, category, job type, posting date and description — plus job alerts: only jobs new since your last run. No login.
Pricing
from $0.64 / 1,000 jobs
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share
We Work Remotely Scraper
The latest remote jobs on We Work Remotely from every category — programming, design, devops, product, sales and marketing, customer support and more — with company, region, category, job type and description, de-duplicated across categories. Leave the search empty for everything currently listed. Schedule it and you get only the jobs posted since the last run.
Try it now — the input is already filled in. Press Start: the example searches (designer, engineer) return about 80 remote jobs in about 35 seconds, for about $0.08.
title | company | location | category | employmentType |
|---|---|---|---|---|
| Brand Designer | Tailscale | Anywhere in the World | Sales and Marketing | Full-Time |
| Senior Engineer (.NET) | Current | Anywhere in the World | DevOps and Sysadmin | Full-Time |
| Full Stack Developer | Typeform | Anywhere in the World | Full-Stack Programming | Full-Time |
How "new since last run" works
The Actor remembers which jobs each search returned last time. A job it has not seen before is marked isNewSinceLastRun: true.
If the whole search fits within Max jobs, the comparison is exact and jobs that disappeared come back as type: "closed" rows. If the search is bigger than Max jobs, a job only counts as new when it was also posted after your previous run — so an old job that merely moved into view is never reported as new.
Filters (title, location text, salary, remote) never change the comparison, so changing a filter never makes jobs look new.
What you get
| Field | |
|---|---|
title, company, location | as listed (location is the region the employer accepts, e.g. "Anywhere in the World") |
category, employmentType | We Work Remotely's category (e.g. Full-Stack Programming, Design) and job type |
description | the job text from the listing |
postedAt, source | when it was posted, and "We Work Remotely" |
We Work Remotely publishes the newest jobs per category; this Actor reads every category and removes duplicates, so one run returns everything currently listed (a few hundred jobs). Schedule it to build up a history.
| isNewSinceLastRun | true / false, or null on the first run (unknown, not "old") |
| jobUrl | link to the job on We Work Remotely |
| search | which of your searches returned it |
Input
Put one search per line in Searches (e.g. designer) and optionally a Location (e.g. Anywhere in the World). Or set the filters on the site and paste the result page into Search URLs (e.g. https://weworkremotely.com/categories/remote-programming-jobs) — every filter the site has then applies. Many searches in one run are cheaper than one run each.
A search the site refuses comes back as an error row and the run carries on.
Example output
One real row from a test run (long text shortened here with …).
{"type": "job","provider": "wwr","search": "designer","jobId": "contra-senior-3d-designer","title": "Senior 3D Designer","company": "Contra","location": "Anywhere in the World","remote": true,"category": "Design","employmentType": "Contract","description": "Headquarters: San Francisco, CA\n \nURL: http://bit.ly/3kLhMdk\n\nAbout Contra Labs\n\nContra Labs sits at the intersection of human creativity and AI. We partner wit…","postedAt": "2026-10-07T00:11:33.000Z","jobUrl": "https://weworkremotely.com/remote-jobs/contra-senior-3d-designer","source": "We Work Remotely","countryCode": null,"seniority": "senior","employmentTypes": ["contract"],"isNewSinceLastRun": false}
Get only the new jobs every morning (3 steps)
- Open this Actor in Apify Console, fill in your searches, set What to return to Only jobs that are new since the last run, and click Save as a new task.
- On the task, add a Schedule — for example daily at 07:00.
- Open the task's Integrations tab and connect Slack, email, Google Sheets (or Zapier / Make / a webhook). Each morning you get only the new jobs.
You pay only for the new jobs plus $0.01 per run, so a quiet day costs about a cent. When you export by hand, pick the Jobs view: 9 tidy columns, title first, instead of every raw field.
Pricing
$0.80 per 1,000 jobs, plus $0.01 per run. Closed-job rows and errors are free. With Only jobs that are new since the last run, a daily schedule only pays for the new ones.
Don't know which companies to watch? The Greenhouse Jobs Scraper searches 4,800 companies by job title — no company names needed — and reports exactly which matching roles are new or closed each run.
For AI agents
For a fast answer call with {"searches": ["designer"], "maxJobsPerSearch": 20} — a few seconds. The defaults (up to 200 jobs) can take about a minute, which is longer than many agent tool timeouts. Each row has type: job, closed or error. isNewSinceLastRun: null means "no previous run to compare with".
Same filters on every site (10/2026): experience level (read from the title: intern → executive, returned as a seniority column) and employment type (the site's own words normalised into full-time / part-time / contract / temporary / internship, returned as employmentTypes). They only narrow what is returned — no extra requests, no extra cost.
Zero rows is never ambiguous. The run's status message says why, per search — e.g. "zzz": no results on the site, results found but all removed by your filters or nothing new since the last run — and the OUTPUT record in the run's key-value store has the same as JSON: perSearch[].status is ok, no-results, all-filtered, nothing-new or error, with listed, read, returned, new and closed. Set summaryRows: true to get it as free type: "summary" rows instead.
Same core columns on every northbell job scraper (15 job sites + 10 company-career-page scrapers), so you can stack them into one table: jobId, title, company, location, countryCode (ISO, job sites), remote (true / false / null), employmentType (the site's own words), postedAt, jobUrl, salaryMin, salaryMax, salaryCurrency, salaryInterval, isNewSinceLastRun. Unknown is null, never a guess.
More job scrapers from northbell
Job sites: SEEK · Instahyre · Reed · InfoJobs · XING · Dice · HelloWork · Computrabajo · Foundit · jobs.ch · Arbeitsagentur · Arbeitnow · Remote OK · We Work Remotely.
Company career pages with exact new/closed tracking: Greenhouse · Lever · Workday · AI companies.