# Personio Jobs Scraper (FreshActors) (`freshactors/personio-jobs-scraper`) Actor

Reliable, always-fresh job postings from any Personio career portal. Public XML feed, no login — departments, seniority, and full descriptions in a single call. Monitored daily. By FreshActors.

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

## Pricing

from $20.00 / 1,000 company jobs fetcheds

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

## Personio Jobs Scraper — Every Career Portal as Clean JSON (No API Key)

Scrape **Personio career-portal job postings** from any company's public board into clean, structured JSON — title, **department**, **seniority**, full description sections, locations, posting date, and apply URL. No account, no login, no API key. Point it at a list of Personio tenants and get a normalized jobs feed back.

![Personio Jobs Scraper — normalized job postings with departments and seniority](https://raw.githubusercontent.com/Freshactors/freshactors-assets/main/personio-screenshot.png)

> ✅ **Last verified working: 2026-06-10.** Monitored by an automated daily canary. When Personio changes its feed, we patch fast and log it in the changelog below — so your hiring-data pipeline doesn't silently break.

---

### Why this Personio scraper

Personio is the ATS standard for the **German, Austrian, and Swiss SMB market** — thousands of DACH companies run their careers page on a `{tenant}.jobs.personio.de` portal, and every one of those portals serves a **public XML feed** of its published positions at the explicit `/xml` path. No key, no login, no browser. One request returns the **whole board with full descriptions, departments, and seniority levels** — metadata most ATS feeds don't expose. The catch is the usual one: the moment the feed shape shifts, a naive scraper silently returns nothing. This actor is built to **stay working**:

- **One normalized schema** — the same stable job record as our [Greenhouse & Lever](https://apify.com/freshactors/greenhouse-lever-jobs-scraper), [Workable](https://apify.com/freshactors/workable-jobs-scraper), [SmartRecruiters](https://apify.com/freshactors/smartrecruiters-jobs-scraper), [Recruitee](https://apify.com/freshactors/recruitee-jobs-scraper), and [Teamtailor](https://apify.com/freshactors/teamtailor-jobs-scraper) scrapers, so Personio companies slot into the exact same pipeline with no special-casing.
- **Departments + seniority included** — Personio's feed exposes `department`, `seniority` (entry-level / experienced / …), and employment schedule on every position: the segmentation fields hiring-signal and recruiting datasets usually have to infer.
- **Full descriptions, in one call** — every description section ("About the role", "Your profile", …) comes back as labeled clean text. No extra requests, so it's fast and cheap.
- **Language option** — pass `language: "en"` (or `de`, …) to get localized titles/descriptions where the company provides them.
- **Per-company isolation + retries** — a dead or unknown tenant is skipped and logged; it never crashes the run. Transient errors retry with backoff.
- **Stable, versioned output** (`_schemaVersion`) + a **daily canary** — that "last verified working" date is real.

### What data you get

Each row is one normalized job posting. Fields Personio's public feed doesn't provide come back as `null`, never missing, so your downstream schema stays predictable.

| Field | Type | Description |
|---|---|---|
| `_type` | string | Always `job`. |
| `_schemaVersion` | string | Output schema version. |
| `_source` | string | Always `personio`. |
| `company` | string | Tenant identifier (the `{tenant}.jobs.personio.de` subdomain). |
| `jobId` | string | Personio position ID. |
| `title` | string | Job title. |
| `department` | string \| null | Department (populated on virtually every posting). |
| `seniority` | string \| null | Seniority level (e.g. `entry-level`, `experienced`). |
| `team` | null | Not exposed in the feed — always `null`. |
| `location` | string \| null | Primary office string (as the company writes it, e.g. `DE - Stuttgart`). |
| `allLocations` | string[] \| null | All listed offices (comma-separated offices split out). |
| `workplaceType` | null | Not exposed as a dedicated field — remote status often appears in the office string. |
| `commitment` | string \| null | Schedule (Full-time, Part-time, …). |
| `country` | null | Personio gives free-form office names, not country codes — always `null`. |
| `url` | string | Public posting URL (`/job/{id}`). |
| `applyUrl` | string | The posting page (applications happen there). |
| `postedAt` | string \| null | Creation date (ISO). |
| `updatedAt` | null | Not exposed in the feed — always `null`. |
| `descriptionText` | string \| null | All description sections as labeled clean text (when `includeDescription` is on). |
| `_scrapedAt` | string | ISO timestamp this record was fetched. |

### Use cases

- **DACH sales intelligence / hiring-signal tracking.** Personio is where German-speaking SMB hiring lives — a segment US-centric ATS datasets miss entirely. `department` + `seniority` + `postedAt` feed straight into lead-scoring and growth-signal models.
- **Recruiting & talent sourcing.** Aggregate live openings across target employers into one table — same schema as our five other ATS scrapers, so multi-ATS coverage needs zero special-casing.
- **Job boards & aggregators.** Need to *scrape Personio jobs* into a uniform feed? Point it at your tenant list and ingest normalized records on a schedule, in the language you need.
- **Labor-market research.** Track posting volume, departments, and seniority mix across the DACH SMB market over time.

### Input

| Field | Type | Required | Notes |
|---|---|---|---|
| `companies` | string[] | ✅ | Personio tenants (`lanch`) or `{tenant}.jobs.personio.de` URLs. One per row. |
| `language` | string | — | Optional two-letter code (`en`, `de`, …) for localized titles/descriptions where provided. Empty = tenant default. |
| `includeDescription` | boolean | — | Include the labeled description sections. Default `true`. Same request either way — turning it off only trims output size. |
| `maxJobsPerCompany` | integer | — | Cap per company (1–5000). Default `100`. |

```json
{
  "companies": ["teamative"],
  "includeDescription": true,
  "maxJobsPerCompany": 100
}
````

### Output sample

A real record from the default run (teamative — a DACH IT-services group hiring across Germany and Czechia):

```json
{
  "_type": "job",
  "_schemaVersion": "1.0",
  "_source": "personio",
  "company": "teamative",
  "jobId": "2623782",
  "title": "Initiativbewerbung (m/w/d)",
  "department": "Marketing",
  "team": null,
  "location": "DE - Stuttgart",
  "allLocations": ["DE - Stuttgart"],
  "workplaceType": null,
  "commitment": "Full-or-part-time",
  "seniority": "experienced",
  "country": null,
  "url": "https://teamative.jobs.personio.de/job/2623782",
  "applyUrl": "https://teamative.jobs.personio.de/job/2623782",
  "postedAt": "2026-05-05T08:58:57.000Z",
  "updatedAt": null,
  "descriptionText": "Über uns:\nteamative bietet Beratung, Entwicklung und die Umsetzung von...",
  "_scrapedAt": "2026-06-10T12:34:05.149Z"
}
```

### Use with AI agents (MCP)

This scraper is callable as a tool by AI agents via the **[Apify MCP server](https://mcp.apify.com)** — so assistants like **Claude, Cursor, and VS Code** can run it and use the structured results mid-conversation, with no glue code.

Simplest path: in a recent **Claude Desktop**, add the hosted server `https://mcp.apify.com` under **Settings → Connectors** and authorize with OAuth. For any config-file client:

```json
{
  "mcpServers": {
    "apify": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}
```

Then ask in plain language, e.g. *"List the open jobs on teamative's Personio portal with departments, seniority, and apply links."* — the agent calls **`freshactors/personio-jobs-scraper`** with the right input and reads back the JSON. Full setup: [Apify MCP docs](https://docs.apify.com/platform/integrations/mcp).

### Pricing

Pay-per-event — **no subscription**. You pay only for the boards you fetch and the postings you receive:

| Event | Price (USD) | When it fires |
|---|---|---|
| **Company jobs fetched** | **$0.02** | Once per company career portal successfully fetched (with ≥1 job). |
| **Job posting fetched** | **$0.0005** | Once per job posting returned. |

**Worked example — "how much do 100 results cost?"** Scrape **5 companies** for **100 postings** total:

- Boards: 5 × $0.02 = **$0.10**
- Postings: 100 × $0.0005 = **$0.05**
- **Total: $0.15** for 100 normalized jobs (with departments, seniority, and full descriptions) across 5 companies.

(Apify platform usage is billed separately per their standard rates.)

### FAQ

**Is scraping Personio jobs legal?**
This actor reads **public, non-personal** job-posting data from companies' own public career portals — the same data those pages serve to any visitor. No login, no personal data. Use responsibly and in line with applicable terms and laws.

**Do I need an API key?**
No. There's no Personio API key, account, or login — it reads the public XML feed every career portal already serves.

**How do I find a company's Personio tenant?**
It's the subdomain of their careers page — `**lanch**.jobs.personio.de`. Companies that embed jobs on their own site usually link through to the `jobs.personio.de` portal — paste that URL.

**How many jobs can one call return?**
The feed returns the company's **full published board in a single request** — Personio's customer base is SMB, so boards are typically 3–50 positions. Use `maxJobsPerCompany` to cap volume and cost.

**Can I get postings in English (or German)?**
Yes — set `language` to a two-letter code (e.g. `en`). Where the company maintains translations, titles and descriptions come back localized; otherwise you get the tenant's default language.

**Why is `country` always null?**
Personio's feed gives free-form office names ("DE - Hamburg - remote", "Berlin"), not structured country codes — we pass the office strings through honestly in `location`/`allLocations` rather than guessing.

**Can I scrape many companies at once?**
Yes — pass as many tenants in `companies` as you need. Each board is fetched in isolation; a dead or unknown tenant is skipped, not fatal.

**How often is the data updated?**
It's live — every run fetches the companies' current public boards. The actor itself is monitored by a daily canary so parsing stays correct as the feed evolves.

### Other FreshActors tools

| FreshActors actor | What it scrapes |
|---|---|
| [Greenhouse & Lever Jobs Scraper](https://apify.com/freshactors/greenhouse-lever-jobs-scraper) | Greenhouse + Lever — normalized job postings |
| [Workable Jobs Scraper](https://apify.com/freshactors/workable-jobs-scraper) | Workable — normalized job postings, full descriptions |
| [SmartRecruiters Jobs Scraper](https://apify.com/freshactors/smartrecruiters-jobs-scraper) | SmartRecruiters — normalized job postings, full descriptions |
| [Recruitee Jobs Scraper](https://apify.com/freshactors/recruitee-jobs-scraper) | Recruitee — normalized job postings, full descriptions + salary |
| [Teamtailor Jobs Scraper](https://apify.com/freshactors/teamtailor-jobs-scraper) | Teamtailor — normalized job postings, full descriptions |
| [App Store Scraper](https://apify.com/freshactors/app-store-scraper) | Apple App Store — app details, search, reviews |
| [Google Play Scraper](https://apify.com/freshactors/google-play-scraper) | Google Play — app details + reviews |
| [Microsoft Store Scraper](https://apify.com/freshactors/microsoft-store-scraper) | Microsoft Store — app details, rating windows, search, reviews |
| [VS Code Marketplace Scraper](https://apify.com/freshactors/vscode-marketplace-scraper) | VS Code extensions — install/trending stats, search, reviews |
| [Shopify App Store Scraper](https://apify.com/freshactors/shopify-app-store-scraper) | Shopify App Store — app details, reviews, discovery |
| [Redfin Scraper](https://apify.com/freshactors/redfin-scraper) | Redfin — US real-estate listings |

### Reliability

A scheduled **daily canary** scrapes a known Personio portal, validates the normalized schema, and alerts the moment a parse changes. When Personio shifts its feed, we patch the same day and record it in the changelog below. Every record carries `_schemaVersion` and `_scrapedAt`.

**Changelog**

- **2026-06-10** — v1.0 launch. Single-call public XML feed (full board + labeled description sections per request), departments + seniority exposed, optional feed language, normalized schema shared with our five other ATS scrapers, per-company isolation, daily canary monitoring.

**Legal note:** Reads public, non-personal job-posting data from companies' own public career portals (the same data those pages serve to any visitor). No login, no personal data. Use responsibly and in line with applicable terms and laws.

*Found a problem? Open an issue on the actor — issues are answered fast.*

# Actor input Schema

## `companies` (type: `array`):

Personio tenants: a subdomain (e.g. lanch) or a {tenant}.jobs.personio.de URL. One per row. The tenant is the subdomain of the company's Personio career portal.

## `language` (type: `string`):

Optional two-letter language code (e.g. en, de) for localized titles/descriptions where the company provides them. Leave empty for the tenant's default language.

## `includeDescription` (type: `boolean`):

Include the full job description sections as clean text in each record. Personio returns them in the same request, so turning this off only trims output size — it does not change cost or speed.

## `maxJobsPerCompany` (type: `integer`):

Cap on positions returned per company (1–5000).

## Actor input object example

```json
{
  "companies": [
    "teamative"
  ],
  "includeDescription": true,
  "maxJobsPerCompany": 100
}
```

# Actor output Schema

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

Normalized job postings.

# 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 = {
    "companies": [
        "teamative"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("freshactors/personio-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 = { "companies": ["teamative"] }

# Run the Actor and wait for it to finish
run = client.actor("freshactors/personio-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 '{
  "companies": [
    "teamative"
  ]
}' |
apify call freshactors/personio-jobs-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Personio Jobs Scraper (FreshActors)",
        "description": "Reliable, always-fresh job postings from any Personio career portal. Public XML feed, no login — departments, seniority, and full descriptions in a single call. Monitored daily. By FreshActors.",
        "version": "1.0",
        "x-build-id": "wWUjddMkjaCJ7DbAc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/freshactors~personio-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-freshactors-personio-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/freshactors~personio-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-freshactors-personio-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/freshactors~personio-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-freshactors-personio-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",
                "required": [
                    "companies"
                ],
                "properties": {
                    "companies": {
                        "title": "Companies",
                        "type": "array",
                        "description": "Personio tenants: a subdomain (e.g. lanch) or a {tenant}.jobs.personio.de URL. One per row. The tenant is the subdomain of the company's Personio career portal.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "language": {
                        "title": "Feed language",
                        "type": "string",
                        "description": "Optional two-letter language code (e.g. en, de) for localized titles/descriptions where the company provides them. Leave empty for the tenant's default language."
                    },
                    "includeDescription": {
                        "title": "Include full descriptions",
                        "type": "boolean",
                        "description": "Include the full job description sections as clean text in each record. Personio returns them in the same request, so turning this off only trims output size — it does not change cost or speed.",
                        "default": true
                    },
                    "maxJobsPerCompany": {
                        "title": "Max jobs per company",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Cap on positions returned per company (1–5000).",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
