# RemoteOK Remote Jobs Scraper (`parseforge/remoteok-jobs-scraper`) Actor

Export remote tech, marketing, and design jobs from the RemoteOK board. Filter by tags or company name. Get title, company, location, full description, tags, posting date, salary range, logo URL, and apply URL.

- **URL**: https://apify.com/parseforge/remoteok-jobs-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.00 / 1,000 result items

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/platform/actors/running/actors-in-store#pay-per-event

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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🌐 RemoteOK Remote Jobs Scraper

> 🚀 **Export the global remote-only job board in seconds.** Pull **10,000+ fully remote tech, marketing, design, and operations roles** with tags, salary ranges, and apply URLs. No API key, no registration, no login walls.

> 🕒 **Last updated:** 2026-05-22 · **📊 14 fields** per record · **🌐 10,000+ remote jobs** · **🏷️ tag-filterable** · **💰 salary ranges where disclosed**

The **RemoteOK Remote Jobs Scraper** exports one of the largest remote-only job boards and returns **14 structured fields per record**, including job position, company, location, tags, declared salary range, posting URL, apply URL, full description, and timestamps. The underlying board has been one of the most widely cited remote-work references and has been operating since 2015.

Coverage spans **10,000+ active fully-remote listings** across engineering, marketing, sales, design, customer support, finance, and operations. Records arrive as CSV, Excel, JSON, or XML in under a minute. All filters run on the source side when possible, so you skip the parser engineering entirely.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Remote workers, recruiters, remote job aggregators, ATS vendors, salary benchmarking teams, talent intelligence platforms, career advice sites | Daily remote job feeds, salary range research, tag-based niche aggregators, recruiter sourcing, ATS enrichment, remote-work labor market dashboards |

---

### 📋 What the RemoteOK Jobs Scraper does

Four filtering workflows in a single run:

- 🌐 **Full feed.** The entire active remote board in one pull.
- 🏷️ **Tag filter.** Restrict to specific stacks (javascript, react, python, senior, devops). Single-tag filters use a server-side filter for speed.
- 🏢 **Company filter.** Substring match on company name (case-insensitive).
- 💰 **Minimum salary.** Keep only jobs whose declared salary band meets your threshold.

Each record includes an internal ID, slug, position title, company, location, tag list, salary min/max (when disclosed), ISO timestamp, epoch timestamp, posting URL, apply URL, and full description.

> 💡 **Why it matters:** remote-work job data powers global sourcing, salary research, niche aggregators, and career advice content. Building your own pipeline means rate-limit dancing and constant catalog refreshes. This Actor returns a clean dataset in minutes.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded remote jobs dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>tags</code></td><td>array</td><td><code>[]</code></td><td>Optional tag filters (e.g. javascript, react, python, senior). Single-tag = server-side filter. Multi-tag = OR-match downstream.</td></tr>
<tr><td><code>companyName</code></td><td>string</td><td><code>""</code></td><td>Optional substring filter on company name (case-insensitive).</td></tr>
<tr><td><code>minSalary</code></td><td>integer</td><td><code>null</code></td><td>Optional minimum annual salary in USD. Only jobs whose declared salary_max meets this threshold are kept (jobs without disclosed salary are excluded).</td></tr>
</tbody>
</table>

**Example: senior Python roles paying $120K+.**

```json
{
    "maxItems": 100,
    "tags": ["python", "senior"],
    "minSalary": 120000
}
````

**Example: all open positions at a specific company.**

```json
{
    "maxItems": 50,
    "companyName": "GitHub"
}
```

> ⚠️ **Good to Know:** salary fields are populated only when the employer discloses a band. Roughly a third of listings carry a salary; the remaining records have `salaryMin` and `salaryMax` set to null. If you need salary-bearing rows only, set `minSalary: 1` or filter downstream. Tag filtering returns OR matches across the array.

***

### 📊 Output

Each job record contains **14 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `id` | string | `"1131632"` |
| 🔗 `slug` | string | `"remote-senior-fraud-risk-analyst-braviant-holdings-1131632"` |
| 🏷️ `position` | string | `"Senior Fraud Risk Analyst"` |
| 🏢 `company` | string | `"Braviant Holdings"` |
| 📍 `location` | string | null | `"Dallas, TX"` |
| 🏷️ `tags` | array | `["analyst", "financial", "senior"]` |
| 💰 `salaryMin` | number | null | `90000` |
| 💰 `salaryMax` | number | null | `120000` |
| 📆 `postedAt` | ISO 8601 | `"2026-05-20T00:00:12+00:00"` |
| ⏱️ `postedAtEpoch` | number | `1779235212` |
| 🔗 `url` | string | `"https://remoteOK.com/remote-jobs/remote-senior-fraud-risk-analyst-braviant-holdings-1131632"` |
| 🔗 `applyUrl` | string | null | `"https://..."` |
| 📝 `description` | string | HTML snippet |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-22T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>💼 Senior Fraud Risk Analyst</strong></summary>

```json
{
    "id": "1131632",
    "slug": "remote-senior-fraud-risk-analyst-braviant-holdings-1131632",
    "position": "Senior Fraud Risk Analyst",
    "company": "Braviant Holdings",
    "location": "Dallas, TX",
    "tags": ["analyst", "financial", "strategy", "senior", "operations", "healthcare", "engineering"],
    "salaryMin": null,
    "salaryMax": null,
    "postedAt": "2026-05-20T00:00:12+00:00",
    "postedAtEpoch": 1779235212,
    "url": "https://remoteOK.com/remote-jobs/remote-senior-fraud-risk-analyst-braviant-holdings-1131632",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🐍 Remote Python Engineer with salary disclosed</strong></summary>

```json
{
    "id": "1131500",
    "slug": "remote-python-engineer-acme-1131500",
    "position": "Remote Python Engineer",
    "company": "Acme",
    "location": "Worldwide",
    "tags": ["python", "django", "aws", "senior"],
    "salaryMin": 120000,
    "salaryMax": 160000,
    "postedAt": "2026-05-19T08:12:00+00:00",
    "postedAtEpoch": 1779148320,
    "url": "https://remoteOK.com/remote-jobs/remote-python-engineer-acme-1131500",
    "applyUrl": "https://acme.com/careers/apply/python-engineer",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🌐 | **Remote-only.** 10,000+ fully-remote listings, no on-site or hybrid roles polluting the feed. |
| 💰 | **Salary fields.** Declared salary min and max for the listings that disclose them. |
| 🏷️ | **Tag filtering.** Single-tag filter runs server-side for speed; multi-tag OR-match downstream. |
| 🏢 | **Company filter.** Substring search on company name, case-insensitive. |
| ⚡ | **Fast.** 10 jobs in under 5 seconds, 1,000 in under a minute. |
| 🚫 | **No authentication.** Works with the public job board. No login, no API key. |
| 🔁 | **Always fresh.** Every run fetches the latest listings, so the dataset reflects today's open board. |

> 📊 Fresh remote-job data is the foundation of every distributed-team sourcing tool, salary benchmark, and remote-career advice site in modern HR tech.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ RemoteOK Jobs Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **10,000+ remote-only** | **Live per run** | tags, company, salary | ⚡ 2 min |
| LinkedIn Talent Insights | $$$$$ enterprise | Global, mixed | Streaming | Many | ⏳ Weeks |
| Indeed scraping | Free but blocked | Global | Manual | Limited | 🐢 Days |
| Per-company careers-page scraping | Free | Single employer | Manual | None | 🕒 Variable |

Pick this Actor when you want a clean remote-only feed, server-side filtering where possible, and zero parser maintenance.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the RemoteOK Remote Jobs Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick tags, a company filter, or a salary floor, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🎯 Recruiters & Talent Sourcing

- Daily remote-only role pulls for global pipelines
- Competitor remote hiring trend tracking
- Salary band benchmarking against a stack
- Senior-only feeds for executive search

</td>
<td width="50%" valign="top">

#### 📊 Salary & Market Research

- Stack-level salary band analyses
- Senior vs junior compensation gaps
- Remote vs on-site pay premiums
- Role-title frequency surveys

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🏗️ Niche Job Aggregators

- Stack-specific job boards (e.g. remote-react.com)
- Senior-only or executive-only feeds
- Company-watchlist boards
- Salary-floor-filtered premium boards

</td>
<td width="50%" valign="top">

#### 🤖 ATS & HR Tech Platforms

- Catalog enrichment with remote-tagged roles
- Auto-tagging models trained on real listings
- Skill ontology extraction from descriptions
- Posting-quality benchmarking

</td>
</tr>
</table>

***

### 🔌 Automating RemoteOK Jobs Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep downstream sourcing pipelines in sync automatically.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Remote-work adoption studies and policy papers
- Salary-disparity analyses across stacks
- Reproducible job-listing datasets for HR courses
- Open data on global remote hiring patterns

</td>
<td width="50%">

#### 🎨 Personal and creative

- Personal job-search trackers
- Niche aggregators for indie founders
- Stack-specific search dashboards
- Side projects exploring remote work trends

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Career coaching for displaced workers
- Public-sector remote-work transition reports
- Skills-gap analyses for educators
- Open jobs feeds for community programs

</td>
<td width="50%">

#### 🧪 Experimentation

- Train job-classification ML models
- Skill ontology extraction experiments
- Test resume-matching algorithms
- Build agent pipelines that monitor new remote roles

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20RemoteOK%20Remote%20Jobs%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20RemoteOK%20Remote%20Jobs%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20RemoteOK%20Remote%20Jobs%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20RemoteOK%20Remote%20Jobs%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Set tags, a company filter, or a salary floor, click Start, and the Actor returns one clean record per remote job. No browser automation, no captchas, no setup.

#### 🌐 Are all listings fully remote?

Yes. The source aggregates remote-only roles. The `location` field describes the employer's location or "Worldwide" for unrestricted, but the role itself is always remote.

#### 💰 Why are salary fields sometimes null?

Salary disclosure is voluntary for employers. Roughly a third of listings carry a salary band; the rest have `salaryMin` and `salaryMax` set to null. To keep only salary-bearing rows, set `minSalary: 1`.

#### 🏷️ How do tag filters work?

Pass an array. If you pass a single tag, the Actor uses a server-side filter for speed. If you pass multiple tags, the Actor filters downstream and a job matches if any of its tags overlap with your filter.

#### 🏢 Can I filter by company?

Yes. Pass a substring in `companyName` and the Actor returns case-insensitive matches.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to trigger this Actor on any cron interval. Common patterns: daily for sourcing pipelines, hourly for fast-moving niches, or weekly for benchmarking.

#### 📝 Are full descriptions included?

Yes. Every record carries the full HTML description as posted by the employer. Strip the HTML downstream if you need plain text for ML.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling, higher concurrency, and full board pulls.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### ⚖️ Is this data legal to use?

The source publishes public job listings. Commercial use is generally allowed for sourcing, analytics, and editorial work. Review the downstream terms of your specific use case and respect each employer's recruiting preferences.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

RemoteOK Jobs Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get new-job notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe jobs into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh listings into your ATS backend, or alert your team in Slack the moment a tracked role appears.

***

### 🔗 Recommended Actors

- [**🏦 FINRA BrokerCheck Scraper**](https://apify.com/parseforge/finra-brokercheck-scraper) - U.S. broker and advisor registration records
- [**🤗 Hugging Face Model Scraper**](https://apify.com/parseforge/hugging-face-model-scraper) - Discover and benchmark open ML models
- [**📰 PR Newswire Scraper**](https://apify.com/parseforge/pr-newswire-scraper) - Press releases for company news monitoring
- [**🏢 Hubspot Marketplace Scraper**](https://apify.com/parseforge/hubspot-marketplace-scraper) - Catalog SaaS apps and integrations
- [**📈 Indexmundi Scraper**](https://apify.com/parseforge/indexmundi-scraper) - Global demographic and economic indicators

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by RemoteOK or any of the employers in the listings. All trademarks mentioned are the property of their respective owners. Only publicly available open job-board data is collected.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `tags` (type: `array`):

Optional tag filters (e.g. javascript, react, python, senior). When exactly one tag is supplied, a server-side filter is used. Matches if any tag overlaps the job's tag list.

## `companyName` (type: `string`):

Optional substring filter on company name (case-insensitive).

## `minSalary` (type: `integer`):

Optional minimum annual salary in USD. Only jobs whose declared salary\_max meets this threshold are kept (jobs without salary are excluded).

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "maxItems": 10
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RemoteOK Remote Jobs Scraper",
        "description": "Export remote tech, marketing, and design jobs from the RemoteOK board. Filter by tags or company name. Get title, company, location, full description, tags, posting date, salary range, logo URL, and apply URL.",
        "version": "1.0",
        "x-build-id": "PsqdW43DjkgdrFEzW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~remoteok-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-remoteok-jobs-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/parseforge~remoteok-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-remoteok-jobs-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/parseforge~remoteok-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-remoteok-jobs-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": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "tags": {
                        "title": "Tags",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional tag filters (e.g. javascript, react, python, senior). When exactly one tag is supplied, a server-side filter is used. Matches if any tag overlaps the job's tag list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyName": {
                        "title": "Company Name",
                        "type": "string",
                        "description": "Optional substring filter on company name (case-insensitive)."
                    },
                    "minSalary": {
                        "title": "Minimum Salary (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum annual salary in USD. Only jobs whose declared salary_max meets this threshold are kept (jobs without salary are excluded)."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
