# NL New-Build Housing Permits Monitor (CBS) (`codeclouds/nl-nieuwbouwvergunningen-monitor`) Actor

Officiele CBS-cijfers over vergunde nieuwbouwwoningen per Nederlandse gemeente en kwartaal, met filters op opdrachtgever en eigendomsvorm.

- **URL**: https://apify.com/codeclouds/nl-nieuwbouwvergunningen-monitor.md
- **Developed by:** [Dennis](https://apify.com/codeclouds) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 gemeente-periode-records

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

## NL New-Build Housing Permits Monitor (CBS) 🏗️

Official CBS (Statistics Netherlands) figures on newly **permitted** homes per Dutch municipality and quarter — straight from CBS StatLine table `83671NED`. No login, no API key, no scraping: this is a direct government OData feed.

### Why this actor?

Every quarter, CBS publishes how many new-build homes received a building permit, broken down by municipality, client type (government/housing corporation, market developer, private) and tenure (rental/owner-occupied). It's public, free, and goes back to 2012 — but it's only exposed as a raw OData API with quirky filter behavior (its own `$filter` on the period dimension silently ignores range operators — this actor works around that internally) and cryptic dimension codes (`T001209`, `A028184`, ...) instead of readable labels.

This actor does that translation for you:

- 🏘️ **Real building-permit counts per municipality/quarter** — homes, housing units, and holiday homes, going back to 2012KW01
- 🏷️ **Human-readable names**, not CBS dimension codes — resolves municipality names, client type and tenure live from CBS itself
- 🎯 **Flexible breakdowns** — a single combined figure per municipality/quarter by default, or split by client type and/or tenure on request
- 📊 **Zero configuration** — leave the input empty and get the latest available quarter for all ~341 municipalities in one run
- 🚫 **No personal data** — this is purely aggregated permit-count statistics per municipality, not individual project or applicant data (see "What this Actor does NOT do" below)

### When should an AI agent use this?

- "How many new homes were permitted in Amsterdam last quarter?"
- "Compare new-build permit volumes between Utrecht, Rotterdam and The Hague over the last 2 years."
- "Which municipalities show the strongest growth in market-developer-led new-build permits?"
- "Get the historical trend of rental vs. owner-occupied new-build permits nationwide."
- "Is new-build housing supply increasing or slowing down in [municipality]?"

### What this Actor does

- Fetches building-permit records from CBS StatLine table `83671NED` via its OData API
- Resolves municipality names and dimension codes (client type, tenure, quarter) to readable labels
- Lets you filter by municipality (name or GM-code), quarter range, client-type breakdown and tenure breakdown
- Caps output per run so you control dataset size and cost

### What this Actor does NOT do

- **No individual project names, developers, or addresses.** CBS `83671NED` is aggregated at municipality level — it tells you *how many* homes were permitted, not *which* project. If you need project-level detail, this actor is a complementary, low-risk data source, not a replacement for platforms like Funda Nieuwbouw or Nieuwbouw-nederland.nl.
- No "opgeleverd" (completed/delivered) figures — this table covers **permits granted**, an earlier pipeline stage than completion.

### Input

| Field | Type | Description |
|---|---|---|
| `gemeenten` | string[] | Municipality names (e.g. `"Amsterdam"`) or GM-codes (e.g. `"GM0363"`). Leave empty for all ~341 municipalities. |
| `periodeVanaf` | string | Start quarter, format `"2025KW04"`. Leave empty together with `periodeTot` to use only the latest available quarter. |
| `periodeTot` | string | End quarter, format `"2025KW04"`. Leave empty to reuse `periodeVanaf` (a single quarter). |
| `opdrachtgeverFilter` | string | `"totaal"` (default, one combined row), `"overheid-corporatie"`, `"markt"`, `"particulier"`, or `"alle"` (separate row per category). |
| `eigendomFilter` | string | `"totaal"` (default, one combined row), `"huur"`, `"koop"`, or `"alle"` (separate row per tenure). |
| `maxResults` | integer | Cap on output records per run (default `5000`, max `20000`). |
| `berekenTrends` | boolean | Add quarter-on-quarter/year-on-year growth fields, calculated from the already-fetched period range. Default `false`. |
| `provincieAggregatie` | boolean | Add extra summary records per province/quarter/breakdown, summed across all municipalities in that province. Default `false`. |

### Output

```json
{
  "gemeente": "Amsterdam",
  "gemeenteCode": "GM0363",
  "periode": "2025KW04",
  "periodeLabel": "2025 4e kwartaal",
  "opdrachtgeverType": "Totaal opdrachtgevers",
  "eigendomsvorm": "Totaal",
  "aantalWoningen": 277,
  "aantalWooneenheden": 0,
  "aantalRecreatiewoningen": 0,
  "bouwkostenDuizendEuro": 44452,
  "bouwkostenPerWoning": 160476.9,
  "bouwkostenBetrouwbaar": true,
  "bron": "CBS StatLine 83671NED",
  "aantalWoningenVorigKwartaal": null,
  "deltaQoQ": null,
  "deltaQoQPercentage": null,
  "aantalWoningenVorigJaar": null,
  "deltaYoY": null,
  "deltaYoYPercentage": null,
  "trendBeschikbaar": false
}
````

`bouwkostenDuizendEuro` is frequently `null` — CBS withholds building-cost figures when they'd be derived from fewer than 3 underlying permits, to avoid indirectly revealing individual permit values. `bouwkostenPerWoning` (bouwkostenDuizendEuro × 1000 / aantalWoningen) and `bouwkostenBetrouwbaar` are derived — the latter is `false` (not just `null`) whenever the calculation couldn't be made, so you can tell "not calculable" apart from "calculated as zero".

#### Trend fields (`berekenTrends`, optional, separately charged)

With `berekenTrends: true`, each record is compared against other records in the same fetched period range (same
municipality/client-type/tenure): `aantalWoningenVorigKwartaal`, `deltaQoQ`, `deltaQoQPercentage` (vs. the
previous quarter) and `aantalWoningenVorigJaar`, `deltaYoY`, `deltaYoYPercentage` (vs. the same quarter last
year). `trendBeschikbaar` is `true` only when at least one of those comparisons was actually possible — e.g.
the very first quarter in your fetched range has nothing to compare against, so it stays `false` rather than a
guessed zero. Only records with `trendBeschikbaar: true` are charged the extra `trend-signaal-record` event.

To make this actually work out of the box, the actor automatically fetches 1 extra quarter (for QoQ) and 1
extra year (for YoY) before the start of your requested period range whenever `berekenTrends` is enabled —
purely as comparison material, never pushed to the dataset or charged. Without this, a plain `berekenTrends:
true` with the default period range (just the latest quarter) would almost always come back with
`trendBeschikbaar: false` for every record. The extra periods actually fetched are listed in
`RUN_SUMMARY.extraPeriodesVoorTrendVergelijking`.

#### Province aggregation (`provincieAggregatie`, optional, separately charged)

With `provincieAggregatie: true`, extra records are added at the end of the run — one per
province/quarter/client-type/tenure combination, summing `aantalWoningen`/`aantalWooneenheden`/
`aantalRecreatiewoningen` across every municipality in that province (via CBS StatLine `84721NED`, the official
municipality-to-province mapping):

```json
{
  "type": "provincie-periode",
  "provincie": "Noord-Holland",
  "provincieCode": "PV27",
  "periode": "2025KW04",
  "periodeLabel": "2025 4e kwartaal",
  "opdrachtgeverType": "Totaal opdrachtgevers",
  "eigendomsvorm": "Totaal",
  "aantalWoningen": 1830,
  "aantalWooneenheden": 12,
  "aantalRecreatiewoningen": 0,
  "aantalGemeenten": 47,
  "bron": "CBS StatLine 83671NED + 84721NED (gemeente-provincie-indeling)"
}
```

Each such record is charged as `provincie-periode-record`. The province totals are always based on the full
fetched set (before any `maxResults` cap is applied to the pushed municipality-level records), so a large,
broad query never silently undercounts a province just because the cap fell inside it. If `maxResults` did cut
off some municipality-level records, `RUN_SUMMARY.maxResultsAfgekapt`/`afgekapteRecords` reflects that.

### Use cases

- **Real estate analysts / investors** — track which municipalities have the strongest new-build pipeline before it reaches project-listing platforms
- **Construction companies** — spot municipalities with growing market-developer activity
- **Municipal policy makers** — benchmark local new-build volume against comparable municipalities
- **AI agents & MCP tools** — flat JSON, small input schema, resolved names instead of dimension codes
- **Combine with NL Permits & Public Notices Leadfeed** (see Related Actors) — that actor surfaces individual spatial-plan publications (an earlier pipeline stage than a building permit); use this actor to validate the market-level trend a specific municipality is showing

### Pricing

This Actor uses Apify's Pay-Per-Event (PPE) pricing model.

- **Actor Start:** $0.00005 (Apify default)
- **gemeente-periode-record:** $0.003 per output record
- **trend-signaal-record:** $0.008 extra, only with `berekenTrends` enabled and only when a previous-period
  comparison was actually found
- **provincie-periode-record:** $0.006 per province-level summary record, only with `provincieAggregatie` enabled

### Legal

- Source: **CBS StatLine** (`opendata.cbs.nl`), the official statistics office of the Dutch government. Table `83671NED` is open data, explicitly published for reuse.
- No authentication, no scraping — this is a direct, public OData API.
- Data is aggregated per municipality/quarter/client-type/tenure. No addresses, project names, or personal data of any kind.

### FAQ

**Q: Why does the default run only return one quarter instead of the full 2012-present history?**
A: To keep the zero-configuration default fast and cheap. Set `periodeVanaf`/`periodeTot` to fetch a wider range — CBS has data back to `2012KW01`.

**Q: I set a municipality name and got zero results — why?**
A: CBS disambiguates municipalities that share a name with their province by adding a suffix, e.g. the province is "Utrecht" but the municipality is `"Utrecht (gemeente)"`. Use the exact CBS name, or a GM-code (e.g. `"GM0344"`) to avoid ambiguity.

**Q: What does `opdrachtgeverFilter: "alle"` actually return?**
A: One row per client-type category (government/housing corporation, market developer, private) instead of one combined row — useful when you need the breakdown, not just the total.

**Q: How often is the data updated?**
A: CBS publishes this table quarterly, with a lag of roughly one quarter. A monthly scheduled run is more than sufficient.

### Related Actors

Also by this developer:

- **[NL Permits & Public Notices Leadfeed](https://apify.com/codeclouds/nl-vergunningen-leadfeed)** — surfaces individual spatial-plan/permit publications, an earlier pipeline stage than the building permits aggregated here. Use both together for a full "new-build pipeline" view: spatial plan (leadfeed) → building permit volume (this actor).

***

*Keywords: cbs bouwvergunningen, nieuwbouw per gemeente, statline 83671ned, dutch new-build housing permits, woningmarkt nederland, bouwvergunning statistieken.*

### Keywords

netherlands, real-estate, housing, construction, cbs, statline, open-data, government-data, mcp-tool

### Changelog

#### 0.3.2 - Bugfix

- Fixed `berekenTrends` almost always returning `trendBeschikbaar: false` with the default input: the actor
  now automatically fetches 1 extra quarter/year of comparison-only data before the requested range starts
  whenever `berekenTrends` is enabled, so the trend feature actually works out of the box. No pricing change
  — correctness fix on the already-approved `trend-signaal-record` event.
- Fixed `provincieAggregatie` silently undercounting a province when `maxResults` cut the municipality-level
  set inside that province's records: province totals are now based on the full fetched set, not the capped
  one. `RUN_SUMMARY` now also reports `maxResultsAfgekapt`/`afgekapteRecords`. No pricing change.

#### 0.3.0

- Added `berekenTrends`: quarter-on-quarter/year-on-year growth fields, calculated purely from the fetched
  period range. New charged event `trend-signaal-record` ($0.008), only when a comparison was actually found.
- Added `provincieAggregatie`: extra province-level summary records via CBS StatLine `84721NED` (the official
  municipality-to-province mapping). New charged event `provincie-periode-record` ($0.006).
- Both confirmed by the user (2026-07-14, see docs/actor-verbeteringen/PRIJSBESLISSINGEN.md).

#### 0.2.0

- Added `bouwkostenPerWoning` and `bouwkostenBetrouwbaar` — a derived building-cost-per-home figure, with an
  explicit boolean instead of a silent `null` when it can't be calculated. No pricing change.

#### 0.1.0 - Initial release

- Fetch building-permit records from CBS StatLine table 83671NED, filterable by municipality, quarter range, client type and tenure.
- Live-resolved municipality names and dimension labels instead of raw CBS codes.
- Client-type and tenure breakdown modes (combined total vs. separate rows per category).

# Actor input Schema

## `gemeenten` (type: `array`):

Municipality names (e.g. "Amsterdam", "Utrecht (gemeente)") or GM-codes (e.g. "GM0363"). Leave empty for all municipalities.

## `periodeVanaf` (type: `string`):

Start quarter, format "2025KW04" (year + KW + quarter number 01-04). Leave empty together with 'Period to' to use only the latest available quarter.

## `periodeTot` (type: `string`):

End quarter, format "2025KW04". Leave empty to use the same value as 'Period from' (or the latest quarter if both are empty).

## `opdrachtgeverFilter` (type: `string`):

Filter by who commissioned the new-build permit. 'Total' returns one combined row per municipality/quarter (default). 'All breakdowns' returns a separate row per category.

## `eigendomFilter` (type: `string`):

Filter by intended tenure. 'Total' returns one combined row per municipality/quarter (default). 'All breakdowns' returns a separate row for rental and owner-occupied.

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

Caps how many output records this run produces (1-20,000).

## `berekenTrends` (type: `boolean`):

Adds quarter-on-quarter and year-on-year growth fields, calculated purely from the already-fetched period range (no extra data source). Only charged (trend-signaal-record) when a previous quarter's value was actually found within the fetched range.

## `provincieAggregatie` (type: `boolean`):

Adds extra summary records per province/quarter/breakdown, summed across all municipalities in that province (via CBS StatLine 84721NED, the official municipality-to-province mapping).

## Actor input object example

```json
{
  "gemeenten": [],
  "opdrachtgeverFilter": "totaal",
  "eigendomFilter": "totaal",
  "maxResults": 5000,
  "berekenTrends": false,
  "provincieAggregatie": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("codeclouds/nl-nieuwbouwvergunningen-monitor").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("codeclouds/nl-nieuwbouwvergunningen-monitor").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 '{}' |
apify call codeclouds/nl-nieuwbouwvergunningen-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NL New-Build Housing Permits Monitor (CBS)",
        "description": "Officiele CBS-cijfers over vergunde nieuwbouwwoningen per Nederlandse gemeente en kwartaal, met filters op opdrachtgever en eigendomsvorm.",
        "version": "0.1",
        "x-build-id": "d2bljadQBCJiZxsec"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/codeclouds~nl-nieuwbouwvergunningen-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-codeclouds-nl-nieuwbouwvergunningen-monitor",
                "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/codeclouds~nl-nieuwbouwvergunningen-monitor/runs": {
            "post": {
                "operationId": "runs-sync-codeclouds-nl-nieuwbouwvergunningen-monitor",
                "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/codeclouds~nl-nieuwbouwvergunningen-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-codeclouds-nl-nieuwbouwvergunningen-monitor",
                "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": {
                    "gemeenten": {
                        "title": "Municipalities",
                        "type": "array",
                        "description": "Municipality names (e.g. \"Amsterdam\", \"Utrecht (gemeente)\") or GM-codes (e.g. \"GM0363\"). Leave empty for all municipalities.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "periodeVanaf": {
                        "title": "Period from (quarter)",
                        "type": "string",
                        "description": "Start quarter, format \"2025KW04\" (year + KW + quarter number 01-04). Leave empty together with 'Period to' to use only the latest available quarter."
                    },
                    "periodeTot": {
                        "title": "Period to (quarter)",
                        "type": "string",
                        "description": "End quarter, format \"2025KW04\". Leave empty to use the same value as 'Period from' (or the latest quarter if both are empty)."
                    },
                    "opdrachtgeverFilter": {
                        "title": "Client (opdrachtgever) breakdown",
                        "enum": [
                            "totaal",
                            "overheid-corporatie",
                            "markt",
                            "particulier",
                            "alle"
                        ],
                        "type": "string",
                        "description": "Filter by who commissioned the new-build permit. 'Total' returns one combined row per municipality/quarter (default). 'All breakdowns' returns a separate row per category.",
                        "default": "totaal"
                    },
                    "eigendomFilter": {
                        "title": "Tenure (eigendom) breakdown",
                        "enum": [
                            "totaal",
                            "huur",
                            "koop",
                            "alle"
                        ],
                        "type": "string",
                        "description": "Filter by intended tenure. 'Total' returns one combined row per municipality/quarter (default). 'All breakdowns' returns a separate row for rental and owner-occupied.",
                        "default": "totaal"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 20000,
                        "type": "integer",
                        "description": "Caps how many output records this run produces (1-20,000).",
                        "default": 5000
                    },
                    "berekenTrends": {
                        "title": "Calculate QoQ/YoY trends",
                        "type": "boolean",
                        "description": "Adds quarter-on-quarter and year-on-year growth fields, calculated purely from the already-fetched period range (no extra data source). Only charged (trend-signaal-record) when a previous quarter's value was actually found within the fetched range.",
                        "default": false
                    },
                    "provincieAggregatie": {
                        "title": "Add province-level aggregation",
                        "type": "boolean",
                        "description": "Adds extra summary records per province/quarter/breakdown, summed across all municipalities in that province (via CBS StatLine 84721NED, the official municipality-to-province mapping).",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
