# CommercialGuru Singapore Scraper (`abotapi/commercialguru-sg-scraper`) Actor

Extract commercial property listings from commercialguru.com.sg at scale. Get comprehensive data including prices, PSF, floor area, tenure, images, agent contacts, coordinates, nearby MRT, and more. Perfect for Singapore commercial real estate analytics, investment research, and market intelligence.

- **URL**: https://apify.com/abotapi/commercialguru-sg-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Real estate, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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

## CommercialGuru Singapore Scraper

Extract commercial property listings from **commercialguru.com.sg** (PropertyGuru Group) at scale. Get comprehensive data including prices, PSF, floor area, tenure, images, agent contacts, coordinates, nearby MRT, and more. Perfect for Singapore commercial real estate analytics, investment research, and market intelligence.


#### Key Features

| Feature | Description |
|---------|-------------|
| **All Listing Types** | For Sale and For Rent commercial properties across Singapore |
| **11 Property Types** | Office, Retail, Shop/Shophouse, Warehouse, Factory, Industrial, Land, F&B, Business Park, Dormitory |
| **Price & Size Filters** | Narrow results by price range (SGD) and floor area (sqft) |
| **Location Filters** | Filter by district (D01-D28) or freetext search |
| **Exact Coordinates** | Lat/lng enrichment via PropertyGuru Map Cluster API |
| **Multiple Dataset Views** | Overview, Map View, Agents & Developers |
| **Pagination** | Multi-page scraping with automatic retry on blocked pages |

### What data can you extract?

The scraper extracts 25+ fields per listing:

<table>
<tr><td>

**Property Details**
- Listing ID & URL
- Title & full address
- Property type (Office, Retail, Shophouse, etc.)
- Floor area & land area (sqft)
- Tenure (Freehold/Leasehold)
- Badges (unit type, tenure, year built, etc.)

</td><td>

**Pricing**
- Price (SGD numeric value)
- Formatted price (e.g. "S$ 3,800,000")
- Price per sqft (PSF)
- Listing type (Sale/Rent)

</td></tr>
<tr><td>

**Location & Transit**
- Latitude & longitude (from Map Cluster API)
- District name & code (D01-D28)
- Region grouping
- Nearest MRT station with distance

</td><td>

**Agent & Developer**
- Agent name, ID & CEA license
- Agency name
- Developer name
- Is developer listing flag

</td></tr>
<tr><td>

**Media**
- Property images (up to 10 per listing)
- Image count

</td><td>

**Dates & Metadata**
- Posted date (text & unix timestamp)
- Recency text
- Listing status (Active, etc.)

</td></tr>
</table>


### How to Use

#### Step 1: Search offices for rent in CBD

```json
{
  "mode": "search",
  "listing_type": "rent",
  "property_type": "office",
  "search": "Raffles Place",
  "max_properties": 50,
  "max_pages": 5
}
````

#### Step 2: Filter shops by district and price

```json
{
  "mode": "search",
  "listing_type": "sale",
  "property_type": "shop",
  "district": "D01",
  "min_price": 500000,
  "max_price": 5000000,
  "max_properties": 100,
  "max_pages": 10
}
```

#### Step 3: Warehouses by floor area

```json
{
  "mode": "search",
  "listing_type": "rent",
  "property_type": "warehouse",
  "min_floor_area": 5000,
  "max_floor_area": 20000,
  "sort": "price",
  "sort_order": "asc"
}
```

#### Step 4: Scrape specific URLs

```json
{
  "mode": "url",
  "urls": [
    "https://www.commercialguru.com.sg/office-for-rent?district_code=D01",
    "https://www.commercialguru.com.sg/shop-for-sale?freetext=Orchard"
  ],
  "max_properties": 50,
  "max_pages": 5
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `search` | `search` (build URL from filters) or `url` (use provided URLs) |
| `urls` | array | `[]` | CommercialGuru search URLs (url mode only) |
| `listing_type` | string | `sale` | `sale` or `rent` |
| `property_type` | string | - | See Property Types table below |
| `search` | string | - | Free-text location search (e.g. "Raffles Place", "Jurong", "CBD") |
| `district` | string | - | District code D01-D28 (see table below) |
| `min_price` | integer | - | Minimum price in SGD |
| `max_price` | integer | - | Maximum price in SGD |
| `min_floor_area` | integer | - | Minimum floor area in sqft |
| `max_floor_area` | integer | - | Maximum floor area in sqft |
| `sort` | string | `date` | Sort by: `date`, `price`, `psf` |
| `sort_order` | string | `desc` | `asc` or `desc` |
| `max_properties` | integer | `10` | Max listings to scrape (0 = unlimited) |
| `max_pages` | integer | `5` | Max search result pages (20 listings/page) |
| `enable_coordinates` | boolean | `false` | Add lat/lng to listings via Map API. Slows down the run (~30-60s extra). |
| `proxy` | object | Apify residential | Proxy configuration (Apify proxy recommended) |
| `dataset_name` | string | `default` | Named dataset for results |
| `clear_dataset` | boolean | `false` | Clear dataset before scraping |

### Property Types

| Code | Type | Description |
|------|------|-------------|
| `office` | Office | Office spaces |
| `retail` | All Retail | All retail properties (shops, F\&B, etc.) |
| `shop` | Shop / Shophouse | Shops and shophouses |
| `shophouse` | Shophouse | Shophouses specifically |
| `warehouse` | Warehouse | Warehouse spaces |
| `factory` | Factory / Industrial | All factory and industrial properties |
| `industrial` | All Industrial | All industrial types (factory, warehouse, dormitory) |
| `land` | Commercial Land | Commercial land plots |
| `food_beverage` | Food & Beverage | F\&B outlets and restaurants |
| `business_park` | Business / Science Park | Business and science park spaces |
| `dormitory` | Dormitory | Worker dormitories |

### Singapore Districts

| Code | Area | Code | Area |
|------|------|------|------|
| D01 | Raffles Place / Marina | D15 | East Coast / Marine Parade |
| D02 | Chinatown / Tanjong Pagar | D16 | Bedok / Upper East Coast |
| D03 | Alexandra / Commonwealth | D17 | Changi Airport / Changi Village |
| D04 | Harbourfront / Telok Blangah | D18 | Pasir Ris / Tampines |
| D05 | Buona Vista / West Coast | D19 | Hougang / Punggol / Sengkang |
| D06 | City Hall / Clarke Quay | D20 | Ang Mo Kio / Bishan / Thomson |
| D07 | Beach Road / Bugis | D21 | Clementi Park / Upper Bukit Timah |
| D08 | Farrer Park / Serangoon Rd | D22 | Boon Lay / Jurong / Tuas |
| D09 | Orchard / River Valley | D23 | Bukit Batok / Bukit Panjang |
| D10 | Tanglin / Holland / Bukit Timah | D24 | Lim Chu Kang / Tengah |
| D11 | Newton / Novena | D25 | Admiralty / Woodlands |
| D12 | Balestier / Toa Payoh | D26 | Mandai / Upper Thomson |
| D13 | Macpherson / Potong Pasir | D27 | Sembawang / Yishun |
| D14 | Eunos / Geylang / Paya Lebar | D28 | Seletar / Yio Chu Kang |

### Output Example

#### Commercial property listing

```json
{
  "id": 500073292,
  "title": "Novena Medical Center",
  "address": "10 Sample Drive",
  "listing_type": "sale",
  "property_type": "Office",
  "property_type_group": "O",
  "price": 3800000,
  "price_formatted": "S$ 3,800,000",
  "currency": "SGD",
  "price_psf": "S$ 4,973.82 psf",
  "floor_area": 764,
  "tenure": "99-year Leasehold",
  "agent_name": "Sample",
  "agent_id": 1758000,
  "agent_license": "R0123000",
  "agency_name": "Sample PTE LTD",
  "district": "Newton / Novena",
  "district_code": "D11",
  "region": "Central (D09-11)",
  "nearby_mrt": "2 min (170 m) from NS20 Novena MRT Station",
  "latitude": 1.3000,
  "longitude": 103.000,
  "location_source": "map_api",
  "badges": ["Office", "99-year Leasehold"],
  "posted_date": "2 Apr 2026",
  "posted_unix": 177508000,
  "recency": "Listed on Apr 02, 2026 (30m ago)",
  "images": [
    "https://sg1-cdn.pgimgs.com/listing/500073292/UPHO.123456.V800/Novena-Sample.jpg"
  ],
  "image_count": 1,
  "url": "https://www.commercialguru.com.sg/listing/for-sale-novena-medical-center-Sample",
  "status": "ACT"
}
```

# Actor input Schema

## `mode` (type: `string`):

Scraping mode: 'search' builds search URLs from filters, 'url' uses provided URLs directly

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

URLs to scrape (url mode only). Provide commercialguru.com.sg search or listing URLs.

## `enable_coordinates` (type: `boolean`):

Add lat/lng coordinates to listings via Map API. Disabled by default as it significantly slows down the run (~30-60s extra).

## `listing_type` (type: `string`):

Type of listing to search for

## `property_type` (type: `string`):

Filter by commercial property type

## `search` (type: `string`):

Free-text location search (e.g. 'Raffles Place', 'Jurong', 'CBD'). Use this OR district code, not both.

## `district` (type: `string`):

Singapore district code (D01-D28). E.g. D01=Raffles Place/Marina, D09=Orchard, D22=Jurong/Tuas. Use this OR freetext search, not both.

## `min_price` (type: `integer`):

Minimum price in Singapore Dollars

## `max_price` (type: `integer`):

Maximum price in Singapore Dollars

## `min_floor_area` (type: `integer`):

Minimum floor area in square feet

## `max_floor_area` (type: `integer`):

Maximum floor area in square feet

## `sort` (type: `string`):

Sort results by date (newest), price, or price per sqft

## `sort_order` (type: `string`):

Sort direction

## `max_properties` (type: `integer`):

Maximum number of properties to scrape (0=unlimited)

## `max_pages` (type: `integer`):

Maximum number of search result pages to scrape (20 listings per page)

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

Proxy configuration. Datacenter proxy works well. Each page uses a fresh browser session.

## `dataset_name` (type: `string`):

Custom dataset name (leave empty for default)

## `clear_dataset` (type: `boolean`):

Clear the dataset before scraping

## Actor input object example

```json
{
  "mode": "search",
  "enable_coordinates": false,
  "listing_type": "sale",
  "sort": "date",
  "sort_order": "desc",
  "max_properties": 10,
  "max_pages": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  },
  "clear_dataset": false
}
```

# Actor output Schema

## `listings` (type: `string`):

Individual commercial property listing records with price, features, location, and agent data.

## `metadata` (type: `string`):

Scraping run metadata including timing, counts, coordinate enrichment stats, and configuration.

# 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 = {
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "SG"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/commercialguru-sg-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 = { "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "SG",
    } }

# Run the Actor and wait for it to finish
run = client.actor("abotapi/commercialguru-sg-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 '{
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  }
}' |
apify call abotapi/commercialguru-sg-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CommercialGuru Singapore Scraper",
        "description": "Extract commercial property listings from commercialguru.com.sg at scale. Get comprehensive data including prices, PSF, floor area, tenure, images, agent contacts, coordinates, nearby MRT, and more. Perfect for Singapore commercial real estate analytics, investment research, and market intelligence.",
        "version": "0.1",
        "x-build-id": "DSsxHbDyTG8bqZZQH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~commercialguru-sg-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-commercialguru-sg-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/abotapi~commercialguru-sg-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-commercialguru-sg-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/abotapi~commercialguru-sg-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-commercialguru-sg-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": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Scraping mode: 'search' builds search URLs from filters, 'url' uses provided URLs directly",
                        "default": "search"
                    },
                    "urls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "URLs to scrape (url mode only). Provide commercialguru.com.sg search or listing URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enable_coordinates": {
                        "title": "Enable Coordinate Enrichment",
                        "type": "boolean",
                        "description": "Add lat/lng coordinates to listings via Map API. Disabled by default as it significantly slows down the run (~30-60s extra).",
                        "default": false
                    },
                    "listing_type": {
                        "title": "Listing Type",
                        "enum": [
                            "sale",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Type of listing to search for",
                        "default": "sale"
                    },
                    "property_type": {
                        "title": "Property Type",
                        "enum": [
                            "office",
                            "retail",
                            "shop",
                            "shophouse",
                            "warehouse",
                            "factory",
                            "industrial",
                            "land",
                            "food_beverage",
                            "business_park",
                            "dormitory"
                        ],
                        "type": "string",
                        "description": "Filter by commercial property type"
                    },
                    "search": {
                        "title": "Location Search",
                        "type": "string",
                        "description": "Free-text location search (e.g. 'Raffles Place', 'Jurong', 'CBD'). Use this OR district code, not both."
                    },
                    "district": {
                        "title": "District Code",
                        "type": "string",
                        "description": "Singapore district code (D01-D28). E.g. D01=Raffles Place/Marina, D09=Orchard, D22=Jurong/Tuas. Use this OR freetext search, not both."
                    },
                    "min_price": {
                        "title": "Min Price (SGD)",
                        "type": "integer",
                        "description": "Minimum price in Singapore Dollars"
                    },
                    "max_price": {
                        "title": "Max Price (SGD)",
                        "type": "integer",
                        "description": "Maximum price in Singapore Dollars"
                    },
                    "min_floor_area": {
                        "title": "Min Floor Area (sqft)",
                        "type": "integer",
                        "description": "Minimum floor area in square feet"
                    },
                    "max_floor_area": {
                        "title": "Max Floor Area (sqft)",
                        "type": "integer",
                        "description": "Maximum floor area in square feet"
                    },
                    "sort": {
                        "title": "Sort By",
                        "enum": [
                            "date",
                            "price",
                            "psf"
                        ],
                        "type": "string",
                        "description": "Sort results by date (newest), price, or price per sqft",
                        "default": "date"
                    },
                    "sort_order": {
                        "title": "Sort Order",
                        "enum": [
                            "asc",
                            "desc"
                        ],
                        "type": "string",
                        "description": "Sort direction",
                        "default": "desc"
                    },
                    "max_properties": {
                        "title": "Max Properties",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of properties to scrape (0=unlimited)",
                        "default": 10
                    },
                    "max_pages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of search result pages to scrape (20 listings per page)",
                        "default": 5
                    },
                    "proxy": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration. Datacenter proxy works well. Each page uses a fresh browser session."
                    },
                    "dataset_name": {
                        "title": "Dataset Name",
                        "type": "string",
                        "description": "Custom dataset name (leave empty for default)"
                    },
                    "clear_dataset": {
                        "title": "Clear Dataset",
                        "type": "boolean",
                        "description": "Clear the dataset before scraping",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
