# 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)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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.

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

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

The actor calls RemoteOK's **public JSON API** directly — no browser, no CAPTCHA. It returns clean structured rows (job title, company, salary, tags, location, date, URL) with optional tag filtering, ready for export, analysis or scheduled monitoring.

### 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/RglRQrkB6TyvAnfjD/openapi.json
