# RemoteOK Jobs Scraper (`solidcode/remoteok-scraper`) Actor

\[💰 $1.0 / 1K] Extract remote jobs from RemoteOK by category, keyword, salary, tags, location, and posted-within window. Returns structured data with normalized salaries, ISO dates, and clean descriptions.

- **URL**: https://apify.com/solidcode/remoteok-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.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.

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

## RemoteOK Jobs Scraper

Pull remote job listings from RemoteOK at scale — normalized USD salaries, structured tags, ISO-dated posts, geographic restrictions, apply links, and clean text descriptions on every row. Built for technical recruiters, remote-work analysts, and job-aggregator teams who need fresh remote-job intelligence from one of the largest English-speaking remote boards without checking the homepage every morning or maintaining a custom scraper.

### Why This Scraper?

- **17 official RemoteOK categories** — Engineering, Software Development, Senior, Lead, Management, Design, Marketing, Growth, Sales, Customer Support, Product, Operations, Finance, Data, Writing & Content, Technical, and Non-tech. Pick one or combine several in a single run.
- **5 posted-window filters** — `24h`, `7d`, `30d`, `90d`, or `any`. Surface only this week's listings for an alert, or pull a 90-day backlog for trend analysis.
- **Required-tags AND filter** — combine skills like `python` + `aws` + `senior` and only get jobs that match every one. Case-insensitive, applied across job tags.
- **USD salary parsed into three fields** — `salaryMinUSD`, `salaryMaxUSD`, and a pre-formatted `salaryText` like `$80k – $120k`. Not a free-text "salary" blob you have to regex yourself.
- **Minimum-salary filter that keeps unlisted salaries** — set a floor of, say, $100,000 and the actor returns jobs at or above it plus jobs with no salary disclosed. Most boards drop the latter silently.
- **ISO 8601 `postedDate` plus raw `postedEpoch`** — one field for humans and dashboards, one for time-series joins and recency math.
- **HTML and clean-text descriptions side by side** — keep `descriptionHtml` for fidelity, use `descriptionText` for downstream NLP, embedding, or LLM ingestion. Toggle off the cleanup pass to shrink output when you don't need it.
- **Apply links normalized to lowercase host** — RemoteOK serves mixed-case URLs (`https://remoteOK.com/...`). We lowercase the host so the same job never appears twice in your CRM or pipeline.
- **Browse deeper history than the homepage** — RemoteOK's public feed only exposes the newest ~99 jobs. This actor reaches into the deep XHR pagination layer to pull thousands of historical postings per category.

### Use Cases

**Recruiting & Talent Sourcing**
- Build a live feed of senior Engineering or Design roles for outbound targeting
- Match passive candidates to fresh openings by required skill stack
- Track which companies are hiring most aggressively for remote teams

**Compensation Benchmarking**
- Pull min/max USD salary ranges by category and seniority
- Compare disclosed pay across Engineering, Product, Design, and Marketing
- Build internal pay-band reports backed by current-market data

**Job Aggregators & Board Operators**
- Mirror RemoteOK listings into your own job board with full attribution
- Refresh categories on a daily schedule and dedupe by `id`
- Enrich your existing inventory with logos, tags, and geographic restrictions

**Market Intelligence & Research**
- Quantify demand for specific tech stacks (`react`, `rust`, `kubernetes`) over time
- Detect emerging remote-friendly industries by tag-frequency analysis
- Track location-restriction language (`europe-only`, `americas`, `worldwide`)

**Lead Generation for HR & Dev Tools**
- Identify companies hiring at scale — your buyer signal for ATS, payroll, and DevOps platforms
- Pull company logos and apply URLs for outreach personalization
- Filter by category to focus on segments that match your ICP

**Job Seekers & Career Coaches**
- Get a clean daily list of Python, Sales, or Customer Support remote roles
- Filter by minimum salary and geographic eligibility in one pass
- Export to CSV or Google Sheets for tracking applications

### Getting Started

#### Newest Jobs from the Global Feed

The simplest possible run — latest remote jobs across every category:

```json
{
    "maxResults": 100
}
````

#### Engineering Jobs Posted This Week

Narrow to one category and the last seven days:

```json
{
    "categories": ["engineer"],
    "postedWithin": "7d",
    "maxResults": 200
}
```

#### Senior Python Roles Paying $120k+

Combine a category, required-tags AND filter, and a salary floor:

```json
{
    "categories": ["engineer", "senior"],
    "requiredTags": ["python", "senior"],
    "minSalaryUSD": 120000,
    "postedWithin": "30d",
    "maxResults": 500
}
```

#### Europe-Restricted Design Jobs from a Specific URL

Paste any RemoteOK URL and add a geographic substring filter:

```json
{
    "searchUrls": ["https://remoteok.com/remote-design-jobs"],
    "locationContains": "europe",
    "keyword": "product",
    "maxResults": 100,
    "includeGlobalFeed": false
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `categories` | string\[] | `[]` | Pick one or more of 17 RemoteOK categories (Engineering, Design, Sales, Customer Support, etc.). Leave empty to use the global feed only. |
| `searchUrls` | string\[] | `[]` | Paste any RemoteOK URL — the homepage, a category page like `https://remoteok.com/remote-python-jobs`, or `https://remoteok.com/api`. Each URL is scraped separately. |
| `includeGlobalFeed` | boolean | `true` | Also pull the latest jobs across all categories and merge with category results. Turn off if you only want a specific category or URL. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keyword` | string | `""` | Only keep jobs whose title, company, tags, or description contain this text. Case-insensitive. |
| `requiredTags` | string\[] | `[]` | Only return jobs that include ALL of these tags (e.g. `python`, `react`, `senior`). Case-insensitive. |
| `minSalaryUSD` | integer | null | Only return jobs whose maximum advertised salary is at least this amount (USD/year). Jobs without disclosed salary pass through. |
| `postedWithin` | select | `"any"` | Time window: `any`, `24h`, `7d`, `30d`, or `90d`. |
| `locationContains` | string | `""` | Substring match on the job's geographic restriction (e.g. `europe`, `americas`, `worldwide`). Case-insensitive. |

#### Limits & Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum unique jobs to return across all sources. Set to `0` for unlimited. |
| `stripHtml` | boolean | `true` | Emit a clean plain-text `descriptionText` alongside the HTML description. Turn off to shrink output when you only need the raw HTML. |

### Output

Every row is a single job posting with normalized salary, dates, tags, and descriptions:

```json
{
    "id": "1078421",
    "slug": "senior-python-engineer-acme-corp-1078421",
    "url": "https://remoteok.com/remote-jobs/1078421",
    "applyUrl": "https://remoteok.com/l/1078421",
    "position": "Senior Python Engineer",
    "company": "Acme Corp",
    "companyLogoUrl": "https://remoteok.com/assets/logos/acme.png",
    "location": "Worldwide",
    "tags": ["python", "senior", "django", "aws", "remote"],
    "salaryMinUSD": 120000,
    "salaryMaxUSD": 160000,
    "salaryText": "$120k – $160k",
    "descriptionHtml": "<p>We're looking for a senior Python engineer to join our distributed team...</p>",
    "descriptionText": "We're looking for a senior Python engineer to join our distributed team...",
    "postedDate": "2026-05-12T08:30:00+00:00",
    "postedEpoch": 1747038600,
    "categories": ["engineer"],
    "sourceUrl": "https://remoteok.com/api?tags=engineer",
    "scrapedAt": "2026-05-16T14:22:31+00:00"
}
```

#### Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Unique RemoteOK job identifier. Stable across runs — use it for deduplication. |
| `slug` | string | URL-friendly job slug (e.g. `senior-python-engineer-acme-corp-1078421`). |
| `url` | string | Canonical RemoteOK listing URL, lowercase host. |
| `applyUrl` | string | RemoteOK's apply redirect link, lowercase host. May be null on global-feed rows. |
| `position` | string | Job title as posted by the company. |
| `company` | string | Hiring company name. |
| `companyLogoUrl` | string | Company logo image URL when available. |
| `location` | string | Geographic restriction text (e.g. `Worldwide`, `Europe`, `Americas only`). |
| `tags` | string\[] | Lower-cased skill, role, and seniority tags. |
| `salaryMinUSD` | number | Minimum advertised annual salary in USD. Null when not disclosed. |
| `salaryMaxUSD` | number | Maximum advertised annual salary in USD. Null when not disclosed. |
| `salaryText` | string | Pre-formatted range like `$120k – $160k` or `up to $100k`. Null when not disclosed. |
| `descriptionHtml` | string | Full job description with original HTML markup preserved. |
| `descriptionText` | string | Clean plain-text version of the description. Null when `stripHtml` is off. |
| `postedDate` | string | ISO 8601 timestamp of when the job was posted. |
| `postedEpoch` | number | Unix epoch seconds of the posting date — useful for time-series joins. |
| `categories` | string\[] | RemoteOK category slug(s) the job was pulled from. |
| `sourceUrl` | string | The exact feed URL that produced this row. |
| `scrapedAt` | string | ISO 8601 timestamp of extraction. |

### Tips for Best Results

- **Start small.** Run with `maxResults: 50` on your first try to confirm the categories and filters return what you expect, then scale up.
- **Combine `categories` and `requiredTags`.** Categories narrow the source feed; tags narrow within it. Pairing `categories: ["engineer"]` with `requiredTags: ["rust"]` is far faster than pulling Engineering and filtering on the consumer side.
- **Leave `minSalaryUSD` empty when you want full coverage.** RemoteOK paywalls salary on many listings — setting a floor drops only the jobs whose disclosed maximum is below it, but unlisted-salary jobs always pass through. Set it deliberately when you only want paid-disclosure roles.
- **Use `postedWithin: "24h"` for daily-alert workflows.** Schedule the actor on Apify, dedupe by `id` against yesterday's run, and you have a clean new-jobs feed.
- **Use `keyword` for cross-field matching.** It searches title, company, tags, and description in one pass — handy for niche terms like `"hugging face"` or `"vector database"` that don't have dedicated tags.
- **Pick the description format that matches your downstream tool.** Keep `descriptionHtml` if you need formatting (lists, links, headings) preserved for rendering or a search index that handles HTML; the bundled `descriptionText` is friendlier for downstream NLP, embeddings, and plain-text storage.
- **Keep `includeGlobalFeed: true` for category runs.** RemoteOK's category pages can omit jobs that were filed under a sibling tag — merging the global feed back in catches them, and the deduper drops repeats by `id`.

### Pricing

**$1.00 per 1,000 results.** No compute charges — you only pay per result returned.

| Results | Estimated Cost |
|---------|----------------|
| 100 | $0.10 |
| 1,000 | $1.00 |
| 10,000 | $10.00 |
| 100,000 | $100.00 |

A "result" is any unique job row in the output dataset. Platform fees beyond per-result charges do not apply to this actor.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate recruiting, market research, compensation benchmarking, and job-board operations. Users are responsible for complying with applicable laws and RemoteOK's terms of service. Do not use extracted data for spam, harassment, or any illegal purpose, and respect the privacy of any personal contact information surfaced in job descriptions.

# Actor input Schema

## `categories` (type: `array`):

Pick one or more RemoteOK job categories. Leave empty to pull from the global feed only.

## `searchUrls` (type: `array`):

Paste any RemoteOK URL — for example https://remoteok.com/remote-jobs, a category page like https://remoteok.com/remote-python-jobs, or https://remoteok.com/api. Each URL is scraped separately. Optional.

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

Only keep jobs whose title, company name, tags, or description contain this text. Case-insensitive. Leave empty to skip.

## `maxResults` (type: `integer`):

Maximum number of unique jobs to return across all sources. Set to 0 for unlimited. RemoteOK exposes up to ~20,000 historical postings per source — pagination stops automatically when the catalogue is exhausted.

## `requiredTags` (type: `array`):

Only return jobs that include ALL of these tags (e.g. python, react, senior). Case-insensitive. Leave empty to skip.

## `minSalaryUSD` (type: `integer`):

Only return jobs whose maximum advertised salary is at least this much (USD per year). Jobs without salary data pass through. Leave empty for no filter.

## `postedWithin` (type: `string`):

Only include jobs posted within this time window.

## `locationContains` (type: `string`):

Substring match on the job's geographic restriction text (e.g. europe, americas, worldwide, remote). Case-insensitive. Leave empty to skip.

## `includeGlobalFeed` (type: `boolean`):

Also pull https://remoteok.com/api (the latest jobs across all categories) and merge with category results. Turn off if you only want a specific category page or URL.

## `stripHtml` (type: `boolean`):

Emit a clean plain-text descriptionText field alongside the HTML description. Turn off to skip the cleanup step and shrink output size.

## Actor input object example

```json
{
  "categories": [
    "engineer"
  ],
  "searchUrls": [],
  "keyword": "",
  "maxResults": 100,
  "requiredTags": [],
  "postedWithin": "any",
  "locationContains": "",
  "includeGlobalFeed": true,
  "stripHtml": true
}
```

# Actor output Schema

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

Table of scraped jobs with key fields.

## `detail` (type: `string`):

Complete job data including descriptions, tags, and parsed salary fields.

# 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 = {
    "categories": [
        "engineer"
    ],
    "searchUrls": [],
    "keyword": "",
    "maxResults": 100,
    "requiredTags": [],
    "postedWithin": "any",
    "locationContains": "",
    "includeGlobalFeed": true,
    "stripHtml": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "categories": ["engineer"],
    "searchUrls": [],
    "keyword": "",
    "maxResults": 100,
    "requiredTags": [],
    "postedWithin": "any",
    "locationContains": "",
    "includeGlobalFeed": True,
    "stripHtml": True,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/remoteok-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 '{
  "categories": [
    "engineer"
  ],
  "searchUrls": [],
  "keyword": "",
  "maxResults": 100,
  "requiredTags": [],
  "postedWithin": "any",
  "locationContains": "",
  "includeGlobalFeed": true,
  "stripHtml": true
}' |
apify call solidcode/remoteok-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RemoteOK Jobs Scraper",
        "description": "[💰 $1.0 / 1K] Extract remote jobs from RemoteOK by category, keyword, salary, tags, location, and posted-within window. Returns structured data with normalized salaries, ISO dates, and clean descriptions.",
        "version": "1.0",
        "x-build-id": "jen5I4JSNudAF9N6i"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~remoteok-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-remoteok-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/solidcode~remoteok-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-remoteok-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/solidcode~remoteok-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-remoteok-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": {
                    "categories": {
                        "title": "Categories",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Pick one or more RemoteOK job categories. Leave empty to pull from the global feed only.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "engineer",
                                "software",
                                "technical",
                                "senior",
                                "lead",
                                "management",
                                "design",
                                "marketing",
                                "growth",
                                "sales",
                                "support",
                                "product",
                                "ops",
                                "finance",
                                "data",
                                "writing",
                                "non-tech"
                            ],
                            "enumTitles": [
                                "Engineering",
                                "Software development",
                                "Technical",
                                "Senior",
                                "Lead",
                                "Management",
                                "Design",
                                "Marketing",
                                "Growth",
                                "Sales",
                                "Customer support",
                                "Product",
                                "Operations",
                                "Finance",
                                "Data",
                                "Writing & content",
                                "Non-tech"
                            ]
                        },
                        "default": []
                    },
                    "searchUrls": {
                        "title": "RemoteOK URLs",
                        "type": "array",
                        "description": "Paste any RemoteOK URL — for example https://remoteok.com/remote-jobs, a category page like https://remoteok.com/remote-python-jobs, or https://remoteok.com/api. Each URL is scraped separately. Optional.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Only keep jobs whose title, company name, tags, or description contain this text. Case-insensitive. Leave empty to skip.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of unique jobs to return across all sources. Set to 0 for unlimited. RemoteOK exposes up to ~20,000 historical postings per source — pagination stops automatically when the catalogue is exhausted.",
                        "default": 100
                    },
                    "requiredTags": {
                        "title": "Required Tags",
                        "type": "array",
                        "description": "Only return jobs that include ALL of these tags (e.g. python, react, senior). Case-insensitive. Leave empty to skip.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minSalaryUSD": {
                        "title": "Minimum Salary (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return jobs whose maximum advertised salary is at least this much (USD per year). Jobs without salary data pass through. Leave empty for no filter."
                    },
                    "postedWithin": {
                        "title": "Posted Within",
                        "enum": [
                            "any",
                            "24h",
                            "7d",
                            "30d",
                            "90d"
                        ],
                        "type": "string",
                        "description": "Only include jobs posted within this time window.",
                        "default": "any"
                    },
                    "locationContains": {
                        "title": "Location Contains",
                        "type": "string",
                        "description": "Substring match on the job's geographic restriction text (e.g. europe, americas, worldwide, remote). Case-insensitive. Leave empty to skip.",
                        "default": ""
                    },
                    "includeGlobalFeed": {
                        "title": "Include Global Feed",
                        "type": "boolean",
                        "description": "Also pull https://remoteok.com/api (the latest jobs across all categories) and merge with category results. Turn off if you only want a specific category page or URL.",
                        "default": true
                    },
                    "stripHtml": {
                        "title": "Include Plain-Text Description",
                        "type": "boolean",
                        "description": "Emit a clean plain-text descriptionText field alongside the HTML description. Turn off to skip the cleanup step and shrink output size.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
