# We Work Remotely Jobs Scraper (`parseforge/weworkremotely-scraper`) Actor

Scrapes remote job listings from We Work Remotely by category. Returns each listing as a flat row with title, company, description, and apply link.

- **URL**: https://apify.com/parseforge/weworkremotely-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 3 total users, 0 monthly users, 89.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### We Work Remotely Jobs Scraper

**Scrape remote job listings from We Work Remotely by category, up to a million per run.** Each listing includes the job title, company, full description, and direct apply link. Export to CSV, JSON, Excel, or XML.

We Work Remotely is one of the largest remote work communities, but manually browsing categories for new listings is slow. This We Work Remotely jobs scraper reads the public job board directly, filtering by category, and returns each matching listing in a clean, flat schema ready for analysis.

| Who uses it | What they scrape We Work Remotely for |
|---|---|
| Job seekers | Monitor new remote programming or design jobs in one feed without visiting the site daily. |
| Recruiters | Build a private pipeline of remote job openings to match with candidates. |
| Market analysts | Track which companies are hiring remotely and for which roles over time. |

### What it does

This Actor collects remote job listings from We Work Remotely by category and returns each one as a flat row.

- 🏷️ **Category filter:** target a specific job board like Programming, Design, or Sales & Marketing.
- 🔗 **Direct apply links:** every listing includes the URL to the original job post on We Work Remotely.
- 📦 **Structured output:** a consistent schema with title, company, description, and more, ready for spreadsheets.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with We Work Remotely data

**💼 Build a personal job feed.**

A developer runs the scraper daily for the Programming category and pushes new listings to a Google Sheet to review at a glance.

**📊 Analyze remote hiring trends.**

A market researcher collects all listings weekly to identify which skills and roles are growing in remote work.

**🎯 Source leads for recruitment.**

A recruiter scrapes the Sales & Marketing category to find companies actively hiring and reach out with candidate profiles.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key needed** | Reads the public job board directly, no registration required. |
| **Category targeting** | Focus on one niche like Copywriting or DevOps/Sysadmin. |
| **Scalable collection** | Collect up to a million listings in a single run. |

### How it compares

No other Store actor targets We Work Remotely the same way, so the honest comparison is with the alternatives teams actually weigh.

| | We Work Remotely Jobs Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When We Work Remotely changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor by selecting a job category slug, and set a maximum number of listings to collect per run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "maxItems": 10
}
```

A larger pull:

```json
{
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.021 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [We Work Remotely Jobs Scraper](https://apify.com/parseforge/weworkremotely-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to We Work Remotely through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/weworkremotely-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**The Actor returns fewer results than expected.**

Check the 'Maximum job listings' input. If it is set to a low number, the Actor stops early. Also, We Work Remotely only shows a finite number of listings per category.

**I got an error or timeout.**

The site might be temporarily slow. Try increasing the run's timeout in the advanced settings, or retry the run after a few minutes.

**The output is missing the job description.**

Some listings may have very short or empty descriptions. Verify a few known listings on the live site to confirm the data is present there.

**How do I scrape all categories in one go?**

The Actor is designed for one category per run. To collect all jobs, run the Actor once with the '(All categories)' option selected.

### FAQ

| Question | Answer |
|---|---|
| Can I scrape multiple categories at once? | The Actor processes one category per run. To scrape multiple categories, run the Actor once for each category slug you need. |
| Does this scraper require a We Work Remotely account? | No. It reads the publicly available job listings, so no login or account is needed. |
| What data fields are included in the output? | Each row includes the job title, company name, full job description, category, and the direct URL to the listing on We Work Remotely. |
| How do I find the correct category slug? | The input editor provides a dropdown list of all available categories with their slugs, such as 'remote-programming-jobs' for Programming. |
| Is it possible to filter by keywords within job descriptions? | The Actor filters by category at the source. For keyword filtering, you can process the output dataset with a tool like Apify's Dataset API or a downstream integration. |
| How often can I run this Actor? | You can schedule it to run as often as you like, from once a month to every few minutes, using Apify's built-in scheduler. |
| Can I get the results in an RSS feed? | The Actor exports to standard formats like JSON and CSV. You can use an Apify integration or a small script to convert the dataset into an RSS feed. |
| What is the maximum number of listings I can scrape? | You can set the 'Maximum job listings' input up to 1,000,000, which covers the full history of listings available on the site. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by We Work Remotely Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `maxItems` (type: `integer`):

How many job listings to collect per run.

## `category` (type: `string`):

WWR category slug.

## Actor input object example

```json
{
  "maxItems": 10,
  "category": ""
}
```

# Actor output Schema

## `results` (type: `string`):

Scraped records

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/weworkremotely-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/weworkremotely-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/weworkremotely-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/weworkremotely-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/beQzK4z7SKQOeECHq/builds/9Awq5rWKMteovUKq9/openapi.json
