We Work Remotely Jobs Scraper: By Category, Region & Company avatar

We Work Remotely Jobs Scraper: By Category, Region & Company

Pricing

from $0.95 / 1,000 job posting returneds

Go to Apify Store
We Work Remotely Jobs Scraper: By Category, Region & Company

We Work Remotely Jobs Scraper: By Category, Region & Company

We Work Remotely jobs by category with no API key: a list of categories from the official feeds, one row per posting: title, company, region, type, posted date, link. Filter by region and company to see companies hiring remote right now, or compare hiring volume by category. Google Sheets, n8n, CSV.

Pricing

from $0.95 / 1,000 job posting returneds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

We Work Remotely Jobs Lookup

You name a category — programming, design, customer-support, or all for the combined feed — and this actor fetches We Work Remotely's own RSS feed for it and returns one clean row per posting: title, company, region, employment type, company headquarters, posted date, a permanent link and the full job description. No login, no API key, no scraping of rendered pages — every field comes straight out of WWR's official RSS, the same feed a browser or an RSS reader gets.

Who it's for

The accountable_eel catalogue sells company and hiring intelligence columns for outbound and recruiting. Each actor takes a list of identifiers and returns one flat, stably-named row per result: the shape a Clay table, an n8n workflow, or an AI agent can consume without post-processing. Pricing is pay-per-event: a fraction of a cent for a posting you actually got, and nothing at all for a category that comes back empty. No seat licence, no monthly minimum, no credit system to decode.

This actor is the "curated boards" corner of the catalogue's remote-jobs coverage, alongside remotive-jobs-lookup and himalayas-jobs-lookup — three independent official sources for the same niche, in case one board is thin on a given role or you just want a wider net. It sits next to the ATS lookups (greenhouse-jobs-lookup, lever-jobs-lookup and friends) that answer "what is this company hiring for" — this one answers "what's currently open in this category, anywhere".

Why this one

  • The RSS feed already has everything. WWR's per-category feed carries the full job description in every item, not just a title and a link — so there is no second per-posting request to make, no extra hop to pay for, and no risk of a detail page changing shape under you.
  • The description comes back as text, not raw markup. WWR escapes each posting's HTML into the feed rather than wrapping it in CDATA, and a few characters are escaped twice over. Both are decoded and the markup is stripped before the description reaches you — description reads as plain text, never as a page of <p> tags.
  • The boilerplate is separated out, not left sitting in the text. Every posting opens with a "Headquarters: ..." line and closes with a "To apply: <link>" paragraph. The headquarters line becomes its own headquarters field; the apply paragraph is dropped, since it only ever repeats the same link already sitting in the row's own link field.
  • You are never billed for the same posting twice. WWR's "programming" feed is a superset of full-stack-programming / front-end-programming / back-end-programming, and the all feed is a superset of every category — request several overlapping category lines in one run and, by default, each posting is still counted and charged exactly once.
  • Twelve categories, curl-verified one at a time. Every category slug this actor accepts was checked with a live request on 2026-08-24 (200, real <item> entries) — nothing here is a slug guessed from a URL pattern and left untested. A category that doesn't resolve tells you so, with the full list of ones that do, instead of silently returning nothing.

What you get

One row per job posting by default. (Turn off "One row per job posting" in the Input tab to get one row per category instead, with the whole posting list nested in jobs.)

FieldType / formatDescription
querytextThe category line you passed in, unchanged.
foundbooleantrue if the category resolved to a real feed. false rows are never charged.
statustextOK, BAD_FORMAT (not a recognised category), or BLOCKED.
categoryQueriedtextThe category slug actually fetched, after normalizing what you typed.
categoryLabeltextThe category's human-readable label, e.g. "Customer Support".
jobCountnumberHow many postings this category returned after your filters — this is exactly what you're charged for.
truncatedbooleantrue if more postings were available than "Most postings to return per category" allowed.
jobsarrayThe full posting list. Present in every row; it's what gets expanded into separate rows in "one row per posting" mode.
titletextJob title, with the company name split off.
companyNametextHiring company, read from the "Company: Job Title" format WWR uses in every posting's title.
categorytextThis specific posting's own WWR category — useful when you queried all or an aggregate like programming, since it can hold postings from several sub-categories.
regiontextWhere WWR says the role can be worked from, e.g. "Anywhere in the World", "USA Only".
country / statetextPresent on newer postings only; empty string on older ones rather than missing.
skillsarrayComma-separated skill tags WWR attaches to some postings, e.g. ["Figma"]. Empty array when WWR doesn't tag any.
typetextEmployment type, e.g. "Full-Time" — present on newer postings only.
headquarterstextThe company's stated headquarters, read out of the posting's own "Headquarters:" line.
postedAtdate (ISO)The posting date, converted from WWR's RSS pubDate.
linklinkPermanent link to the posting on weworkremotely.com.
guidtextWWR's own posting identifier — stable, and what deduplication keys on.
logoUrlimageCompany logo image URL, when WWR includes one.
descriptiontextThe full posting text, as plain text — HTML stripped, entities decoded, headquarters line and apply-link paragraph removed.
descriptionSnippettextThe first ~320 characters of description, cut at a word boundary.
scrapedAtdate (ISO)When this actor fetched the row.

A category that isn't recognised comes back as a single found: false row naming the categories that are, and is never charged.

Pricing

  • Job posting returned: $1.9 per 1,000 job postings

Plus a $0.003 start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.

You're charged per posting returned, not per category — a category that returns 12 postings costs twelve, a category that returns none costs nothing, and an unrecognised category line costs nothing. Because you pay per posting, "Most postings to return per category" is your budget control.

How to use

  1. In the Apify Console. Open the actor page and click Start — the categories field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~weworkremotely-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"categories":["programming","design","customer-support"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

One category per line — programming, full-stack-programming, front-end-programming, back-end-programming, devops-sysadmin, design, customer-support, sales-and-marketing, product, management-and-finance, all-other, or all (also what a blank line means). Common shorthand works too — devops, frontend, sales, support all resolve to the right feed.

🎯 Narrow the results — applied here, to the postings after they arrive, since WWR's RSS has no query parameters of its own to filter by:

InputWhat it does
maxJobsPerQueryMost postings to return per category. Default 200.
titleKeywordsKeep only titles containing one of these — ["engineer","designer"].
excludeTitleKeywordsDrop titles containing one of these — ["intern","senior"]. Applied after the include list.
companyKeywordsKeep only postings from companies whose name contains one of these.
regionKeywordsKeep only postings whose region contains one of these — e.g. ["USA"], ["Europe"].
skipDuplicateJobsOn by default. Each posting is returned, and billed, once per run even if two category lines overlap.

Input

{
"categories": [
"programming",
"design",
"customer-support"
]
}

One category per line — e.g. "programming", "design", "customer-support", "sales-and-marketing". Leave a line blank, or write "all", for the combined feed of every category. Accepted formats: programming, design, all.

Output

queryfoundstatuscategoryQueriedcategoryLabeljobCounttruncatedjobstitlecompanyNamecategoryregioncountrystateskillstypeheadquarterspostedAtlinkguidlogoUrldescriptiondescriptionSnippetscrapedAt
customer-supporttrueOKcustomer-supportCustomer Support29false<all postings found (full list)>IT Support SpecialistWebflowCustomer SupportAnywhere in the World[]Full-TimeArgentina Remote2026-10-03T07:31:06.000Zhttps://weworkremotely.com/remote-jobs/webflow-it-support-specialisthttps://weworkremotely.com/remote-jobs/webflow-it-support-specialistHeadquarters: Argentina Remote Webflow is the agentic web marketing platform for modern marketing teams, helping organizations build, manage, and optimize high-performing web experiences that driv...Headquarters: Argentina Remote Webflow is the agentic web marketing platform for modern marketing teams, helping organizations build, manage, and optimize high-performing web experiences that drive...2026-10-05T06:10:15.733Z

A miss comes back as a row with "found": false and is never charged.

This actor reads public data only — We Work Remotely's own published RSS feeds, the same ones any browser, RSS reader, or search engine can request without an account. It does not log in, does not accept or store any WWR credential, and has no input field in which you could give it one.

It reads no private data — only what a hiring company chose to publish in its own job posting: the role, the company, the region, and the posting text. It does not collect names, email addresses, or contact details of individuals. You are responsible for how you use the results; check We Work Remotely's own terms before putting heavy, scheduled use of this actor into production.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~weworkremotely-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"categories":["programming","design","customer-support"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~weworkremotely-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"categories":["programming","design","customer-support"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~weworkremotely-jobs-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"categories":["{{category}}"]}, mapping the row's category into the categories array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "We Work Remotely Jobs API: Remote Jobs by Category" — the agent will find and run this actor.