We Work Remotely Jobs Scraper — Remote Jobs API avatar

We Work Remotely Jobs Scraper — Remote Jobs API

Pricing

from $2.00 / 1,000 remote job records

Go to Apify Store
We Work Remotely Jobs Scraper — Remote Jobs API

We Work Remotely Jobs Scraper — Remote Jobs API

Export We Work Remotely jobs to JSON or CSV: title, company, region, skills, category, job type, description and dates. About USD 2.50 per 1,000 remote jobs.

Pricing

from $2.00 / 1,000 remote job records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Security

Limited permissions

Share

We Work Remotely Jobs Scraper turns the public We Work Remotely job feeds into clean records with title, company, remote region, country, skills, category, job type, full description, posting and expiry dates. It is built for recruiters, remote-job newsletters and alert bots, job-board operators and AI agents, and costs about USD 2.50 per 1,000 remote jobs on the FREE tier (USD 2.00 on GOLD), plus a small start fee.

It reads the RSS feeds We Work Remotely publishes for its job board, filters and deduplicates the jobs, and writes one schema-validated row per job. No login, cookies or browser are involved.

What data does We Work Remotely Jobs Scraper return?

Each dataset row is one We Work Remotely job. Source fields left blank come back as null or an empty list.

FieldWhat you get
jobId, jobUrlStable listing slug and the We Work Remotely job URL
title, companyJob title and hiring company
region, country, stateRemote eligibility as published, for example Anywhere in the World
category, employmentTypeCategory such as Full-Stack Programming and type such as Full-Time or Contract
skillsSkill labels when the employer added them, for example Node.js, React
headquarters, companyWebsite, logoUrlCompany details from the listing header
descriptionText, descriptionHtmlClean text, plus the original HTML when includeDescriptionHtml is on
postedAt, expiresAt, isExpiredPosting date, expiry date and a calculated expired flag
sourceFeedUrl, scrapedAtWhich feed the job came from and when it was read

SUMMARY and OUTPUT key-value records report the outcome (data, empty, rejected, blocked, failed), feeds requested and read, parsed and delivered counts, filters and warnings.

How do I scrape We Work Remotely jobs?

Run it with no changes to get the newest jobs from the main feed, or add filters:

{
"feedUrls": ["https://weworkremotely.com/categories/remote-programming-jobs.rss"],
"searchTerms": ["Python", "TypeScript"],
"regions": ["Anywhere in the World"],
"employmentTypes": ["Full-Time"],
"postedWithinDays": 30,
"maxResults": 50,
"includeDescriptionHtml": false
}
InputWhat it does
feedUrls1–10 We Work Remotely .rss URLs; default https://weworkremotely.com/remote-jobs.rss
searchTermsKeep jobs mentioning any phrase in title, company, location, category, skills or description
categories, employmentTypesExact, case-insensitive match on category and job type
regionsMatch any phrase in region, country or state
skillsMatch any skill label; jobs with no skill labels never match a non-empty filter
postedWithinDaysKeep jobs posted in the last 1–365 days
maxResultsUnique jobs to return after filters, 1–1,000 (the form starts at 10; API calls that omit it use 100)
includeDescriptionHtmlAlso keep the HTML description (default true)
maxRequestRetriesRetries for 429, 5xx and network errors, 0–5 (default 2)

How many remote jobs are on the We Work Remotely job board feeds?

The main feed held 96 jobs on 2026-10-27, about ten of the newest per category, posted over the previous three months. Category feeds go deeper in one area; the programming feed held 25 jobs the same day. Add up to 10 feeds in one run: jobs that appear in several feeds are written once.

When should I use it, and when not?

Use it when you want a structured copy of current We Work Remotely jobs for a newsletter, Slack or email alert, a remote-jobs board, hiring-trend research, or an AI agent that answers "who is hiring remotely for X".

Use another Actor when:

Use it from an AI assistant

We Work Remotely Jobs Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/we-work-remotely-jobs-scraper, then ask, for example: "Find full-time remote Python jobs on We Work Remotely posted this week that are open anywhere in the world."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/we-work-remotely-jobs-scraper').call({
searchTerms: ['Python'],
postedWithinDays: 7,
maxResults: 25,
includeDescriptionHtml: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((job) => `${job.title} | ${job.company} | ${job.region} | ${job.jobUrl}`));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/we-work-remotely-jobs-scraper").call(
run_input={"categories": ["Full-Stack Programming"], "maxResults": 25}
)
for job in client.dataset(run.default_dataset_id).iterate_items():
print(job["title"], job["company"], job["postedAt"], job["jobUrl"])

What does the output look like?

Two jobs from the main feed on 2026-10-27, description shortened:

[
{
"jobId": "vested-inc-senior-software-engineer-1",
"title": "Senior Software Engineer",
"company": "Vested, Inc.",
"region": "Anywhere in the World",
"country": "🇺🇸 United States of America",
"state": "Florida",
"skills": ["MongoDB", "Node.js", "React", "TypeScript"],
"category": "Full-Stack Programming",
"employmentType": "Full-Time",
"headquarters": "United States",
"companyWebsite": "https://vested.co/",
"descriptionText": "Headquarters: United States URL: https://vested.co About the role We're looking for a Senior Software Engineer…",
"descriptionHtml": null,
"postedAt": "2026-10-26T20:12:46.000Z",
"expiresAt": "2026-11-25T20:12:46.000Z",
"isExpired": false,
"logoUrl": "https://wwr-pro.s3.amazonaws.com/logos/0171/1089/logo.gif",
"jobUrl": "https://weworkremotely.com/remote-jobs/vested-inc-senior-software-engineer-1",
"sourceFeedUrl": "https://weworkremotely.com/remote-jobs.rss"
},
{
"jobId": "tailscale-head-of-communications",
"title": "Head of Communications",
"company": "Tailscale",
"region": "Anywhere in the World",
"skills": [],
"category": "Sales and Marketing",
"employmentType": "Full-Time",
"companyWebsite": "https://tailscale.com/",
"postedAt": "2026-10-26T20:09:42.000Z",
"jobUrl": "https://weworkremotely.com/remote-jobs/tailscale-head-of-communications"
}
]

Pricing: how much does it cost to scrape We Work Remotely?

The Actor uses pay-per-event pricing with platform usage included. Each unique job written to the dataset is one event; jobs removed by filters or deduplication are not charged.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Remote job record (one dataset row)USD 0.002501USD 0.002438USD 0.002375USD 0.002
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005

Worked totals on the FREE tier at the default 256 MB memory (one start event):

  • One job: 1 × USD 0.002501 + USD 0.006251 = about USD 0.0088
  • The whole main feed, 96 jobs on 2026-10-27: 96 × USD 0.002501 + USD 0.006251 = about USD 0.25

If no feed can be read, or nothing matches, only the start fee applies. When your run's spending limit is lower than the matching jobs, the Actor trims the batch to fit before writing.

What are the limits?

  • Feed depth: a run sees only jobs currently in the feeds you choose, not older listings.
  • Sparse fields: skills were filled for 22 of 96 jobs and company websites for 24 of 96 on 2026-10-27; use searchTerms rather than skills for broad matching.
  • No salaries, applicant data or apply forms; the feeds do not include them, and the Actor never invents them.
  • Errors: temporary errors are retried with backoff. A failed feed adds a warning while results from other feeds are kept; if every feed fails, the run reports rejected (not an RSS URL), blocked or failed and writes no rows.

FAQ

Does We Work Remotely have an API?

We Work Remotely publishes RSS feeds for its job board, and this Actor turns them into JSON you can call through the Apify API, the JavaScript or Python client, or an MCP client. It is an independent tool, not affiliated with We Work Remotely.

How many jobs does one run return?

Up to maxResults (1–1,000), limited by what your feeds hold: 96 jobs in the main feed on 2026-10-27. Add category feeds to reach more.

Can I get only jobs posted this week?

Yes. Set postedWithinDays to 7.

Can I scrape several We Work Remotely categories at once?

Yes. Put up to 10 category .rss URLs in feedUrls; duplicates across feeds are removed by jobId.

Does it include salaries?

No. We Work Remotely's feeds do not publish salary fields.

Can I export the jobs to CSV or Excel?

Yes. Download the dataset from Apify Console as CSV, Excel, JSON or XML, or read it through the API.

Job-board data from the same developer:

We Work Remotely Jobs Scraper reads public RSS feeds only. It does not log in, solve challenges or collect applicant data. Follow We Work Remotely's terms, link back to the original posting, keep only what you need, and do not republish full descriptions where that would infringe the employer's rights.

Last verified: 2026-10-27