# RemoteOK Scraper \[$0.9/1K💰] | Remote Jobs | Salary Data (`ahmed_jasarevic/remoteok-scraper`) Actor

Extract RemoteOK remote job listings with salary ranges and tech tags for job market research

- **URL**: https://apify.com/ahmed_jasarevic/remoteok-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## RemoteOK Scraper — Remote Jobs, Salary Data & Tech Stack Demand

Scrape **RemoteOK remote jobs** for **salary benchmarking**, job market research and remote hiring trend analysis. Extract job titles, **salary ranges**, company names, tech tags and locations from one of the leading remote job boards — with no browser needed (uses RemoteOK's public JSON API).

### Main Use Cases

- **Remote job salary benchmarking** — compare compensation across roles and companies
- **Tech stack demand analysis** — see which languages and frameworks remote roles want
- **Remote hiring trends** — track which roles and locations are trending
- **Job aggregator** — build a clean feed of remote jobs filtered by tag
- **Market research** — analyze the size and composition of the remote job market
- **Competitive intelligence** — monitor what competitors hire and at what pay

### How It Works

![RemoteOK Scraper workflow: from skill-tag filters to remote job records with positions, companies, salary ranges, tags and posting dates](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-remoteok-scraper.webp)

Looking for a **RemoteOK scraper** or a practical **remote jobs data alternative**? Optionally add a skill tag, choose exact or related matching, and set an item cap. Each row includes position, hiring company, salary range when published, tech and role tags, remote or named location, posting date, direct job URL and company logo.

Use the dataset for remote salary benchmarking, tech-stack demand analysis, hiring trend research and job feeds. Export as JSON, CSV or Excel, or pull results through the Apify API. Pay from $0.90 per 1,000 jobs.

### Build a Remote Job Market Dataset Without Manual Scraping

RemoteOK has free job listings but no bulk export. This actor turns the whole board into a reusable, filterable dataset of remote jobs and **salary data** — for benchmarking, trend research and job-market monitoring at scale, with no official API access required.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `maxItems` | integer | No | 100 | Maximum job listings to scrape |
| `tag` | string | No | — | Filter by tag, e.g. `python`, `design`, `startup` |
| `strictTagMatch` | boolean | No | `true` | When `true`, only exact tag matches are returned |
| `useApifyProxy` | boolean | No | `true` | Route requests through the Apify proxy |

### Output

Each dataset item is one remote job:

| Field | Type | Description |
|---|---|---|
| `position` | string | Job title / position |
| `company` | string | Hiring company |
| `salary` | string | Compensation range when available |
| `tags` | array | Role tags, e.g. `python`, `javascript` |
| `location` | string | Remote or specified location |
| `date` | string | Posting date |
| `url` | string | Direct link to the job posting |
| `logo` | string | Company logo URL |

### Example Input

```json
{
  "tag": "python",
  "strictTagMatch": true,
  "maxItems": 50
}
```

### Example Output

```json
{
  "position": "Senior Python Developer",
  "company": "Acme Remote",
  "salary": "$120k - $160k",
  "tags": ["python", "backend", "api"],
  "location": "Remote",
  "date": "2026-08-28",
  "url": "https://remoteok.com/remote-jobs/...",
  "logo": "https://logo.clearbit.com/..."
}
```

### Integrations & Automation

Results are available via the Apify API and export to JSON/CSV/Excel, with integrations for **Google Sheets**, **Airtable**, **Zapier** and **Make**. For salary and hiring monitoring, schedule recurring runs (e.g. weekly) and compare datasets over time.

### Related Actors

Verified related actors on Apify that pair well with this one. All links point to real, publicly available actors.

- [Indeed Job Scraper](https://apify.com/misceres/indeed-scraper)
- [LinkedIn Jobs Scraper](https://apify.com/curious_coder/linkedin-jobs-scraper)
- [Glassdoor Jobs Scraper](https://apify.com/valig/glassdoor-jobs-scraper)

### FAQ

#### Why use this actor instead of an official RemoteOK API?

RemoteOK does not provide a public, documented bulk API for all jobs. This actor uses the site's public JSON data endpoint to collect listings, salaries and tags cleanly without scraping HTML.

#### Can I filter by technology or role?

Yes. Set the `tag` parameter (e.g. `python`, `design`, `startup`). `strictTagMatch: true` returns only exact matches; set it to `false` for broader related results.

#### What salary data is returned?

The `salary` field captures compensation when RemoteOK lists it (many remote roles include a salary range). Great for benchmarking across roles and companies.

#### Is a browser or proxy required?

No browser needed — the actor calls the JSON API directly. The `useApifyProxy` option is available for extra reliability.

### SEO Keywords

remoteok scraper, remote jobs api, remote job market data, remote salary benchmarking, remote job boards data, remoteok remote jobs dataset, remote hiring trends, tech stack demand analysis, remote job aggregator, remote work salary data, remoteok json api, remote jobs lead data, remote developer jobs, remoteok export, remote job market research

### For AI Agents & LLM Apps

**Purpose:** Return structured RemoteOK remote job listings (position, company, salary, tags, location) with optional tag filtering.

**Minimal working input:**

```json
{
  "maxItems": 20
}
```

**Output fields:** `position`, `company`, `salary`, `tags`, `location`, `date`, `url`, `logo`.

**Behaviors an agent should know:**

- Optional `tag` filters results; with `strictTagMatch: true` (default) only exact tag matches are returned.
- `maxItems` defaults to 100 — cap it to control cost.

**Billing:** Pay-per-result — $0.9 per 1K results ($0.0009 each).

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by RemoteOK**. It accesses publicly available job listings via RemoteOK's public JSON endpoint (no login bypass, no CAPTCHA solving). You are responsible for compliance with RemoteOK's Terms of Service and applicable data-protection law.

# Actor input Schema

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

Maximum number of job listings to scrape. The actor paginates RemoteOK's get_jobs endpoint, so it can return hundreds to thousands of matching jobs — not just the latest feed. Set to 0 for all available jobs. Free users are capped at 10 items.

## `tag` (type: `string`):

Optional: filter jobs by tag/skill (e.g. 'python', 'javascript', 'design'). Leave empty for all tags.

## `useApifyProxy` (type: `boolean`):

Route requests through Apify proxy to protect your IP.

## Actor input object example

```json
{
  "maxItems": 100,
  "tag": "",
  "useApifyProxy": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped remote jobs

# 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("ahmed_jasarevic/remoteok-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("ahmed_jasarevic/remoteok-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 ahmed_jasarevic/remoteok-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/remoteok-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/2cC2ie0587JF5kYya/builds/O1HNGsjdLZ3azLN0q/openapi.json
