# Remotive Jobs Search Scraper (`soft_alexist/remotive-jobs-search-scraper`) Actor

Extract remote job listings from Remotive.com's search results at scale. Collect job titles, skills, salaries, seniority levels, company names, and 20+ fields per vacancy — perfect for job aggregators, market research, and talent analytics.

- **URL**: https://apify.com/soft\_alexist/remotive-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

## Remotive Jobs Search Scraper: Bulk Extract Remote Job Listings
---

### What Is Remotive.com?

Remotive.com is a specialized job board for remote positions across tech, marketing, design, and business roles. With thousands of active listings updated daily, it serves as a primary source for distributed teams and remote-first talent. Manually scraping search results to gather competitive intelligence or populate job aggregators is repetitive and error-prone — the **Remotive Jobs Search Scraper** automates extraction from Remotive's search pages, delivering clean job records in bulk.

---

### Overview

The **Remotive Jobs Search Scraper** extracts job cards from Remotive.com search results pages, converting them into structured JSON records. It is ideal for:

- **Job aggregators** pulling remote listings into multi-source boards
- **Recruiters** tracking remote job market trends by skill, seniority, and salary
- **Researchers** analyzing remote work opportunities and compensation patterns
- **HR platforms** benchmarking competitive remote job offerings
- **Data analysts** building datasets for labor market intelligence

Key features include high item extraction per URL (up to 200 jobs per page), resilient error handling, and rich metadata including salary ranges, required skills, and company branding.

---

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://remotive.com/remote-jobs/et-full-time"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Description | Example |
|---|---|---|
| `urls` | Remotive search results page URLs | `https://remotive.com/remote-jobs/et-full-time` |
| `max_items_per_url` | Max job listings per URL (1–200) | `200` |
| `ignore_url_failures` | If `true`, skips failed URLs without stopping the run | `true` |

**URL Construction Tips:**

- Use category filters: `/remote-jobs/et-full-time`, `/remote-jobs/software-development`
- Combine multiple filters: `/remote-jobs/design/full-time`
- Append pagination if needed: `?page=2`
- Each URL can return up to 200 job listings, depending on page length

***

### Output Format

**Sample output**

```json
{
  "id": "4898487",
  "title": "High-Ticket Financial Sales Specialist & Team Lead Track",
  "skills": [
    "b2b sales",
    "pipeline management",
    "leadership",
    "communication",
    "high-volume sales"
  ],
  "company_name": "FSE LLC",
  "locations": [
    "Worldwide"
  ],
  "url": "https://remotive.com/remote-jobs/sales/high-ticket-financial-sales-specialist-team-lead-track-2090949",
  "salary": "$3k - $10k",
  "category": "Sales",
  "seniority": "lead",
  "job_type": "full-time",
  "discovered_on": "2026-07-08 19:44:58",
  "commercial": true,
  "display_logo": true,
  "highlighted": true,
  "pinned_on_top": true,
  "remotive_com_url": "https://remotive.com/remote-jobs/sales/high-ticket-financial-sales-specialist-team-lead-track-2090949",
  "has_cpc": false,
  "has_brand_color": false,
  "brand_color": "#fed294",
  "remotive_logo_url": "https://remotive.com/job_board/job/logo/4898487",
  "occupation": "high ticket sales closer",
  "formatted": {
    "id": "4898487",
    "title": "High-Ticket Financial Sales Specialist & Team Lead Track",
    "skills": [
      "b2b sales",
      "pipeline management",
      "leadership",
      "communication",
      "high-volume sales"
    ],
    "company_name": "FSE LLC",
    "locations": [
      "Worldwide"
    ],
    "url": "https://remotive.com/remote-jobs/sales/high-ticket-financial-sales-specialist-team-lead-track-2090949",
    "salary": "$3k - $10k",
    "category": "Sales",
    "seniority": "lead",
    "job_type": "full-time",
    "discovered_on": "2026-07-08 19:44:58",
    "commercial": true,
    "display_logo": true,
    "highlighted": true,
    "pinned_on_top": true,
    "remotive_com_url": "https://remotive.com/remote-jobs/sales/high-ticket-financial-sales-specialist-team-lead-track-2090949",
    "has_cpc": false,
    "has_brand_color": false,
    "brand_color": "#fed294",
    "remotive_logo_url": "https://remotive.com/job_board/job/logo/4898487",
    "occupation": "high ticket sales closer"
  },
  "is_blurred": false,
  "publication_time_description": "Today",
  "website_old": false,
  "from_url": "https://remotive.com/remote-jobs/et-full-time"
}
```

Each job listing includes 25 structured fields:

#### Core Job Information

| Field | Meaning |
|---|---|
| `ID` | Unique job listing identifier on Remotive |
| `Title` | Job title as displayed (e.g., "Senior Python Developer") |
| `URL` | Direct link to the job detail page on Remotive |
| `Remotive.com URL` | Alternative or canonical Remotive job URL |
| `Company Name` | Employer company name |
| `Locations` | Job location(s) or "Remote" indicator |
| `Category` | Job category (e.g., Software Development, Marketing, Design) |
| `Occupation` | Occupation classification or role type |

#### Compensation & Requirements

| Field | Meaning |
|---|---|
| `Salary` | Salary range or annual compensation (if listed) |
| `Seniority` | Career level (e.g., Junior, Mid-Level, Senior, Lead) |
| `Job Type` | Employment type (e.g., Full-Time, Part-Time, Contract) |
| `Skills` | Required or preferred technical/soft skills (comma-separated) |

#### Posting & Display Details

| Field | Meaning |
|---|---|
| `Discovered On` | Date the listing was first indexed by scraper |
| `Publication Time Description` | Human-readable posting time ("Posted 2 days ago") |
| `Pinned On Top` | Whether the job is pinned/featured on search results |
| `Highlighted` | Whether the listing has special highlighting/promotion |
| `Commercial` | Whether this is a sponsored/commercial listing |
| `Has CPC` | Cost-per-click advertising flag |

#### Company Branding

| Field | Meaning |
|---|---|
| `Display Logo` | Company logo display status |
| `Remotive Logo URL` | CDN link to company logo image |
| `Has Brand Color` | Whether company has custom branding color |
| `Brand Color` | Hex code or RGB value of brand color (if available) |
| `Website Old` | Legacy website field or previous domain |

#### Data Quality Flags

| Field | Meaning |
|---|---|
| `Formatted` | Whether the listing data has been normalized/formatted |
| `Is Blurred` | Whether sensitive data is obscured (e.g., salary, company name) |

***

### How to Use

1. **Find search results URLs** — Browse Remotive.com and apply filters (category, job type, seniority). Copy the filtered search page URL.
2. **Add URLs to configuration** — Paste one or more URLs into the `urls` array. Example:

```json
   "urls": [
     "https://remotive.com/remote-jobs/et-full-time",
     "https://remotive.com/remote-jobs/software-development",
     "https://remotive.com/remote-jobs/marketing"
   ]
```

3. **Set item limit** — Choose `max_items_per_url` (typically 20–200 depending on speed vs. volume needs).
4. **Enable resilience** — Keep `ignore_url_failures: true` for bulk runs to skip broken links.
5. **Run and export** — Start the scraper, then download results as JSON, CSV, or Excel.

**Best Practices:**

- Use specific category URLs to control data relevance.
- For large datasets, split URLs into multiple runs to avoid timeouts.
- Monitor the job count per URL — if lower than expected, the page may have pagination.

***

### Use Cases & Business Value

- **Job board aggregation:** Combine Remotive listings with Indeed, LinkedIn, and other sources on a unified platform
- **Market intelligence:** Track which remote roles are in highest demand and how salaries compare
- **Skill analysis:** Identify trending technical and soft skills across remote positions
- **Competitive benchmarking:** See what competitors are paying for similar roles
- **Lead generation:** Build lists of hiring companies for sales outreach
- **Academic research:** Study remote work trends, geographic distribution, and compensation

The Remotive Jobs Search Scraper transforms static web pages into dynamic datasets, enabling data-driven hiring decisions and recruitment strategy.

***

### Conclusion

The **Remotive Jobs Search Scraper** makes it simple to access and analyze remote job data at scale. With 25 rich fields per listing and support for bulk extraction from filtered search pages, it eliminates manual copy-paste work and unlocks insights into the remote job market. Start scraping today and stay ahead of remote hiring trends.

# 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://remotive.com/remote-jobs/et-full-time"
  ],
  "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://remotive.com/remote-jobs/et-full-time"
    ],
    "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/remotive-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://remotive.com/remote-jobs/et-full-time"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/remotive-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://remotive.com/remote-jobs/et-full-time"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call soft_alexist/remotive-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Remotive Jobs Search Scraper",
        "description": "Extract remote job listings from Remotive.com's search results at scale. Collect job titles, skills, salaries, seniority levels, company names, and 20+ fields per vacancy — perfect for job aggregators, market research, and talent analytics.",
        "version": "0.0",
        "x-build-id": "0V05frqGgy8evHbaB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/soft_alexist~remotive-jobs-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-soft_alexist-remotive-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~remotive-jobs-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-soft_alexist-remotive-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~remotive-jobs-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-soft_alexist-remotive-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
