# Working Nomads Remote Job Listings Scraper \[🏷️ ON SALE 🎉] (`scrapers_lat/working-nomads-scraper`) Actor

Extract global remote jobs from Working Nomads: title, company, category, tags, location and full description. Output to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/working-nomads-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Jobs, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

<!-- actor-banner -->
[![Working Nomads Remote Job Listings Scraper](https://scrapers.lat/banners/working-nomads-scraper.png)](https://console.apify.com/actors/SO9tQFBbuEblCEwlP/input)
<!-- /actor-banner -->

## Working Nomads Scraper

> Extract remote jobs from Working Nomads, the global remote-work board curating fresh listings across development, marketing, design, sales and more

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Worldwide-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>11 fields</strong><br>per record</td>
<td align="center"><strong>Worldwide</strong><br>coverage</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
</tr></table>

<br>

### What you get

Each record is one remote job from the Working Nomads board, with the hiring company, category, skill tags, the regions the role is open to and the full job description as clean plain text, ready for analysis or import into your own pipeline.

- **imageUrl\***: job image taken from the listing's detail page
- **title**: job title
- **url**: link to the job, upgraded to its clean canonical page when detail pages are fetched
- **companyName**: name of the hiring company
- **category**: high-level category such as Development, Marketing, Design or Sales
- **location**: regions or countries the role is open to, such as Latin America, Europe or India
- **tags**: list of skill and role tags assigned to the job
- **source**: always Working Nomads, the board the job was collected from
- **postedAt**: when the job was published
- **description**: full job description as clean plain text
- **observedAt**: when this listing was last seen by the scraper

\* Fields marked with an asterisk are filled from the job detail page and are only present when Fetch Detail Pages is enabled.

### Who is it for

| Use case | Who benefits |
|---|---|
| Build a remote-jobs aggregator or newsletter | Job board operators and content creators |
| Track which skills and roles companies hire for remotely | Market-research and talent-analytics teams |
| Source candidates open to specific regions | Recruiters and talent sourcers |
| Monitor hiring activity by category over time | People-analytics and strategy teams |
| Feed remote roles into a job-matching model | Data scientists and product teams |

### Frequently Asked Questions

**How many remote jobs can I scrape from Working Nomads?**
The Working Nomads feed exposes the newest remote listings curated across every category. Set Max Items to control how many you collect, and leave the filters empty to keep the freshest jobs across the whole board.

**Does the scraper cover jobs worldwide?**
Yes. Working Nomads is a global remote-work board, so the listings span companies hiring across Latin America, Europe, North America, Asia and beyond. Each record includes the regions a role is open to.

**Can I filter by category, tag or location?**
Yes. You can keep only jobs in a category such as Development or Marketing, jobs that carry a specific skill tag such as react or copywriting, or jobs whose location text matches a region such as Latin America or Europe. You can also add a keyword that is matched against the title, company, category, tags and description.

**Why do some jobs have no image?**
The job image comes from each listing's detail page, and not every employer provides one. The scraper never invents an image, it returns null when the source has none, and the image is only collected when Fetch Detail Pages is enabled.

**What happens if a request fails?**
The scraper retries each request several times before giving up. If the feed still cannot be fetched, it records a single error entry instead of crashing, so the run finishes and you keep every job collected up to that point.



<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template:

- [Working Nomads Remote Blockchain Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-blockchain-jobs): Scrape remote blockchain, crypto and web3 jobs from Working Nomads. Get job titles, companies, locations, tags and apply links in structured JSON.
- [Working Nomads Remote Customer Success Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-customer-success-jobs): Scrape remote customer success and client success jobs from Working Nomads. Get titles, companies, locations, tags and apply URLs in clean JSON.
- [Working Nomads Remote Data Analyst Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-data-analyst-jobs): Scrape remote data analyst and data science jobs from Working Nomads. Get job titles, companies, locations, tags and apply links in structured JSON.
- [Working Nomads Remote DevOps Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-devops-jobs): Scrape remote DevOps and infrastructure jobs from Working Nomads. Get titles, companies, locations, tags, salaries and apply URLs in clean JSON.
- [Working Nomads Remote Online Teaching Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-online-teaching-jobs): Scrape remote online teaching and education jobs from Working Nomads, including ESL and tutoring roles. Get titles, companies, locations and apply URLs.
- [Working Nomads Remote QA & Testing Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-qa-testing-jobs): Scrape remote QA and quality assurance testing jobs from Working Nomads. Get titles, companies, locations, tags and apply URLs in clean JSON.
- [Working Nomads Remote Sales Jobs Scraper](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-sales-jobs): Scrape remote sales and account management jobs from Working Nomads. Get job titles, companies, locations, tags and apply links in structured JSON.
- [Working Nomads Design Jobs](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-design-jobs): Working Nomads Design Jobs
- [Working Nomads Development Jobs](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-development-jobs): Working Nomads Development Jobs
- [Working Nomads Marketing Jobs](https://apify.com/scrapers_lat/working-nomads-scraper/examples/working-nomads-marketing-jobs): Working Nomads Marketing Jobs

<!-- /example-tasks -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [Computrabajo Job Listings Scraper](https://apify.com/scrapers_lat/computrabajo-scraper): Extract job listings from Computrabajo across 19 LATAM countries. Scrape titles, companies...
- [Workable Job Listings Scraper](https://apify.com/scrapers_lat/workable-scraper): Extract public job listings from any Workable-hosted company careers board by account name or board...
- [Talent.com Job Listings Scraper](https://apify.com/scrapers_lat/talent-jobs-scraper): Extract public Talent.com job listings by keyword, location and country: title, company, salary...
- [GetOnBrd Tech Jobs & Salary Scraper](https://apify.com/scrapers_lat/getonbrd-scraper): Extract LATAM tech jobs and salary data from GetOnBrd. Scrape job title, company, category...
- [LinkedIn Job Listings Scraper](https://apify.com/scrapers_lat/linkedin-jobs-scraper): Extract public LinkedIn job postings by keyword and location worldwide. Scrape job title, company...
- [Dice Tech Job Listings Scraper](https://apify.com/scrapers_lat/dice-jobs-scraper): Extract public Dice.com tech job postings by keyword and location: title, company, location...

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with Working Nomads. It only accesses data that is publicly available on the platform. Use it in accordance with Working Nomads' terms of service.

# Actor input Schema

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

Maximum number of remote jobs to collect. Optional.
## `withDetails` (type: `boolean`):

When enabled, the scraper opens each job's detail page to upgrade the URL to its clean canonical link and add the job image. When disabled, only the feed-level fields are collected (faster).
## `keyword` (type: `string`):

Free-text term to match against the job title, company name, category, tags and description (case-insensitive). Leave empty to collect all jobs in feed order. The Working Nomads feed has no server-side search, so this filter is applied by the scraper.
## `category` (type: `string`):

Keep only jobs whose category matches this value.
## `tag` (type: `string`):

Keep only jobs that include this tag (case-insensitive, matched against the job's tag list). Example: react, project management, copywriting.
## `location` (type: `string`):

Keep only jobs whose location text contains this term (case-insensitive). Example: Latin America, Europe, India, anywhere.
## `proxyConfiguration` (type: `object`):

Optional proxy settings. The Working Nomads feed is openly accessible, so a proxy is not required; enable it only if you want to route requests through Apify Proxy.

## Actor input object example

```json
{
  "maxItems": 10,
  "withDetails": true,
  "category": "",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/working-nomads-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("scrapers_lat/working-nomads-scraper").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 '{
  "maxItems": 10
}' |
apify call scrapers_lat/working-nomads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/working-nomads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Working Nomads Remote Job Listings Scraper [🏷️ ON SALE 🎉]",
        "description": "Extract global remote jobs from Working Nomads: title, company, category, tags, location and full description. Output to JSON, CSV or Excel.",
        "version": "0.1",
        "x-build-id": "E2qJGXyThShRnPOS5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~working-nomads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-working-nomads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapers_lat~working-nomads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-working-nomads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapers_lat~working-nomads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-working-nomads-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of remote jobs to collect. Optional."
                    },
                    "withDetails": {
                        "title": "Fetch Detail Pages",
                        "type": "boolean",
                        "description": "When enabled, the scraper opens each job's detail page to upgrade the URL to its clean canonical link and add the job image. When disabled, only the feed-level fields are collected (faster).",
                        "default": true
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Free-text term to match against the job title, company name, category, tags and description (case-insensitive). Leave empty to collect all jobs in feed order. The Working Nomads feed has no server-side search, so this filter is applied by the scraper."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "",
                            "Administration",
                            "Consulting",
                            "Customer Success",
                            "Design",
                            "Development",
                            "Education",
                            "Finance",
                            "Healthcare",
                            "Human Resources",
                            "Legal",
                            "Management",
                            "Marketing",
                            "Sales",
                            "System Administration",
                            "Writing"
                        ],
                        "type": "string",
                        "description": "Keep only jobs whose category matches this value.",
                        "default": ""
                    },
                    "tag": {
                        "title": "Tag",
                        "type": "string",
                        "description": "Keep only jobs that include this tag (case-insensitive, matched against the job's tag list). Example: react, project management, copywriting."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Keep only jobs whose location text contains this term (case-insensitive). Example: Latin America, Europe, India, anywhere."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional proxy settings. The Working Nomads feed is openly accessible, so a proxy is not required; enable it only if you want to route requests through Apify Proxy.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
