# Remote Jobs Search Scraper (`soft_alexist/remote-jobs-search-scraper`) Actor

Scrape remote job listings from Remote.co instantly. Collect 45+ data fields including titles, salary ranges, job types, locations, and company info. Perfect for recruiters, job aggregators, and talent researchers seeking structured remote work data in bulk.

- **URL**: https://apify.com/soft\_alexist/remote-jobs-search-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, Jobs
- **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/platform/actors/running/actors-in-store#pay-per-usage

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

## Remote.co Jobs Scraper: Extract Remote Work Listings at Scale

---

### What Is Remote.co?

Remote.co is a global remote job marketplace hosting thousands of verified remote positions across technology, marketing, design, sales, and other industries. It aggregates opportunities from companies worldwide, making it a rich source for remote work trends and hiring intelligence. Manually searching and extracting this data is tedious — the **Remote.co Jobs Scraper** automates discovery and collection, delivering structured datasets in minutes.

---

### Overview

The **Remote Jobs Search Scraper** extracts job listings from Remote.co search result pages, transforming unstructured listings into comprehensive, machine-readable records. It is built for:

- **Recruiters & staffing agencies** building candidate opportunity pipelines
- **Job aggregators** syndicating remote positions to job boards
- **Market researchers** analyzing remote work trends by location and industry
- **Career platforms** enriching job databases with Remote.co listings
- **Data analysts** studying remote work compensation and job type distribution

Key advantages include search-based URL support (allowing keyword filtering), bulk item limits for large-scale collection, and robust error handling via `ignore_url_failures`.

---

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://remote.co/remote-jobs/search?searchkeyword=design&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Description | Example |
|---|---|---|
| `urls` | Remote.co search result URLs to scrape. Include keyword filters, categories, or page numbers. | `https://remote.co/remote-jobs/search?searchkeyword=design&page=1` |
| `max_items_per_url` | Maximum number of job listings extracted per URL (1–200 recommended). | `200` |
| `ignore_url_failures` | If `true`, continues scraping remaining URLs if one fails; if `false`, halts on error. | `true` |

**Pro tip:** Use search parameters (e.g., `searchkeyword=design`) to pre-filter results and focus collection on relevant roles.

***

### Output Format

**Sample output**

```json
{
  "id": "e7587729-f49c-4ecd-8bb3-1d554b4f2071",
  "title": "Product Design Freelancer",
  "ats": null,
  "posted_date": "2026-07-03T02:06:22Z",
  "job_locations": [
    "Woodinville, WA"
  ],
  "locations": null,
  "allowed_candidate_location": [
    "Woodinville, WA"
  ],
  "remote_options": [
    "100% Remote Work"
  ],
  "job_schedules": [
    "Flexible Schedule"
  ],
  "job_types": [
    "Freelance"
  ],
  "featured": false,
  "company": null,
  "saved": false,
  "viewed": false,
  "applied_date": null,
  "viewed_date": null,
  "saved_date": null,
  "slug": "product-design-freelancer-e7587729-f49c-4ecd-8bb3-1d554b4f2071",
  "created_on": "2026-07-03T02:06:22Z",
  "expire_on": "2026-08-22T00:00:00Z",
  "salary_range": "",
  "apply_job_status": "None",
  "career_level": [
    "Experienced"
  ],
  "travel_required": "No specification",
  "region_id": null,
  "states": [
    "WA"
  ],
  "countries": [
    "United States"
  ],
  "cities": [
    "Woodinville"
  ],
  "is_flexible_schedule": false,
  "is_telecommute": false,
  "is_freelancing_contract": false,
  "hosted": false,
  "match_id": null,
  "search_id": null,
  "score": 218.92276,
  "eligible_for_expert_apply": true,
  "is_free_job": false,
  "track_properties": {},
  "postal_code": null,
  "apply_url": null,
  "coordinates": null,
  "salary_min": 0,
  "salary_max": 0,
  "salary_unit": null,
  "salary_currency": null,
  "education_levels": [
    "No Education Specified"
  ],
  "gjw_url": null,
  "from_url": "https://remote.co/remote-jobs/search?searchkeyword=design&page=2"
}
```

Each scraped job record contains 45+ fields spanning job details, company info, location data, and candidate eligibility:

#### Core Job Information

| Field | Meaning |
|---|---|
| `ID` | Unique Remote.co identifier for the job listing |
| `Title` | Job title as displayed (e.g., "Senior UX Designer") |
| `Slug` | URL-friendly job identifier |
| `Company` | Hiring company name |
| `Posted Date` | When the listing was published |
| `Created On` | Internal creation timestamp |
| `Expire On` | Listing expiration date |
| `Apply URL` | Direct link to apply for the position |
| `GJW URL` | Remote.co canonical job URL |

#### Remote Work & Schedule Details

| Field | Meaning |
|---|---|
| `Remote Options` | Level of remote work (fully remote, hybrid, remote-first) |
| `Job Schedules` | Work schedule type (full-time, part-time, flexible hours) |
| `Job Types` | Employment type (permanent, contract, freelance) |
| `Is Telecommute` | Boolean flag: whether role is fully remote |
| `Is Flexible Schedule` | Boolean flag: whether schedule is flexible |
| `Is Freelancing Contract` | Boolean flag: whether freelance/contract work |
| `Travel Required` | Any required travel frequency |

#### Location & Geography

| Field | Meaning |
|---|---|
| `Job Locations` | Primary job location (if any office presence) |
| `Locations` | Specific geographic locations |
| `Allowed Candidate Location` | Geographic restrictions for applicants (e.g., "Europe only") |
| `Region ID` | Remote.co region classification ID |
| `States` | US states (if applicable) |
| `Countries` | Eligible countries for candidates |
| `Cities` | Specific cities where role applies |
| `Postal Code` | Postal code (if location-specific) |
| `Coordinates` | Geographic coordinates (latitude/longitude) |

#### Compensation & Career Level

| Field | Meaning |
|---|---|
| `Salary Min` | Minimum salary range (numeric) |
| `Salary Max` | Maximum salary range (numeric) |
| `Salary Range` | Full salary range displayed (e.g., "$50,000 - $80,000") |
| `Salary Unit` | Salary period (yearly, monthly, hourly) |
| `Salary Currency` | Currency code (USD, EUR, GBP, etc.) |
| `Career Level` | Experience level (entry, mid, senior, executive) |
| `Education Levels` | Minimum education requirements |

#### Application & Engagement Tracking

| Field | Meaning |
|---|---|
| `Apply Job Status` | Application status (open, closed, paused) |
| `Applied Date` | When user applied (if applicable) |
| `Viewed Date` | When user viewed the listing |
| `Saved Date` | When user bookmarked the listing |
| `Viewed` | View count or flag |
| `Saved` | Bookmark/save count or flag |
| `Eligible For Expert Apply` | Whether expert apply feature is available |
| `Track Properties` | Internal tracking identifiers |

#### Listing Attributes & Metadata

| Field | Meaning |
|---|---|
| `Featured` | Whether the listing has paid featured status |
| `Is Free Job` | Whether posted as a free (unpaid) listing |
| `ATS` | Applicant Tracking System used by employer |
| `Hosted` | Whether job details are hosted on Remote.co |
| `Match ID` | Identifier for matched profiles (if applicable) |
| `Search ID` | Associated search campaign ID |
| `Score` | Relevance or quality score (0–100 scale) |

***

### How to Use

1. **Build search URLs** — Navigate to Remote.co, apply keyword or category filters, and copy the search result URL (e.g., `https://remote.co/remote-jobs/search?searchkeyword=design&page=1`).
2. **Configure the scraper** — Paste URLs into the `urls` array. Add multiple URLs for different keywords, pages, or categories.
3. **Set output limits** — Use `max_items_per_url: 200` for bulk collection, or lower values for smaller datasets.
4. **Enable resilience** — Keep `ignore_url_failures: true` to handle temporary page errors gracefully.
5. **Run and export** — Execute the scraper and download results as JSON, CSV, or Excel.

**Best practices:**

- Use keyword filters to focus collection (e.g., `searchkeyword=python` for engineering roles).
- Paginate through results using `page=1`, `page=2`, etc., to avoid hitting rate limits.
- Test one URL first to verify output before running bulk collections.

***

### Use Cases & Business Value

- **Talent sourcing:** Build databases of remote roles for candidate matching and outreach
- **Market intelligence:** Analyze remote job trends, salary bands, and hiring demand by role or region
- **Job board syndication:** Feed Remote.co listings into your own job aggregator platform
- **Compensation benchmarking:** Extract salary data to inform pay equity studies
- **Career research:** Study remote work adoption across industries and geographic regions

The **Remote.co Jobs Scraper** cuts hours of manual data gathering into minutes, delivering cleaned, structured records ready for analysis, matching algorithms, or downstream systems.

***

### Conclusion

The **Remote Jobs Search Scraper** is your fast-track solution for harvesting remote job intelligence at scale. With 45+ data fields and flexible search-based inputs, it powers recruiting operations, market research, and job platform innovation. Start scraping Remote.co today and unlock actionable remote work datasets.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://remote.co/remote-jobs/search?searchkeyword=design&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://remote.co/remote-jobs/search?searchkeyword=design&page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/remote-jobs-search-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 = {
    "urls": ["https://remote.co/remote-jobs/search?searchkeyword=design&page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/remote-jobs-search-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 '{
  "urls": [
    "https://remote.co/remote-jobs/search?searchkeyword=design&page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call soft_alexist/remote-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Remote Jobs Search Scraper",
        "description": "Scrape remote job listings from Remote.co instantly. Collect 45+ data fields including titles, salary ranges, job types, locations, and company info. Perfect for recruiters, job aggregators, and talent researchers seeking structured remote work data in bulk.",
        "version": "0.0",
        "x-build-id": "COyCUF6Qx6jy9zwdR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/soft_alexist~remote-jobs-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-soft_alexist-remote-jobs-search-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/soft_alexist~remote-jobs-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-soft_alexist-remote-jobs-search-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/soft_alexist~remote-jobs-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-soft_alexist-remote-jobs-search-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": {
                    "urls": {
                        "title": "URLs of the Jobs list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Jobs list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
