We Work Remotely Jobs Scraper - Remote Jobs by Category
Pricing
from $0.70 / 1,000 job scrapeds
We Work Remotely Jobs Scraper - Remote Jobs by Category
Remote job postings from We Work Remotely's public RSS feeds as flat rows: job title, company, category, job type, region, allowed countries, posted and expiry dates, company website, HQ and full description as HTML and plain text. Pick categories, filter by keyword.
Pricing
from $0.70 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Remote job postings from We Work Remotely's public RSS feeds, as flat, typed dataset rows: job title, company, category, job type, region, allowed countries, posted and expiry dates, company website and headquarters, and the full description as both HTML and plain text. Pick categories, filter by keyword, run it on a schedule and send the dataset to Sheets, a webhook or your warehouse.
What you are paying for, honestly
The data comes from the RSS feeds We Work Remotely publishes itself. They need no login, cookie or API key; anyone can read the same XML. What this actor adds:
- Flat, typed rows. The company is split from the title (
Vercel: Site Engineerbecomescompanyandtitle), dates are ISO 8601, the Headquarters and website lines are lifted out of the description into their own columns, the country list is an array without flags, and the description is also given as clean text. - Several feeds in one run, deduplicated. The same posting found in two feeds, or listed twice in one feed, is one row and one charge.
- Keyword filter over title, company, category, skills and description, applied before the row cap, so jobs you filter out are not billed.
- Refusal handling. A refused (HTTP 403/429/5xx), timed-out or non-feed response is retried from a fresh proxy address; an unknown category is reported and skipped.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
categories | array | remote-design-jobs | Category feed slugs, one request each. Empty = the all-jobs feed. A full feed URL also works. |
keywords | array | - | Keep jobs mentioning any of these terms (case-insensitive). |
maxItems | integer | 100 | Most jobs for the whole run, after dedupe and keywords. Each job is billed, so this is a spending cap. |
proxyConfiguration | proxy | Apify proxy | We Work Remotely answered 200 from an Apify datacenter and a residential address on 2026-10-09; the proxy is there so a refused request can be retried from another address. |
Which feed is which (measured 2026-10-09):
- The all-jobs feed (leave
categoriesempty) is a sampler: 89 jobs, about the newest 10 per category. - Category feeds are deeper:
remote-sales-and-marketing-jobs89,all-other-remote-jobs72,remote-customer-support-jobs52,remote-full-stack-programming-jobs50,remote-design-jobs29, most others 18 to 25,remote-front-end-programming-jobs5. Feeds hold the board's current postings, not its history. - Slugs, as on the site:
remote-customer-support-jobs,remote-design-jobs,remote-product-jobs,remote-full-stack-programming-jobs,remote-front-end-programming-jobs,remote-back-end-programming-jobs,remote-devops-sysadmin-jobs,remote-sales-and-marketing-jobs,remote-management-and-finance-jobs, andall-other-remote-jobs(noremote-prefix on that one). Slugs are lower-cased for you. A slug We Work Remotely does not have is answered with an empty HTTP 301; the run logs it, skips it and carries on.
Output
One row per job posting.
job_id, guid, url job_id = last part of the URL; guid = the feed's guid (the URL)title, company "Vercel: Site Engineer" -> company "Vercel", title "Site Engineer"category, job_type "Design", "Full-Time" / "Contract"region, countries, state where the role is open (see below)skills the employer's tags, as one stringpublished_at, expires_at ISO 8601 with offset, e.g. 2026-10-08T07:31:34+00:00headquarters, company_url, company_logo_urldescription_html, description_textsource_feed "all" or the category slug that produced the row
Dataset views: Jobs and Jobs with descriptions.
Null means "not given", never a guess
Counts are over the 356 distinct postings read from 13 feeds on 2026-10-09.
companysplits at the first": "of the feed title, soIxDF - Interaction Design Foundation: Course Writer and Editor: UX, UI, and AIhas companyIxDF - Interaction Design Foundation. A title without that separator would givecompanynull and the whole text astitle; none of the 356 did. A company name that itself contains": "would be cut short.state(251 of 356 null) andskills(266 null) are empty on most postings. That is normal.skillsis left as one string, because the tags themselves contain "and" (Email Marketing and Automation) and cannot be split reliably.countriesis an empty list, not null, when the employer named none (269 of 356). When set it is the countries the employer will hire in, flags removed, as WWR writes them (United States of America,Korea (Republic of)). It narrowsregion, which is usuallyAnywhere in the Worldand sometimes a city orEMEA.headquarters(7 null) andcompany_url(205 null) are read from the first paragraph of the description, where We Work Remotely prints them; null when the employer left them out.company_logo_url(258 null) is sent on about one posting in four.job_typeis null when the feed sends an empty<type/>or no type tag, which happened for 1 of the 356 and for every posting of the legacyremote-programming-jobsfeed.published_atandexpires_atare null only if the feed omits the tag; the legacy feed omitsexpires_at.description_textomits the Headquarters/URL paragraph and the logo (they have their own columns).description_htmlis as sent, except that an inlinedata:image is emptied (src=""): one real posting embedded a 1.4 MB base64 PNG.- We Work Remotely lists a posting once per location variant under one URL
(measured: Tailscale's
Backend Engineer, Control Planewith Headquartersand again withRemote (United States)Remote (Canada), same guid, same feed). Rows are deduplicated by guid and the first copy wins, so the other variant is not returned.
Pricing
Pay per event: a small actor start fee plus one job scraped event per row. Set
maxItems to cap spend.
Limits
- Only what the feeds list: the current board, not archived postings, and not every posting on the site (the all-jobs feed in particular is a sample).
- A snapshot: postings expire (
expires_at) and are added through the day. - Not affiliated with We Work Remotely.