# 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
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

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

# 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/NvVz1Zegu45yCtg8J/openapi.json
