# Century21 Property Search Scraper (`stealth_mode/century21-property-search-scraper`) Actor

Scrape rental and sales listings from Century21.pt with precision. Collect 35+ property fields including prices, locations, images, agent details, and market data — perfect for real estate investors, market researchers, and property aggregators.

- **URL**: https://apify.com/stealth\_mode/century21-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, 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 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Century21.pt Property Scraper: Extract Portuguese Real Estate Data Instantly
---

### What Is Century21.pt?

Century21.pt is Portugal's leading real estate marketplace, hosting thousands of active property listings across residential, commercial, and investment categories. Whether you're hunting rentals in Lisbon or tracking property market trends nationwide, manually gathering this data is inefficient. The **Century21 Property Scraper** automates extraction of complete property records, transforming Century21's listings into structured datasets ready for analysis, comparison, or integration.

---

### Overview

The **Century21 Property Scraper** extracts property listings from Century21.pt search results pages, capturing 35+ data points per property. It's designed for:

- **Real estate investors** tracking market opportunities and price trends
- **Property aggregators** building multi-source listing platforms
- **Market researchers** analyzing Portuguese housing supply and pricing
- **Estate agents** monitoring competitor inventory and positioning
- **Data analysts** building investment decision support systems

Key strengths include flexible filtering by location and property type, support for bulk URL collection, and comprehensive property metadata including agent and agency information.

---

### Input Format

The scraper accepts a JSON configuration object with three main parameters:

```json
{
  "urls": [
    "https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Century21.pt property search URLs. Include filter parameters for location, property type, and listing category (rent/sale) |
| `ignore_url_failures` | Boolean | If `true`, scraper continues if individual URLs fail; if `false`, halts on error |
| `max_items_per_url` | Integer | Maximum properties to extract per URL (default: 20, max: 200) |

#### URL Structure Tips

Century21.pt URLs support multiple filter parameters:

- `address_names` — Location name (e.g., "Lisboa", "Porto")
- `addresses` — Location numeric ID
- `ad_type` — `rent` or `sell`
- `page` — Results page number
- `property_type` — Filter by asset category (e.g., apartment, house)

> **Example:** `https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent` searches rental properties in Lisbon, page 1.

***

### Output Format

**Sample output**

```json
{
  "id": 794179,
  "price": 420000,
  "asset_type": "apartment",
  "ad_type": "sell",
  "price_per_sq": 2837.83783783784,
  "title": {
    "en": "Modern 3-Bedroom Apartment in Cacém, Sintra",
    "es": "Moderno apartamento en Cacém, Sintra - 3 habitaciones",
    "fr": "Appartement moderne à Sintra, 3 chambres avec garage",
    "pt": "Apartamento Moderno T3 Rua Marquês Pombal no Cacém com 2 Lugares Parqueamento e Arrecadação"
  },
  "link": "https://www.century21.pt/ref/C0362-00971",
  "reference": "C0362-00971",
  "price_hidden": false,
  "gross_area": 148,
  "useful_area": 114,
  "number_of_rooms": 3,
  "number_of_wcs": 2,
  "number_of_parking_spots": 2,
  "characteristics": [
    "storage",
    "bathroom",
    "suite_bathroom",
    "corridor",
    "kitchen",
    "garage",
    "entrance_hall",
    "other_room",
    "bedroom",
    "suite_room",
    "living_room",
    "balcony",
    "good_location",
    "central_location",
    "parking",
    "elevator",
    "double_windows",
    "video_intercom",
    "road_access"
  ],
  "points_of_interest": null,
  "divisions": null,
  "lat": 38.7720326,
  "lng": -9.3097736,
  "address": "Rua Marquês Pombal 72, Cacém, Portugal",
  "country": "pt",
  "ad_1_id": "11",
  "ad_2_id": "1111",
  "ad_3_id": "111124",
  "ad_4_id": "111124016",
  "zones_ids": [],
  "images": [
    "https://images.century21.pt/e4da963c-0063-4cda-88bd-b06838753816/BX6A03373940-Editar.jpg",
    "https://images.century21.pt/183e5177-e14f-4487-ba2b-04f7606e68ad/BX6A034123-Editar.jpg",
    "https://images.century21.pt/25e8de3e-0f1b-4af0-8efb-3cd48f7d32e8/BX6A034467-Editar.jpg",
    "https://images.century21.pt/11c3a3d7-140f-4478-af20-ff85b7dffaac/BX6A03585960-Editar.jpg",
    "https://images.century21.pt/d33e2fe6-62b8-4b1d-bd8a-ee47af80c95f/BX6A035234-Editar.jpg",
    "https://images.century21.pt/05ed16f5-e777-4e09-b6a3-dccc713a967c/BX6A03495051-Editar.jpg",
    "https://images.century21.pt/750539f2-d79e-4381-8a58-78ed3183f858/BX6A037123-Editar.jpg",
    "https://images.century21.pt/a355444d-88ff-4543-8122-ba016cc3b501/BX6A03686970-Editar.jpg",
    "https://images.century21.pt/cdb8ceaf-c5ae-486c-9079-ab4457ea9f9d/BX6A036567-Editar.jpg",
    "https://images.century21.pt/138d25ed-69ca-41eb-a50a-13936b4f23a6/BX6A037578-Editar.jpg",
    "https://images.century21.pt/30fd1dd9-484c-4356-ad5a-254df69c324c/BX6A03798081-Editar.jpg",
    "https://images.century21.pt/49b636e1-dfbd-40c5-bf03-4beb7a67a726/BX6A038345-Editar.jpg",
    "https://images.century21.pt/cb29eac0-5820-4941-8bcd-5ed909603b6f/BX6A038789-Editar.jpg",
    "https://images.century21.pt/5ed0efc7-88dc-485d-b387-0ced2847278d/BX6A039678-Editar.jpg",
    "https://images.century21.pt/bab3ef6b-e466-4eab-bf7b-40cb21ba640c/BX6A040456-Editar.jpg",
    "https://images.century21.pt/d6f116e2-033c-43a1-8535-b83668e82975/BX6A039123-Editar.jpg",
    "https://images.century21.pt/70242945-7bd0-4cbe-84e3-52a043c1f3a4/BX6A041356-Editar.jpg",
    "https://images.century21.pt/fcdbd8a3-2998-4f4b-ae1c-c14cd4ea9ee4/BX6A042234-Editar.jpg",
    "https://images.century21.pt/e6121c65-8b2d-4fe8-8ce8-98b39f4dc3a3/BX6A04091012-Editar.jpg",
    "https://images.century21.pt/57850b00-9866-4732-ab42-97281b1b457c/BX6A04181920-Editar.jpg",
    "https://images.century21.pt/1adda1ec-a1f2-496f-a9aa-d32e0591ce81/BX6A043678.jpg",
    "https://images.century21.pt/9632fc66-3bc4-4ae0-9e39-26807b755b88/BX6A043345-Editar.jpg",
    "https://images.century21.pt/8de2fba0-0c6b-4605-b0af-ec2465db2b94/BX6A043012-Editar.jpg",
    "https://images.century21.pt/f227ee23-678c-4977-af67-7e0264f45a88/BX6A042678-Editar.jpg",
    "https://images.century21.pt/6648bca7-7d0f-4adc-8482-b3c37da62009/BX6A04394041-Editar.jpg",
    "https://images.century21.pt/dac91dc3-d995-4081-a273-9c326036b558/BX6A044234.jpg",
    "https://images.century21.pt/53825ee1-f3c5-4217-ab89-3d630e17d05c/BX6A045123-Editar.jpg"
  ],
  "entered_market": "2026-06-09T00:00:00.000Z",
  "agency_license_number": "14184",
  "commission_value": 21000,
  "commission_percentage": 5,
  "virtual_tour_link": null,
  "video_url": "https://www.youtube.com/watch?v=Vga0WEXSaj4&t=18s",
  "previous_price": null,
  "previous_price_per_sq": null,
  "agent": {
    "id": "c2f957d7-15e2-4e34-93ce-0e54ec33d727",
    "link": "https://www.century21.pt/consultor-imobiliario/antoniojalves",
    "name": "António Alves",
    "image": "https://brumjtydtlxhooqrrsch.supabase.co/storage/v1/object/public/avatars/c2f957d7-15e2-4e34-93ce-0e54ec33d727/PERFILAA.png?1763982536590",
    "email": "antoniojalves@century21.pt",
    "phone": "+351914209738",
    "handler": "antoniojalves"
  },
  "agency": {
    "id": "7c015981-11e0-455b-bbf4-7bcea7f703fd",
    "link": "https://www.century21.pt/agencias-imobiliarias/imoteam",
    "name": "CENTURY 21 Imo Team",
    "handler": "imoteam",
    "license_number": "14184"
  },
  "from_url": "https://century21.pt/comprar?addresses=1111&address_names=Sintra&ad_type=sell&page=1"
}
```

Each property record contains 35+ fields across multiple categories:

#### Property Identification

| Field | Meaning |
|---|---|
| `ID` | Unique identifier for the property listing |
| `Title` | Property listing headline (e.g., "Bright 2-Bedroom Apartment in Alcântara") |
| `Reference` | Century21 internal reference number |
| `Link` | Direct URL to the full property listing page |

#### Financial Data

| Field | Meaning |
|---|---|
| `Price` | Listed price in EUR |
| `Price Per Sq` | Unit price per square meter (EUR/m²) — useful for comparative market analysis |
| `Price Hidden` | Boolean flag indicating if price is hidden from public view |
| `Previous Price` | Prior listing price (tracks price reductions) |
| `Previous Price Per Sq` | Prior price per square meter |
| `Commission Value` | Agent commission amount in EUR |
| `Commission Percentage` | Agent commission as a percentage of sale price |

#### Property Characteristics

| Field | Meaning |
|---|---|
| `Asset Type` | Category (e.g., apartment, house, commercial, land) |
| `Ad Type` | Listing type: `rent` or `sell` |
| `Gross Area` | Total building area in m² |
| `Useful Area` | Net usable floor space in m² |
| `Number Of Rooms` | Bedroom count |
| `Number Of WCs` | Bathroom/toilet count |
| `Number Of Parking Spots` | Available parking spaces |
| `Characteristics` | Features and amenities (e.g., "Renovated, Garden, AC") |
| `Divisions` | Room breakdown and layout details |

#### Location & Geography

| Field | Meaning |
|---|---|
| `Address` | Full property street address |
| `Country` | Country code (e.g., "PT" for Portugal) |
| `Latitude` | Geographic latitude coordinate |
| `Longitude` | Geographic longitude coordinate |
| `Points Of Interest` | Nearby landmarks and amenities (schools, transit, shopping) |
| `Zones IDs` | Century21 zone/neighborhood classification IDs |

#### Media & Virtual Access

| Field | Meaning |
|---|---|
| `Images` | Array of property photo URLs |
| `Virtual Tour Link` | URL to 360° virtual tour (if available) |
| `Video URL` | Link to property video walkthrough (if available) |

#### Market & Timeline

| Field | Meaning |
|---|---|
| `Entered Market` | Date the listing was first published |

#### Related Properties

| Field | Meaning |
|---|---|
| `Ad 1 ID` | ID of first related or similar listing |
| `Ad 2 ID` | ID of second related listing |
| `Ad 3 ID` | ID of third related listing |
| `Ad 4 ID` | ID of fourth related listing |

These allow you to identify competing or comparable properties on the platform.

#### Agency & Agent Information

| Field | Meaning |
|---|---|
| `Agent` | Name of the real estate agent handling the listing |
| `Agency` | Name of the real estate agency |
| `Agency License Number` | Official regulatory license number for the agency |

***

### How to Use

1. **Build your search URL** — Navigate to Century21.pt and apply filters (location, price range, property type, rent/sell). Copy the resulting URL.

2. **Paste into configuration** — Add one or multiple URLs to the `urls` array.

3. **Set collection limits** — Adjust `max_items_per_url` based on needs (higher values = more data, longer runtime).

4. **Enable failure tolerance** — Set `ignore_url_failures: true` to skip broken URLs without halting the entire job.

5. **Run the scraper** — Execute and monitor progress in the logs.

6. **Export & analyze** — Download results as JSON, CSV, or Excel for spreadsheets, databases, or custom analysis.

**Best Practices:**

- Scrape one geographic market or filter at a time for cleaner datasets
- Use `max_items_per_url: 200` for comprehensive market snapshots
- Schedule recurring runs to track price and inventory changes over time
- Store results in a database for historical trend analysis

***

### Use Cases & Business Value

**Market Intelligence:** Track rental yields and sale price trends by neighborhood over weeks or months.

**Competitive Analysis:** Monitor how agents price similar properties or update listings.

**Investment Screening:** Extract and filter properties matching your investment criteria (e.g., yield, area, price range) for rapid deal identification.

**Property Aggregation:** Consolidate Century21 listings into a multi-source property portal or comparison tool.

**Academic Research:** Study Portuguese real estate market dynamics, urban development patterns, or housing affordability.

The **Century21 Property Scraper** eliminates the tedium of manual property searches, delivering structured data that powers faster decisions and deeper market insights.

***

### Conclusion

Whether you're a real estate professional, investor, or researcher, the **Century21.pt Property Scraper** transforms listing pages into actionable data. With 35+ fields per property and flexible filtering, you'll extract exactly the information you need to stay ahead in Portugal's dynamic real estate market. Start scraping today and unlock opportunities hidden in raw listing data.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/century21-property-search-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 = {
    "urls": ["https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/century21-property-search-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 '{
  "urls": [
    "https://century21.pt/arrendar?address_names=Lisboa&addresses=1106&page=1&ad_type=rent"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/century21-property-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Century21 Property Search Scraper",
        "description": "Scrape rental and sales listings from Century21.pt with precision. Collect 35+ property fields including prices, locations, images, agent details, and market data — perfect for real estate investors, market researchers, and property aggregators.",
        "version": "0.0",
        "x-build-id": "GgJawYm7FqksDhYcI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~century21-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-century21-property-search-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/stealth_mode~century21-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-century21-property-search-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/stealth_mode~century21-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-century21-property-search-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": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
