# RemoteOK Jobs Scraper (`parseforge/specialized-job-boards-scraper`) Actor

Scrapes remote job listings from RemoteOK filtered by a keyword. Each row returns the job title, company, tags, and apply URL.

- **URL**: https://apify.com/parseforge/specialized-job-boards-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Social media
- **Stats:** 11 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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?

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

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### RemoteOK Jobs Scraper

**Scrape remote job listings from RemoteOK by keyword, up to a million per run.** Every listing returns the job title, company, tags, and apply URL in a flat, structured row. No API key or browser setup needed. Export to CSV, JSON, Excel, or XML.

RemoteOK lists thousands of remote jobs, but manually copying listings or building your own scraper takes time you could spend on outreach. This Actor reads the public job feed directly, filters it by your chosen keyword, and returns each match in one consistent schema. It runs on the Apify platform so you get scheduling, proxies, and storage without writing a line of infrastructure code.

| Who uses it | What they scrape RemoteOK for |
|---|---|
| Recruiters | Build a fresh list of remote candidates for a specific role like DevOps or React. |
| Job board aggregators | Pull RemoteOK listings into a combined feed alongside other boards. |
| Market analysts | Track which remote skills and job titles are growing in demand week over week. |
| Job seekers | Filter RemoteOK for a niche keyword and export a clean spreadsheet to track applications. |

### What it does

This Actor collects remote job listings from RemoteOK filtered by a job title or keyword, and returns each one as a flat row.

- 🔎 **Keyword filter:** supply any job title or skill, like python, javascript, or devops, and only matching listings are returned.
- 📦 **Flat row output:** each job arrives as one row with title, company, tags, and apply URL, ready for a spreadsheet or database.
- ⚙️ **Max items control:** set a hard cap from 1 to 1,000,000 listings per run so you never pull more data than you need.
- 🔄 **Scheduled runs:** set the Actor on a timer in Apify and get fresh RemoteOK listings daily or hourly without touching a button.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with RemoteOK data

**📋 Fill a recruitment pipeline.**

A tech recruiter runs the Actor weekly for 'react' and imports the CSV into their ATS to source fresh remote candidates.

**📊 Monitor remote work trends.**

A market analyst scrapes RemoteOK monthly for a set of keywords and charts which skills appear most often over time.

**🏗️ Build a niche job board.**

A developer aggregates RemoteOK listings with other sources and displays them on a curated site for Python remote jobs.

**📁 Create a personal job tracker.**

A job seeker scrapes RemoteOK for 'technical writer', exports the results, and tracks applications in a shared spreadsheet.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key** | RemoteOK has no official API; this reads the public feed directly. |
| **One keyword** | Target a single skill or title and get only the listings that matter. |
| **Structured output** | Every run returns the same columns, so your downstream scripts never break. |
| **Runs on autopilot** | Schedule it once and Apify handles proxies, retries, and storage. |

### How it compares

Two other Apify actors also scrape RemoteOK, each with a different scope. This one focuses exclusively on RemoteOK with a simple keyword filter and flat row output.

| Feature | ParseForge | Jobs Board Scraper: Indeed, Reed, Adzuna, RemoteOK & More | RemoteOk Job Scraper |
|---|---|---|---|
| Scrapes RemoteOK exclusively | Yes | Not listed | Yes |
| Keyword filter | Yes | Yes | Not listed |
| Flat row output per job | Yes | Yes | Not listed |
| No API key required | Yes | Not listed | Not listed |
| Scheduled runs via Apify | Yes | Not listed | Not listed |
| Multi-board scraping in one run | Not listed | Yes | Not listed |

### Configure the run

Drive the Actor with a single keyword and a maximum item count, and the filter runs as each listing is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "keyword": "python",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "keyword": "python",
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.006 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.60 |
| 1,000 results | $6.00 |
| 10,000 results | $60.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [RemoteOK Jobs Scraper](https://apify.com/parseforge/specialized-job-boards-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to RemoteOK through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/specialized-job-boards-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your keyword spelling. RemoteOK's search is literal; try a broader term like 'python' instead of 'senior python backend'. Also confirm the site is reachable from your browser.

**The run finished but the dataset is empty.**

The keyword may not match any current listings. Visit RemoteOK in a browser and search for the same term to confirm there are live jobs. If there are, try lowering the max items value in case the Actor is timing out.

**I get fewer results than my max items setting.**

The Actor stops when RemoteOK has no more matching listings. Your max items is a ceiling, not a target. If RemoteOK only has 23 'elixir' jobs, you will get 23 rows.

**The run fails with a timeout error.**

RemoteOK may be slow to respond. Increase the Actor's timeout in the run settings, or try running it at a less busy time. Apify's proxy rotates automatically, so a retry often succeeds.

**Some fields are empty in the output.**

RemoteOK listings do not always fill every field. If a job card lacks a company name or tags, that cell will be blank. This is expected and reflects the source data.

### FAQ

| Question | Answer |
|---|---|
| Do I need a RemoteOK account or API key? | No. The Actor reads the public job listings that RemoteOK shows to anyone visiting the site. You do not need to register an app or get a token. |
| What does each row in the output contain? | Each row includes the job title, company name, tags or categories, and the apply URL. The exact field list is shown in the sample output on the Actor's page. |
| Can I scrape multiple keywords in one run? | The input accepts one keyword per run. To scrape several keywords, set up a separate task for each one, or run them in sequence using an Apify workflow. |
| How many listings can I get in one run? | You set the maximum with the 'Maximum jobs' field, anywhere from 1 to 1,000,000. The Actor stops when it hits your cap or runs out of matching listings. |
| Does this Actor handle pagination? | Yes. It follows RemoteOK's listing pages automatically until it reaches your max items limit or the end of the feed. |
| Can I schedule this to run automatically? | Yes. Apify's scheduler lets you run the Actor every hour, day, or week. Each run produces a fresh dataset you can download or push to another service. |
| What export formats are supported? | You can export your dataset as CSV, JSON, Excel, XML, or RSS from the Apify storage tab. |
| Does it scrape the full job description? | The Actor returns the information visible on the listing card, including title, company, and tags. It does not open each job's detail page, so the full body text is not included. |
| Is this Actor affiliated with RemoteOK? | No. It is an independent scraper built on the Apify platform. It reads publicly available data and is not endorsed by Remote OK. |
| What if RemoteOK changes its layout? | We monitor the Actor's health. If a layout change breaks the scraper, we update it. You can also fork the Actor and adjust the selectors yourself if you need an immediate fix. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Remote OK. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `keyword` (type: `string`):

Job search keyword (e.g. python, javascript, react, devops).

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

Maximum number of job listings to collect per run.

## Actor input object example

```json
{
  "keyword": "python",
  "maxItems": 10
}
```

# Actor output Schema

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

Dataset with all scraped 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 = {
    "keyword": "python",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/specialized-job-boards-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 = {
    "keyword": "python",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/specialized-job-boards-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 '{
  "keyword": "python",
  "maxItems": 10
}' |
apify call parseforge/specialized-job-boards-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/specialized-job-boards-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/7iS7dKjLGrhTnoAgZ/builds/IvF9Gvf5Pp2odXwYs/openapi.json
