# Jobs.cz Scraper (`memo23/jobscz-scraper`) Actor

Turn Jobs.cz into structured Czech hiring data. Pull salary ranges, benefits, geo coordinates, required languages and full descriptions from any search or position URL. Handles every Jobs.cz page type, one clean row per job. JSON or CSV out, billed per result.

- **URL**: https://apify.com/memo23/jobscz-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Jobs, AI, Agents
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 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

## Jobs.cz Scraper

Extract structured job listings from **Jobs.cz**, the largest job board in the Czech Republic. Turn any search, profession, or direct position URL into clean rows carrying title, employer, salary, location, benefits, required education and languages, and the full job description — ready for market research, salary benchmarking, and recruitment analytics.

#### How it works

![How the Jobs.cz Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-jobscz.png)

#### ✨ Why use this scraper?

- **Rich structured output** — salary min/max with currency and period, map coordinates, benefits, required education, and required languages, not just a title and a blob of text.
- **Every page type handled** — Jobs.cz serves positions through three different templates (interactive widget, classic server-rendered, and employer-branded micro-sites). This scraper detects and parses all three, so you never get empty rows.
- **Direct + search URLs** — paste a filtered search URL, a profession/location route, or a direct `/rpd/{id}/` position URL. They're auto-classified and can be mixed in one run.
- **Recency filter** — restrict a run to positions published in the last N hours for lightweight daily monitoring.
- **Clean, deduplicated rows** — one row per position, deduped by ID, normalised into a stable column layout.
- **Optional employer email enrichment** — opt-in, best-effort contact-email discovery per employer.

#### 🎯 Use cases

| Audience | What they get |
|---|---|
| **Market analysts** | Track hiring demand by profession, city, and region across the Czech market. |
| **Compensation teams** | Benchmark salary ranges by role, employer, and location using structured min/max values. |
| **Recruiters & sourcers** | Monitor competitor hiring, high-volume employers, and fresh postings. |
| **Job boards & aggregators** | Feed normalised Jobs.cz listings into an internal search product or pipeline. |
| **Data teams** | Build datasets with geo coordinates, benefits, and language requirements for modelling. |

#### 📥 Supported inputs

| Input pattern | Example | Handled as |
|---|---|---|
| Profession / location route | `https://www.jobs.cz/prace/programator/` | Listing |
| Filtered search URL | `https://www.jobs.cz/prace/praha/?q[]=vývojář` | Listing |
| Direct position URL | `https://www.jobs.cz/rpd/2001279170/` | Position detail |

**Not supported:** logged-in recruiter areas, candidate accounts, or any content behind a Jobs.cz login. Only publicly available position pages are accessed.

#### ⚠️ Proxy note

Jobs.cz works over direct connections and residential proxies; Apify **datacenter** proxies are blocked by the site. The input defaults to a residential proxy pinned to the Czech Republic, which is recommended for larger runs.

#### 🔄 How it works

1. **Classify** each start URL as a listing/search page or a direct position URL.
2. **Walk pagination** on listing pages (`?page=N`), collecting position IDs until the results run out or `maxItems` is reached.
3. **Detect the page type** for each position: interactive widget, classic server-rendered, or employer-branded micro-site.
4. **Extract** the structured data — via the site's own position-detail GraphQL API for widget pages, or by parsing the DOM for classic/branded pages.
5. **Normalise & push** one clean row per position to the dataset.

#### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `["https://www.jobs.cz/prace/programator/"]` | Jobs.cz listing/search and/or direct position URLs. |
| `enrichEmails` | boolean | `false` | Opt-in employer contact-email discovery (billed per email found). |
| `postedWithinHours` | integer | `24` (prefill) | Keep only positions published within the last N hours; `0`/empty = all. |
| `maxItems` | integer | `1000` | Hard cap on positions collected. |
| `maxConcurrency` | integer | `10` | Max position detail requests in parallel. |
| `proxy` | object | Residential (CZ) | Proxy configuration. |

#### 📊 Output overview

Each dataset item is one job position. Fields common to all Jobs.cz positions (title, employer, location, apply URL, description) are always present; the richer structured block (salary, coordinates, benefits, required education/languages, suitability flags) is populated from the site's position-detail API when available. A small share of employer-branded listings expose core fields (title, company, teaser, apply URL) but not the full structured block — those rows carry `detailSource: "branded"` so you can tell them apart.

#### 📦 Output sample

```json
{
  "type": "job",
  "source": "jobs.cz",
  "jobId": "2001279170",
  "jobUrl": "https://www.jobs.cz/rpd/2001279170/",
  "title": "Senior Data Science, Python Developer",
  "companyName": "Agnostix, s.r.o.",
  "location": "Hybernská, Nové Město, Praha, Hlavní město Praha, Česká republika",
  "remote": false,
  "salary": { "currency": "CZK", "min": 140000, "max": 180000, "unit": "měsíc", "raw": "140000–180000 Kč/měsíc" },
  "salaryRaw": "140000–180000 Kč/měsíc",
  "categories": ["IS/IT: Vývoj aplikací a systémů", "Machine Learning Engineer", "Python vývojář"],
  "employmentTypes": ["Práce na plný úvazek"],
  "contractType": "pracovní smlouva, práce na živnostenský list (IČO)",
  "requiredEducation": "Vysokoškolské / univerzitní",
  "requiredLanguages": ["Čeština — Výborná"],
  "benefits": ["Firemní akce", "Možnost občasné práce z domova", "Nadstandardní lékařská péče"],
  "coordinates": { "latitude": 50.08714305470315, "longitude": 14.433809200686099 },
  "postedDate": "2026-06-12T16:22:22+02:00",
  "companyPhone": "+420 774 527 762",
  "description": "<p>🧐 <strong>Hledáme Data Science se znalostí Pythonu…</strong></p>",
  "descriptionText": "🧐 Hledáme Data Science se znalostí Pythonu pro projekt v oblasti Telco…",
  "applyType": "internal",
  "applyUrl": "https://www.jobs.cz/jof/2001279170/",
  "detailSource": "graphql",
  "scrapedAt": "2026-07-12T03:44:48.167Z"
}
````

#### 🗂 Key output fields

| Category | Fields |
|---|---|
| **Identity** | `jobId`, `jobUrl`, `title`, `source` |
| **Employer** | `companyName`, `companyPhone`, `companyEmail`, `employerHost` |
| **Location** | `location`, `addressLocality`, `addressRegion`, `postcode`, `country`, `coordinates` |
| **Compensation** | `salary` (`currency`, `min`, `max`, `unit`, `raw`), `salaryRaw` |
| **Classification** | `categories`, `employmentTypes`, `contractType`, `contractDuration`, `hours`, `requiredEducation`, `requiredLanguages`, `benefits`, `remote` |
| **Suitability** | `suitableForGraduate`, `suitableForDisabled`, `suitableForPensioner`, `suitableForMaternityLeave` |
| **Dates** | `postedDate`, `closingDate` |
| **Content** | `description` (HTML), `descriptionText` (plain), `teaser` |
| **Apply** | `applyType`, `applyUrl`, `applyEmail` |
| **Meta** | `detailSource` (`graphql` / `classic` / `branded`), `scrapedAt` |

#### ❓ FAQ

**Why do some rows have less data than others?**
Jobs.cz renders positions through three templates. Widget and classic pages yield the full structured block. A minority of employer-branded micro-sites expose only core fields (title, company, teaser, apply URL); those rows are tagged `detailSource: "branded"`.

**Does it return salary for every job?**
No — many Czech listings don't publish a salary. When the site shows one, it's parsed into `salary.min`/`salary.max` with currency and period.

**Can I scrape a specific search?**
Yes. Run your search on jobs.cz with any keyword, location, or filter, then copy the resulting address-bar URL into `startUrls`.

**How do I get only fresh jobs?**
Set `postedWithinHours` (e.g. `24`). Positions without a published date are always kept.

**Does it need a proxy?**
Direct connections work, but a residential proxy (Czech Republic) is recommended for larger runs. Apify datacenter proxies are blocked by the site.

#### 💬 Support

Found a bug or need a new field? Open an issue on the actor's **Issues** tab and it'll be looked at.

#### 🛠 Additional services

Need a custom scraper for another job board, directory, or listing site? Custom builds, scheduled runs, and enrichment pipelines are available on request.

#### 🔎 Explore more scrapers

Looking for other markets? Check out the other job-board scrapers in the same style, covering boards across Europe and beyond.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Jobs.cz, Alma Career, LMC s.r.o., or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available job-listing pages — no authenticated endpoints, recruiter-only features, or content behind a Jobs.cz login. Users are responsible for ensuring their use complies with Jobs.cz's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.

***

### SEO Keywords

jobs.cz scraper, scrape jobs.cz, jobs.cz api, jobs.cz job scraper, czech job board scraper, czech republic jobs data, prague jobs scraper, jobs.cz crawler, apify jobs.cz, czech jobs api, salary benchmark czech republic, recruitment data czech, hiring trends czech republic, alma career scraper, lmc jobs scraper, jobs.cz salary data, czech vacancy scraper, job listings czech republic, jobs.cz alternative api, praha jobs scraper

# Actor input Schema

## `startUrls` (type: `array`):

Full Jobs.cz URLs to crawl. Mix listing/search and direct position URLs in the same array if useful. To build a search URL, run your query on jobs.cz and copy the resulting address bar URL.

## `enrichEmails` (type: `boolean`):

If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.

## `postedWithinHours` (type: `integer`):

Filters on each position's published (validFrom) date. Set 24 for the last day, 72 for the last 3 days, etc. Leave empty (or 0) to return everything regardless of age. Note: positions served from the classic detail template may not expose a published date and are always kept.

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

Hard cap on the number of positions collected. Jobs.cz has tens of thousands of listings; use this cap to limit billing.

## `maxConcurrency` (type: `integer`):

Maximum number of position detail requests processed in parallel.

## `minConcurrency` (type: `integer`):

Minimum number of position detail requests processed in parallel.

## `maxRequestRetries` (type: `integer`):

Number of retries before a failed request is given up.

## `proxy` (type: `object`):

Jobs.cz works over direct connections and residential proxies; Apify datacenter proxies are blocked. A residential proxy (Czech Republic) is recommended for larger runs.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.jobs.cz/prace/programator/"
  ],
  "enrichEmails": false,
  "postedWithinHours": 24,
  "maxItems": 1000,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.jobs.cz/prace/programator/"
    ],
    "postedWithinHours": 24,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CZ"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/jobscz-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 = {
    "startUrls": ["https://www.jobs.cz/prace/programator/"],
    "postedWithinHours": 24,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CZ",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/jobscz-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 '{
  "startUrls": [
    "https://www.jobs.cz/prace/programator/"
  ],
  "postedWithinHours": 24,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}' |
apify call memo23/jobscz-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Jobs.cz Scraper",
        "description": "Turn Jobs.cz into structured Czech hiring data. Pull salary ranges, benefits, geo coordinates, required languages and full descriptions from any search or position URL. Handles every Jobs.cz page type, one clean row per job. JSON or CSV out, billed per result.",
        "version": "0.0",
        "x-build-id": "26WdcaBbPwNEjpcz9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~jobscz-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-jobscz-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/memo23~jobscz-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-jobscz-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/memo23~jobscz-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-jobscz-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": {
                    "startUrls": {
                        "title": "Jobs.cz URLs",
                        "type": "array",
                        "description": "Full Jobs.cz URLs to crawl. Mix listing/search and direct position URLs in the same array if useful. To build a search URL, run your query on jobs.cz and copy the resulting address bar URL.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichEmails": {
                        "title": "Enrich with employer contact emails (experimental, billed per email)",
                        "type": "boolean",
                        "description": "If enabled, tries to find a contact email for each employer by discovering the company's website (Clearbit) and reading its contact/about pages. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.",
                        "default": false
                    },
                    "postedWithinHours": {
                        "title": "Only jobs posted in the last N hours",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filters on each position's published (validFrom) date. Set 24 for the last day, 72 for the last 3 days, etc. Leave empty (or 0) to return everything regardless of age. Note: positions served from the classic detail template may not expose a published date and are always kept."
                    },
                    "maxItems": {
                        "title": "Maximum items to scrape",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the number of positions collected. Jobs.cz has tens of thousands of listings; use this cap to limit billing.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of position detail requests processed in parallel.",
                        "default": 10
                    },
                    "minConcurrency": {
                        "title": "Min concurrency",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Minimum number of position detail requests processed in parallel.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of retries before a failed request is given up.",
                        "default": 5
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Jobs.cz works over direct connections and residential proxies; Apify datacenter proxies are blocked. A residential proxy (Czech Republic) is recommended for larger runs.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "CZ"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
