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

Scrape remote job listings from Remote OK (remoteok.com): position, company, tags, location, salary range, posted date and apply URL. Pull Remote OK's entire live board or filter by tags in bulk. One clean row per job, no login or API key needed.

- **URL**: https://apify.com/scrapeworks/remoteok-jobs-scraper.md
- **Developed by:** [Nicolas van Arkens](https://apify.com/scrapeworks) (community)
- **Categories:** Jobs, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 🌍💼

**Scrape remote job listings from [Remote OK](https://remoteok.com) — position, company, tags, location, salary range, posted date and apply URL — as clean, structured JSON/CSV/Excel.** Pull Remote OK's entire live board in one run, or target only the tags (skills, roles, categories) you care about. No login, no API key, no browser — one tidy row per job.

Great for building a remote-jobs board or newsletter, sourcing candidates, market/salary research, feeding an ATS or job aggregator, lead-gen for recruiters, and tracking who is hiring remotely.

---

### What you get (fields)

Every job is one flat row with these fields:

| Field | Description |
|---|---|
| `id` | Remote OK job id (stable, unique — use it to de-duplicate across runs) |
| `slug` | Remote OK URL slug |
| `position` | Job title, e.g. "Senior Python Engineer" |
| `company` | Hiring company name |
| `location` | Location / region text the employer set (e.g. "United States", "Worldwide", "Philippines") — remote roles often list a region or timezone |
| `isRemote` | Always `true` — every Remote OK job is remote |
| `tags` | List of Remote OK tags (skills / role / category), e.g. `["python","backend","senior","aws"]` |
| `salaryMin` / `salaryMax` | Disclosed salary range in USD (many posts don't disclose one → `null`) |
| `salaryCurrency` | `"USD"` when a salary is disclosed |
| `salaryPeriod` | `"year"` or `"hour"` (inferred from magnitude) |
| `postedAt` | ISO 8601 timestamp the job was posted |
| `epoch` | Unix timestamp the job was posted |
| `description` | Full job description as clean plain text (HTML stripped, mojibake fixed) |
| `descriptionHtml` | The original job description HTML (for rendering) |
| `applyUrl` | Remote OK apply URL for the job |
| `url` | Canonical Remote OK listing URL |
| `sourceTag` | Which tag feed this job first surfaced under (`null` = the whole-board feed) |
| `scrapedAt` | ISO 8601 timestamp of the scrape |

---

### How it works — bulk by design

Remote OK publishes a public JSON feed. Each feed (whole-board or per-tag) returns roughly its **100 most-recent jobs**, and Remote OK ignores offset/page params — so **depth comes from breadth**: the scraper fetches one feed per tag you list, **plus** the whole-board feed, and **merges everything, removing duplicate job ids globally**. Supply a broad tag list (the default does) and you pull essentially Remote OK's **entire live board (~1,000–1,200 unique jobs)** in a single run. Trim the list to scrape just your niches.

You are only billed for **unique** jobs — a posting seen under five tags is charged once.

---

### Input

| Input | What it does |
|---|---|
| **Tags / keywords** (`tags`) | Remote OK tags to scrape (`python`, `react`, `design`, `marketing`, `customer support`, `devops`, `sales`, …). One feed per tag, merged & de-duplicated. The default list pulls the whole board; multi-word tags like `customer support`, `web dev`, `content writing`, `front end` work as written. Leave empty to scrape only the whole-board feed. |
| **Also scrape the whole-board feed** (`includeFullFeed`) | On by default — also grabs the ~100 most-recently posted jobs across every category. |
| **Minimum salary (USD)** (`minSalary`) | Optional — keep only jobs whose disclosed salary is at least this. Undisclosed-salary jobs are dropped when set. |
| **Max results** (`maxResults`) | Cap on unique jobs for the whole run (billed per row). Lower it to cap cost on a test run. |
| **Proxy** (`proxyConfiguration`) | The actor fetches directly first (cheapest) and only falls back to this proxy, rotating sessions, if a response is blocked. |

#### Example input

```json
{
  "tags": ["python", "react", "devops", "design", "marketing", "customer support"],
  "includeFullFeed": true,
  "minSalary": 80000,
  "maxResults": 1000
}
````

Grab the **whole board** by keeping the default tag list and setting `maxResults` high. Grab a **single niche** with, e.g., `{"tags": ["golang"], "includeFullFeed": false}`.

***

### Output sample

```json
{
  "id": "1134961",
  "slug": "remote-senior-product-manager-platform-delinea-1134961",
  "position": "Senior Product Manager Platform",
  "company": "Delinea",
  "location": "Redwood City",
  "isRemote": true,
  "tags": ["product manager", "exec", "saas", "infosec", "cloud", "senior", "engineer"],
  "salaryMin": 130000,
  "salaryMax": 162000,
  "salaryCurrency": "USD",
  "salaryPeriod": "year",
  "postedAt": "2026-07-17T08:00:42+00:00",
  "epoch": 1784275242,
  "description": "About Delinea:\nDelinea is a pioneer in securing human and machine identities...",
  "descriptionHtml": "<p><strong>About Delinea:</strong><br />Delinea is a pioneer...</p>",
  "applyUrl": "https://remoteok.com/remote-jobs/remote-senior-product-manager-platform-delinea-1134961",
  "url": "https://remoteok.com/remote-jobs/remote-senior-product-manager-platform-delinea-1134961",
  "sourceTag": "saas",
  "scrapedAt": "2026-07-20T05:56:41.068205+00:00"
}
```

***

### Use cases

- **Build or fill a remote-jobs board / newsletter** — pull the whole board daily, de-duplicate on `id`, and publish.
- **Recruiting & sourcing** — see which companies are hiring remotely for a skill, with salary bands where disclosed.
- **Salary & market research** — analyze disclosed pay across tags and roles over time.
- **Feed an aggregator / ATS** — clean structured rows ready to import.

***

### FAQ

**Do I need a Remote OK account or API key?** No. The feed is public; the actor needs neither.

**How many jobs can I get per run?** Roughly Remote OK's whole live board — about 1,000–1,200 unique jobs — with the default tag list. Each individual feed is capped at ~100 by Remote OK, so more tags = more coverage.

**Why don't all jobs have a salary?** Many employers don't disclose one on Remote OK. Those rows have `salaryMin`/`salaryMax` = `null`. Use **Minimum salary** to keep only disclosed-salary jobs.

**Can I get just one skill/category?** Yes — set `tags` to that one tag and turn `includeFullFeed` off.

**Is the description clean?** Yes — the actor strips HTML into plain text and fixes Remote OK's text encoding quirks. The original HTML is also kept in `descriptionHtml`.

**How is it billed?** Pay-per-result: one charge per **unique** job returned. Duplicates across tags are never double-charged.

***

### Attribution

Data comes from **Remote OK** (remoteok.com). Per Remote OK's API terms, if you republish this data please **link back to the job's Remote OK URL** (the `url` field) and credit Remote OK as the source.

# Actor input Schema

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

Remote OK tags (categories, skills or roles) to scrape - e.g. 'python', 'react', 'design', 'marketing', 'customer support', 'devops', 'sales'. One feed is fetched per tag and merged, so more tags = more jobs (duplicates across tags are removed automatically). Each tag feed returns Remote OK's ~100 most-recent jobs for that tag, so a broad list pulls almost the entire live board (~1000-1200 unique jobs). Multi-word tags work as written ('customer support', 'web dev', 'content writing', 'front end'). Leave empty to scrape only the whole-board feed below. Tip: keep the default list to grab the whole board, or trim it to just the niches you care about.

## `includeFullFeed` (type: `boolean`):

If enabled (default), the actor also fetches Remote OK's whole-board feed (the ~100 most-recently posted jobs across every category) in addition to the tag feeds above. Turn this off to scrape ONLY the tags you listed. If you list no tags, the whole-board feed is always fetched.

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

Optional: only keep jobs whose disclosed salary is at least this many US dollars (compared against the job's upper salary figure). Many Remote OK posts do not disclose a salary and will be dropped when this is set. Leave empty to keep every job regardless of salary.

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

Maximum number of unique jobs to return for the whole run (across all tags, after removing duplicates). Results are billed per job row. The whole Remote OK board is roughly 1000-1200 live jobs, so a high value with the default tag list pulls essentially everything. Lower it to cap cost on a test run.

## `proxyConfiguration` (type: `object`):

Proxy used to reach remoteok.com. The actor fetches directly first (cheapest) and only falls back to this proxy, rotating to a fresh session, if a response comes back blocked. The default (Apify Residential, US) is a safe fallback; remote-job salaries are in USD regardless of proxy country.

## Actor input object example

```json
{
  "tags": [
    "python",
    "react",
    "devops",
    "design",
    "marketing",
    "customer support"
  ],
  "includeFullFeed": true,
  "maxResults": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "tags": [
        "dev",
        "engineer",
        "senior",
        "python",
        "javascript",
        "react",
        "golang",
        "backend",
        "front end",
        "full stack",
        "mobile",
        "devops",
        "cloud",
        "data",
        "infosec",
        "design",
        "designer",
        "product",
        "marketing",
        "sales",
        "customer support",
        "ops",
        "exec",
        "finance",
        "content writing",
        "hr",
        "recruiter",
        "medical",
        "legal",
        "education",
        "excel",
        "saas",
        "ecommerce",
        "video",
        "web dev",
        "virtual assistant",
        "non tech"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeworks/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 = {
    "tags": [
        "dev",
        "engineer",
        "senior",
        "python",
        "javascript",
        "react",
        "golang",
        "backend",
        "front end",
        "full stack",
        "mobile",
        "devops",
        "cloud",
        "data",
        "infosec",
        "design",
        "designer",
        "product",
        "marketing",
        "sales",
        "customer support",
        "ops",
        "exec",
        "finance",
        "content writing",
        "hr",
        "recruiter",
        "medical",
        "legal",
        "education",
        "excel",
        "saas",
        "ecommerce",
        "video",
        "web dev",
        "virtual assistant",
        "non tech",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapeworks/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 '{
  "tags": [
    "dev",
    "engineer",
    "senior",
    "python",
    "javascript",
    "react",
    "golang",
    "backend",
    "front end",
    "full stack",
    "mobile",
    "devops",
    "cloud",
    "data",
    "infosec",
    "design",
    "designer",
    "product",
    "marketing",
    "sales",
    "customer support",
    "ops",
    "exec",
    "finance",
    "content writing",
    "hr",
    "recruiter",
    "medical",
    "legal",
    "education",
    "excel",
    "saas",
    "ecommerce",
    "video",
    "web dev",
    "virtual assistant",
    "non tech"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call scrapeworks/remoteok-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "RemoteOK Jobs Scraper",
        "description": "Scrape remote job listings from Remote OK (remoteok.com): position, company, tags, location, salary range, posted date and apply URL. Pull Remote OK's entire live board or filter by tags in bulk. One clean row per job, no login or API key needed.",
        "version": "0.1",
        "x-build-id": "2JGSiqd5Fic5xOO1r"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapeworks~remoteok-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapeworks-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/scrapeworks~remoteok-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapeworks-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/scrapeworks~remoteok-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapeworks-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": {
                    "tags": {
                        "title": "Tags / keywords",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Remote OK tags (categories, skills or roles) to scrape - e.g. 'python', 'react', 'design', 'marketing', 'customer support', 'devops', 'sales'. One feed is fetched per tag and merged, so more tags = more jobs (duplicates across tags are removed automatically). Each tag feed returns Remote OK's ~100 most-recent jobs for that tag, so a broad list pulls almost the entire live board (~1000-1200 unique jobs). Multi-word tags work as written ('customer support', 'web dev', 'content writing', 'front end'). Leave empty to scrape only the whole-board feed below. Tip: keep the default list to grab the whole board, or trim it to just the niches you care about.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeFullFeed": {
                        "title": "Also scrape the whole-board feed",
                        "type": "boolean",
                        "description": "If enabled (default), the actor also fetches Remote OK's whole-board feed (the ~100 most-recently posted jobs across every category) in addition to the tag feeds above. Turn this off to scrape ONLY the tags you listed. If you list no tags, the whole-board feed is always fetched.",
                        "default": true
                    },
                    "minSalary": {
                        "title": "Minimum salary (USD)",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Optional: only keep jobs whose disclosed salary is at least this many US dollars (compared against the job's upper salary figure). Many Remote OK posts do not disclose a salary and will be dropped when this is set. Leave empty to keep every job regardless of salary."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Maximum number of unique jobs to return for the whole run (across all tags, after removing duplicates). Results are billed per job row. The whole Remote OK board is roughly 1000-1200 live jobs, so a high value with the default tag list pulls essentially everything. Lower it to cap cost on a test run.",
                        "default": 1000
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach remoteok.com. The actor fetches directly first (cheapest) and only falls back to this proxy, rotating to a fresh session, if a response comes back blocked. The default (Apify Residential, US) is a safe fallback; remote-job salaries are in USD regardless of proxy country.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
