# 💼 Working Nomads Remote Jobs Scraper (`hipersoft/workingnomads-scraper`) Actor

Scrape remote job listings from Working Nomads: job title, company, category, tags, location, publication date, apply URL and full description. Filter by category, location or keyword and bulk-export to JSON, CSV, Excel or XML.

- **URL**: https://apify.com/hipersoft/workingnomads-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0015 / item scraped

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

## 💼 Working Nomads Remote Jobs Scraper — Titles, Companies & Categories

Turn **Working Nomads** remote-job listings into clean, structured data. Collect the current remote jobs board and get one tidy row per job with the **title, company, category, tags, location, publication date, apply link** and the **full job description** (as HTML and as plain text). Export to **JSON, CSV, Excel or XML**, or pull straight from the API.

Perfect for building remote-job boards, job-alert emails, talent-sourcing lists, salary and market research, or feeding fresh remote roles into your own app, spreadsheet or workflow.

***

### What you get

One flat, ready-to-use record per job:

| Field | Description |
|---|---|
| `title` | Job title |
| `company` | Hiring company name |
| `category` | Job category (e.g. Development, Design, Marketing) |
| `tags` | Skill / topic tags as a clean array |
| `location` | Candidate location or region |
| `publishedAt` | Publication date (ISO 8601) |
| `url` | Direct link to the job |
| `description` | Full job description (original HTML) |
| `descriptionText` | Full job description as readable plain text |
| `scrapedAt` | When the row was collected (ISO 8601) |

***

### How to use

1. (Optional) Set a **Category** to keep only jobs in one area — e.g. `development`, `design`, `marketing`, `management`, `finance`, `sales` or `administration`.
2. (Optional) Set a **Location** to keep only jobs matching a region or country — e.g. `USA`, `Europe`, `anywhere`.
3. (Optional) Set a **Search keyword** to match the title, company, tags and description — e.g. `python`, `react`, `product manager`.
4. (Optional) Set **Max items** to cap how many jobs you collect (0 = all).
5. Run it, then download your data or grab it from the dataset API.

```json
{
  "category": "development",
  "search": "python",
  "location": "anywhere",
  "maxItems": 100
}
```

Leave every field empty to collect the full current list of remote jobs.

***

### Input reference

| Field | Type | Description |
|---|---|---|
| `search` | string | Optional keyword — matches title, company, tags and description |
| `category` | string | Optional category filter (case-insensitive contains) |
| `location` | string | Optional location filter (case-insensitive contains) |
| `maxItems` | integer | Max jobs to collect (0 = no limit) |
| `proxyConfiguration` | object | Optional proxy settings (not required by default) |

***

### Tips

- Start with a small `maxItems` to preview the shape of the data, then scale up.
- Combine **Category** and **Search** to zero in on exactly the roles you want.
- Every row includes an ISO `publishedAt` timestamp and both HTML and plain-text descriptions, so the data drops straight into databases, search indexes and email templates.

### Notes

This scraper collects **public** remote-job information only. Please use the data responsibly and in line with Working Nomads' terms.

# Actor input Schema

## `search` (type: `string`):

Optional keyword to filter jobs — for example 'python', 'react', 'product manager' or 'customer support'. Matches job title, company, tags and description. Leave empty to return the latest jobs.

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

Optional. Only return jobs whose category contains this text (case-insensitive) — for example 'development', 'design', 'marketing', 'management', 'finance', 'sales' or 'administration'. Leave empty to include every category.

## `location` (type: `string`):

Optional. Only return jobs whose location contains this text (case-insensitive) — for example 'USA', 'Europe', 'anywhere' or a country name. Leave empty to include every location.

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

Maximum number of jobs to collect (0 = no limit; collect everything the filters return).

## `proxyConfiguration` (type: `object`):

Proxy settings. Not required by default. If you experience reduced results, enable Apify Proxy for the most reliable access.

## Actor input object example

```json
{
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

The results as dataset items.

# 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("hipersoft/workingnomads-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 = {}

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/workingnomads-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/7kyQ80Z2kbl8gXFjH/builds/4wksuzPHdKM8g3uLg/openapi.json
