# Global Job Aggregator — LinkedIn, Reed, Talent.com & More (`0xgollum/global-job-aggregator`) Actor

Search job postings across 5 job boards (LinkedIn, Reed, Talent.com, RemoteOK, WeWorkRemotely) in one run, with keyword, location, salary, and job-type filters. No login, no API key.

- **URL**: https://apify.com/0xgollum/global-job-aggregator.md
- **Developed by:** [0xGollum](https://apify.com/0xgollum) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$20.00 / 1,000 job listings

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/platform/actors/running/actors-in-store#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

## Global Job Aggregator — LinkedIn, Reed, Talent.com & More

Search job postings across 5 job boards in one run — **LinkedIn, Reed, Talent.com, RemoteOK, WeWorkRemotely** — with keyword, location, salary, and job-type filters. No login, no API key, no cookies.

### Why 5 sources in one actor

Job search demand is huge, but every existing scraper on the Store sticks to a single platform. This actor covers a broad country range (global via LinkedIn/Talent.com, UK via Reed, remote-tech via RemoteOK/WeWorkRemotely) and every level, from entry-level and manual trades to executive roles — in one run, with the same filters applied everywhere.

### Input

- **Job title / keywords** (required) — e.g. `developer`, `baker`, `CEO`.
- **Locations** — cities/countries, used for LinkedIn, Reed, and Talent.com. RemoteOK and WeWorkRemotely are remote-only and ignore this field.
- **Sources** — pick a subset of `linkedin`, `reed`, `talentcom`, `remoteok`, `weworkremotely`, or leave empty to search all 5.
- **Minimum / maximum salary** — filters on an annualized estimate (hourly/weekly/monthly figures are converted to a yearly equivalent so they compare fairly across sources). Jobs with no parseable salary are excluded when a salary filter is set.
- **Job types** — `full-time`, `part-time`, `contract`, `temporary`, `internship`, `freelance`, matched when the listing mentions it.
- **Max results per source**, **Request timeout** — advanced tuning.

### Output (one row per job)

```json
{
  "source": "linkedin",
  "title": "Senior Backend Developer",
  "company": "Acme Inc",
  "location": "London, England, United Kingdom",
  "url": "https://www.linkedin.com/jobs/view/...",
  "posted_at": "2026-07-20",
  "salary_text": "£50,000 - £70,000 per annum",
  "salary_min": 50000,
  "salary_max": 70000,
  "job_type": "Full-Time"
}
```

`salary_text` keeps the original wording as posted. `salary_min`/`salary_max` are annualized estimates used for filtering — not present when the listing had no parseable salary.

### Coverage per source

| Source | Country | Job types |
|---|---|---|
| LinkedIn | Global | All sectors, all levels |
| Reed | United Kingdom | All sectors, all levels |
| Talent.com | Global (broad aggregator) | All sectors, all levels |
| RemoteOK | Global, remote-only | Mostly tech/knowledge work |
| WeWorkRemotely | Global, remote-only | Mostly tech/knowledge work |

### Notes

- Pricing is pay-per-result: you're charged per job listing returned, nothing for empty runs.
- Reed's own search occasionally broadens results to closely-related roles (e.g. a "baker" search including some catering/chef roles) — that's Reed's own search relevance, not this actor.
- Sources that require a login or block automated access outright (Indeed, Glassdoor, Monster, ZipRecruiter, Adzuna) are intentionally not included.

# Actor input Schema

## `keywords` (type: `array`):

Job titles or skills to search for, e.g. 'developer', 'street sweeper', 'CEO'. Matched against title and company on every source.

## `locations` (type: `array`):

Cities/countries to search on LinkedIn, Reed, and Talent.com (e.g. 'New York', 'London', 'Germany'). Leave empty to search without a location filter. RemoteOK and WeWorkRemotely are remote-only and ignore this field.

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

Which job boards to search. Leave empty to search all 5: linkedin, reed, talentcom, remoteok, weworkremotely.

## `min_salary` (type: `number`):

Only keep jobs with a parseable salary at or above this amount (same currency as the listing, no conversion). Jobs with no parseable salary are excluded when this is set.

## `max_salary` (type: `number`):

Only keep jobs with a parseable salary at or below this amount. Jobs with no parseable salary are excluded when this is set.

## `job_types` (type: `array`):

Filter by employment type when detectable in the listing, e.g. 'full-time', 'part-time', 'contract', 'internship', 'freelance'. Leave empty for all types.

## `max_results_per_source` (type: `integer`):

Cap on how many jobs to keep from each individual source, before filtering.

## `request_timeout_secs` (type: `integer`):

HTTP request timeout.

## Actor input object example

```json
{
  "keywords": [
    "developer"
  ],
  "locations": [
    "New York"
  ],
  "max_results_per_source": 30,
  "request_timeout_secs": 30
}
```

# 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 = {
    "keywords": [
        "developer"
    ],
    "locations": [
        "New York"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("0xgollum/global-job-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 = {
    "keywords": ["developer"],
    "locations": ["New York"],
}

# Run the Actor and wait for it to finish
run = client.actor("0xgollum/global-job-aggregator").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "developer"
  ],
  "locations": [
    "New York"
  ]
}' |
apify call 0xgollum/global-job-aggregator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=0xgollum/global-job-aggregator",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pVhbDZ9hPD6c0hHbe/builds/FcotqCSx4CWD9dGNc/openapi.json
