# Remote Jobs Aggregator — Remotive & We Work Remotely (`gochujang/remote-jobs-aggregator`) Actor

Aggregate remote job listings from Remotive.io and We Work Remotely. Filter by category, keyword, company, or job type. Returns job title, company, location, salary, skills, and apply link. Combined search across top remote job boards. No API key.

- **URL**: https://apify.com/gochujang/remote-jobs-aggregator.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Developer tools
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 job fetcheds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Remote Jobs Aggregator

**Remote Jobs Aggregator** collects job listings from **Remotive.io** and **We Work Remotely (WWR)** in a single run — returning normalized records with title, company, category, salary, tags, and apply URL. Filter by keyword and category. No API key required. $0.001/job.

Two of the top remote-only job boards in one place: Remotive's API for structured software/design/marketing roles, and WWR's RSS feed for thousands of additional listings — deduplicated and normalized into one clean schema.

***

### Why use Remote Jobs Aggregator?

1. **Build a private job alert** — Schedule daily runs with `keyword: "python"` or `"machine learning"`. Compare yesterday's results against today's dataset to get only new postings — your own targeted job alert without paying for premium services.
2. **Remote job market research** — Track which skills appear most in `tags` across hundreds of postings. `python`, `typescript`, `aws`, `kubernetes` — frequency tells you what the market actually values right now.
3. **Salary benchmarking** — Collect `salary` fields across roles matching your title and stack. Remote job boards are more likely to post salary ranges than traditional job boards.
4. **Competitive hiring intelligence** — Monitor which companies are actively hiring in your domain. Surge in hiring from a specific company signals growth (or poaching opportunity).
5. **Content aggregation** — Power a remote jobs newsletter, job board, or Slack bot with fresh data from two authoritative sources in one API call.

***

### How to use

1. Open the actor on Apify Store and click **Try for free**.
2. Set `keyword` to filter by skill, technology, or role (e.g. `"python"`, `"react"`, `"data scientist"`).
3. Set `category` to narrow to a job function (e.g. `"software-dev"`, `"design"`).
4. Set `sources` and `maxResults` as needed.
5. Click **Start**. Returns normalized job records from both boards.

***

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | — | Filter by keyword in title, company, tags, category |
| `category` | string | — | Job category to filter (Remotive-specific) |
| `sources` | string\[] | `["remotive","wwr"]` | Job boards to include |
| `maxResults` | integer | `100` | Maximum results per source (1–500) |

#### Supported categories

| Value | Description |
|-------|-------------|
| `software-dev` | Software engineering and development |
| `devops` | DevOps, SRE, infrastructure |
| `design` | Product design, UX/UI |
| `marketing` | Marketing and growth |
| `sales` | Sales and business development |
| `product` | Product management |
| `finance` | Finance and accounting |
| `customer-support` | Customer success and support |

***

### Output

```json
{
  "source": "remotive",
  "job_id": "1234567",
  "title": "Senior Python Engineer",
  "company": "Acme Corp",
  "category": "Software Development",
  "job_type": "full_time",
  "location_requirement": "Worldwide",
  "salary": "$120,000 – $160,000",
  "tags": ["python", "django", "postgres", "aws"],
  "url": "https://remotive.io/remote-jobs/software-dev/senior-python-engineer-1234567",
  "posted_at": "2026-08-30T10:00:00",
  "fetched_at": "2026-09-01T08:00:00+00:00"
}
```

#### Output fields

| Field | Description |
|-------|-------------|
| `source` | `remotive` or `wwr` |
| `title` | Job title |
| `company` | Company name |
| `job_type` | `full_time`, `contract`, `part_time`, etc. |
| `location_requirement` | Location constraint or `Worldwide` |
| `salary` | Salary range string (if listed — not all postings include it) |
| `tags` | Skills and technology keywords |
| `posted_at` | Original posting date |

***

### Cost estimation

**Pay-Per-Event: $0.001 per job returned.**

| Use case | Jobs | Estimated cost |
|----------|------|----------------|
| 100-job quick scan | 100 | $0.10/run |
| 500 jobs from both boards | 500 | $0.50/run |
| Daily new postings check | ~50 new | ~$0.05/day |
| Weekly market snapshot | 500 | $0.50/week |

***

### FAQ

**Is keyword search applied to WWR results?**
Remotive's API supports native keyword search server-side. WWR's RSS feed doesn't have keyword filtering, so the actor downloads all WWR results and filters client-side. This means `maxResults` applies after keyword filtering for Remotive but the download may be larger for WWR.

**Are results deduplicated across sources?**
No — Remotive and WWR use different job IDs and both may list the same company's posting. Deduplicate in your code by matching `company + title` if cross-source deduplication matters.

**How current is the data?**
Both sources are updated throughout the day. WWR's RSS feed reflects postings within hours. Remotive API reflects current active listings. Run daily for fresh data.

**Can I get the full job description?**
The API returns title, company, tags, and category. For the full description, follow the `url` link.

***

### Related actors

- [Tech News Aggregator](https://apify.com/gochujang/tech-news-aggregator) — Tech industry news (context for job market trends)
- [Startup Funding Tracker](https://apify.com/gochujang/startup-funding-tracker) — Companies that just raised = likely hiring soon
- [GitHub Repo Stats Tracker](https://apify.com/gochujang/github-repo-stats) — Check a company's GitHub activity before applying

### Feedback

If this actor helps your job search or research, a quick review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/remote-jobs-aggregator#reviews)

***

**Keywords:** remote jobs aggregator, remote work scraper, Remotive jobs, We Work Remotely scraper, remote job listings, work from home jobs, remote developer jobs, remote job board, job listing scraper, salary remote jobs, remote job search, remote hiring tracker, job title extractor, company job monitor

# Actor input Schema

## `keyword` (type: `string`):

Filter by keyword (e.g. 'python', 'react', 'machine learning')

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

Job category (e.g. 'software-dev', 'design', 'marketing')

## `sources` (type: `array`):

Job boards to include. Valid values: 'remotive', 'wwr'. Default: both.

## `maxResults` (type: `integer`):

Maximum number of job listings to return per source (1–500).

## Actor input object example

```json
{
  "sources": [
    "remotive",
    "wwr"
  ],
  "maxResults": 100
}
```

# Actor output Schema

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

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/remote-jobs-aggregator").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/remote-jobs-aggregator").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 '{}' |
apify call gochujang/remote-jobs-aggregator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/remote-jobs-aggregator"
        }
    }
}
```

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/wDz8bVFmvC10nMR7v/builds/nlxN8zS8Jqk9CocR2/openapi.json
