# Singapore GeBIZ Tender Opportunities Scraper (`automation-lab/singapore-gebiz-tender-opportunities-scraper`) Actor

Scrape Singapore GeBIZ tenders, quotations, and procurement opportunity details for monitoring, lead generation, and market research.

- **URL**: https://apify.com/automation-lab/singapore-gebiz-tender-opportunities-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.16 / 1,000 gebiz opportunity records

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

## Singapore GeBIZ Tender Opportunities Scraper

Monitor Singapore government procurement opportunities from the public GeBIZ website.

This Apify Actor searches public GeBIZ tender, quotation, tender-lite, request-for-information, and other opportunity listings, then exports clean dataset records for procurement monitoring, sales alerts, bid intelligence, and market research.

It can run a broad keyword search such as `services`, scrape Today's Opportunities, or process specific GeBIZ listing/detail URLs.

### What does Singapore GeBIZ Tender Opportunities Scraper do?

The actor opens the official Singapore GeBIZ public opportunity pages and extracts structured tender records.

It captures the opportunity title, document number, reference number, buyer agency, opportunity type, status, publish date, closing date, closing time, and official detail URL.

When detail enrichment is enabled, it also opens each opportunity page and extracts procurement category, procurement method, GRA supply/work heads, public contact details, document names, and source text where visible without login.

### Who is it for?

- 🧾 Vendors tracking Singapore public tenders by keyword or agency.
- 📈 Bid teams monitoring new GeBIZ opportunities every day.
- 🏛️ Procurement consultants building tender intelligence dashboards.
- 🔔 Sales operations teams feeding alerts into Slack, email, Airtable, or a CRM.
- 🧪 Researchers analyzing Singapore public-sector procurement activity.
- 🧰 Developers who need an API-ready GeBIZ tender feed.

### Why use this actor?

GeBIZ is the official public portal for Singapore government procurement notices.

Manual monitoring is time-consuming because users must repeatedly search, paginate, and open details.

This actor turns those public pages into machine-readable records that can be scheduled, exported, and integrated.

### Typical use cases

- Monitor new tenders matching `services`, `software`, `construction`, `security`, or another buyer keyword.
- Track opportunities from a specific ministry, statutory board, school, or agency name.
- Export upcoming closing dates for bid calendar planning.
- Collect public procurement category and contact details for qualification workflows.
- Build a daily GeBIZ tender alert feed.
- Compare Singapore procurement activity with other tender sources.

### Input options

| Field | Type | Description |
| --- | --- | --- |
| `keyword` | string | Search term for GeBIZ public opportunity search. |
| `startUrls` | array | Optional GeBIZ listing/detail URLs. Overrides keyword search. |
| `todayOnly` | boolean | If no keyword/start URL is provided, scrape Today's Opportunities. |
| `maxItems` | integer | Maximum number of opportunity records to save. |
| `includeDetails` | boolean | Open detail pages for richer metadata and contacts. |
| `requestDelayMs` | integer | Polite delay between page actions. |

### Recommended inputs

For a quick test, use:

```json
{
  "keyword": "services",
  "maxItems": 20,
  "includeDetails": false
}
````

For richer monitoring, use:

```json
{
  "keyword": "consultancy",
  "maxItems": 100,
  "includeDetails": true,
  "requestDelayMs": 1000
}
```

### Search modes

The actor supports three practical modes.

1. `keyword` mode searches GeBIZ with your keyword.
2. `today` mode clicks Today's Opportunities when no keyword/start URL is provided.
3. `directUrls` mode processes GeBIZ listing or detail URLs you provide.

### Output data

Each dataset item represents one public GeBIZ opportunity.

| Field | Description |
| --- | --- |
| `title` | Opportunity title shown on GeBIZ. |
| `documentNo` | GeBIZ tender/document number. |
| `referenceNo` | Additional buyer reference number when shown. |
| `opportunityType` | Tender, Quotation, Tender Lite, RFI, etc. |
| `status` | Current public status such as OPEN. |
| `agency` | Buyer agency shown in the listing. |
| `publishedAt` | Published date/time as displayed by GeBIZ. |
| `closingDate` | Closing date. |
| `closingTime` | Closing time. |
| `detailUrl` | Official GeBIZ detail URL. |
| `procurementCategory` | Detail-page procurement category when enabled. |
| `contactEmail` | Public contact email when visible. |
| `documentNames` | Public tender document names when visible. |

### Example output

```json
{
  "title": "Provision of Horticultural Services",
  "documentNo": "SSC000ETT26000028",
  "referenceNo": null,
  "opportunityType": "Tender",
  "status": "OPEN",
  "agency": "Singapore Sports Council (Sport Singapore)",
  "publishedAt": "12 Jun 2026 02:35 PM",
  "closingDate": "10 Jul 2026",
  "closingTime": "04:00PM",
  "detailUrl": "https://www.gebiz.gov.sg/ptn/opportunity/directlink.xhtml?docCode=SSC000ETT26000028",
  "searchKeyword": "services",
  "searchMode": "keyword",
  "pageNumber": 1,
  "scrapedAt": "2026-06-25T00:00:00.000Z"
}
```

### Detail enrichment

Set `includeDetails` to `true` when you need richer procurement context.

The actor then opens each opportunity detail page and attempts to extract:

- Procurement type.
- Procurement method.
- Procurement nature.
- Procurement category.
- GRA supply/work heads.
- Offer validity duration.
- Electronic submission indicator.
- Awarding agency.
- Public contact name, email, and phone.
- Public tender document names.
- Detail page text for downstream review.

### How much does it cost to scrape Singapore GeBIZ tenders?

Pricing uses a pay-per-event model.

There is a small start charge for each run and a per-item charge for each opportunity saved.

The actor is designed to be conservative: listing-only mode is faster and cheaper, while detail enrichment costs more because it opens extra pages.

Use `maxItems` to control spend.

### How to run

1. Open the actor on Apify.
2. Enter a keyword such as `services`.
3. Choose `maxItems`.
4. Decide whether you need detail enrichment.
5. Start the run.
6. Export the dataset as JSON, CSV, Excel, XML, or through the API.

### Scheduling and monitoring

GeBIZ monitoring is a repeat-use workflow.

Run the actor daily for keywords that matter to your business.

Apify schedules can run this actor automatically and send results into a webhook or integration.

### Integration ideas

- Send matching tenders to Slack.
- Add closing dates to a bid calendar.
- Push new records into Airtable or Google Sheets.
- Enrich CRM accounts with public-sector buyer activity.
- Trigger email alerts for high-value keywords.
- Store historical tender records in a data warehouse.

### API usage with Node.js

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/singapore-gebiz-tender-opportunities-scraper').call({
  keyword: 'services',
  maxItems: 50,
  includeDetails: false,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/singapore-gebiz-tender-opportunities-scraper').call(run_input={
    'keyword': 'services',
    'maxItems': 50,
    'includeDetails': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~singapore-gebiz-tender-opportunities-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"keyword":"services","maxItems":50,"includeDetails":false}'
```

### MCP usage

Use Apify MCP to call this actor from Claude Desktop, Claude Code, or another MCP client.

MCP server URL:

```text
https://mcp.apify.com/?tools=automation-lab/singapore-gebiz-tender-opportunities-scraper
```

Claude Code setup:

```bash
claude mcp add apify-gebiz "https://mcp.apify.com/?tools=automation-lab/singapore-gebiz-tender-opportunities-scraper"
```

Claude Desktop JSON config:

```json
{
  "mcpServers": {
    "apify-gebiz": {
      "url": "https://mcp.apify.com/?tools=automation-lab/singapore-gebiz-tender-opportunities-scraper"
    }
  }
}
```

Example prompts:

- "Find the latest Singapore GeBIZ opportunities for software services."
- "Scrape 100 GeBIZ tenders matching consultancy and summarize closing dates."
- "Monitor today's GeBIZ opportunities and list the buyer agencies."

### Data freshness

The actor reads live public GeBIZ pages at run time.

Results reflect what GeBIZ displays during the run.

For monitoring, schedule repeated runs and deduplicate by `documentNo`.

### Limitations

- GeBIZ can change its JSF layout, which may require extractor updates.
- Some tender documents require login to download; the actor extracts public names and metadata only.
- Today's Opportunities may contain fewer records than your `maxItems`.
- Narrow keywords may return zero records.
- Date values are preserved as displayed by GeBIZ rather than converted to UTC.

### Troubleshooting

If you get zero results, try a broader keyword such as `services`.

If runs are slow, disable `includeDetails` or lower `maxItems`.

If GeBIZ responds slowly, increase `requestDelayMs`.

If you need a specific buyer, search the agency name as a keyword.

### Legality and ethical use

This actor extracts publicly available procurement notices from the official Singapore GeBIZ website.

Use the data for legitimate procurement monitoring, market research, and bid preparation workflows.

Respect GeBIZ terms, Singapore laws, and any restrictions on reproducing tender documents.

### Related scrapers

- TED Europa Tenders Scraper.
- UK Find a Tender Scraper.
- SAM.gov Government Contracts Scraper.
- Government contracts and procurement actors from Automation Lab.

### FAQ

#### Can it download protected tender files?

No. Some documents are visible only after login. The actor focuses on public metadata and public document names.

#### Can it monitor one agency?

Yes. Use the agency name as the keyword or provide a GeBIZ listing URL that already reflects your search.

#### Can it extract closed or awarded opportunities?

The public search can expose closed counts, but the initial actor is optimized for open public listing records. Use broad keywords and detail URLs for best results.

#### Why are dates strings?

GeBIZ displays Singapore-local date/time text. The actor preserves the official display value for auditability.

#### What if GeBIZ changes?

Open an issue with a failing run URL and input. The extractor can be updated to match the current public page layout.

# Actor input Schema

## `keyword` (type: `string`):

Keyword to search in GeBIZ opportunity title, document number, agency, and procurement category. Leave empty to collect Today's Opportunities.

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

Optional GeBIZ BOListing.xhtml listing URLs or directlink.xhtml?docCode=... detail URLs. If provided, these override the keyword/today search.

## `todayOnly` (type: `boolean`):

When no keyword or start URL is provided, click the public Today's Opportunities view and scrape the current daily list.

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

Maximum tender/opportunity records to save. Use 10-50 for quick tests and 100+ for monitoring searches such as services.

## `includeDetails` (type: `boolean`):

Open each GeBIZ opportunity detail page to extract procurement category, method, documents list, contact email/phone, and detail text. Slower but richer.

## `requestDelayMs` (type: `integer`):

Polite delay between page loads/clicks. Increase if GeBIZ responds slowly.

## `useApifyProxy` (type: `boolean`):

Route browser traffic through Apify Proxy if direct access is blocked. Leave disabled unless needed because GeBIZ may reject some proxy exits.

## `proxyGroups` (type: `array`):

Optional proxy groups. Leave empty for default Apify Proxy; use only if you know your account's proxy groups.

## `proxyCountryCode` (type: `string`):

Optional proxy country code. Leave empty for default proxy routing.

## Actor input object example

```json
{
  "keyword": "services",
  "startUrls": [],
  "todayOnly": true,
  "maxItems": 20,
  "includeDetails": false,
  "requestDelayMs": 750,
  "useApifyProxy": false,
  "proxyGroups": [],
  "proxyCountryCode": ""
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "keyword": "services",
    "startUrls": [],
    "todayOnly": true,
    "maxItems": 20,
    "includeDetails": false,
    "requestDelayMs": 750,
    "useApifyProxy": false,
    "proxyGroups": [],
    "proxyCountryCode": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/singapore-gebiz-tender-opportunities-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 = {
    "keyword": "services",
    "startUrls": [],
    "todayOnly": True,
    "maxItems": 20,
    "includeDetails": False,
    "requestDelayMs": 750,
    "useApifyProxy": False,
    "proxyGroups": [],
    "proxyCountryCode": "",
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/singapore-gebiz-tender-opportunities-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 '{
  "keyword": "services",
  "startUrls": [],
  "todayOnly": true,
  "maxItems": 20,
  "includeDetails": false,
  "requestDelayMs": 750,
  "useApifyProxy": false,
  "proxyGroups": [],
  "proxyCountryCode": ""
}' |
apify call automation-lab/singapore-gebiz-tender-opportunities-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/singapore-gebiz-tender-opportunities-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Singapore GeBIZ Tender Opportunities Scraper",
        "description": "Scrape Singapore GeBIZ tenders, quotations, and procurement opportunity details for monitoring, lead generation, and market research.",
        "version": "0.1",
        "x-build-id": "bMdpPiQnh9bKs5e5p"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~singapore-gebiz-tender-opportunities-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-singapore-gebiz-tender-opportunities-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/automation-lab~singapore-gebiz-tender-opportunities-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-singapore-gebiz-tender-opportunities-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/automation-lab~singapore-gebiz-tender-opportunities-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-singapore-gebiz-tender-opportunities-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": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keyword to search in GeBIZ opportunity title, document number, agency, and procurement category. Leave empty to collect Today's Opportunities."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional GeBIZ BOListing.xhtml listing URLs or directlink.xhtml?docCode=... detail URLs. If provided, these override the keyword/today search.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "todayOnly": {
                        "title": "Use Today's Opportunities when keyword is empty",
                        "type": "boolean",
                        "description": "When no keyword or start URL is provided, click the public Today's Opportunities view and scrape the current daily list.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Maximum opportunities",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum tender/opportunity records to save. Use 10-50 for quick tests and 100+ for monitoring searches such as services.",
                        "default": 20
                    },
                    "includeDetails": {
                        "title": "Open detail pages",
                        "type": "boolean",
                        "description": "Open each GeBIZ opportunity detail page to extract procurement category, method, documents list, contact email/phone, and detail text. Slower but richer.",
                        "default": false
                    },
                    "requestDelayMs": {
                        "title": "Delay between GeBIZ page actions (ms)",
                        "minimum": 250,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Polite delay between page loads/clicks. Increase if GeBIZ responds slowly.",
                        "default": 750
                    },
                    "useApifyProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Route browser traffic through Apify Proxy if direct access is blocked. Leave disabled unless needed because GeBIZ may reject some proxy exits.",
                        "default": false
                    },
                    "proxyGroups": {
                        "title": "Apify Proxy groups",
                        "type": "array",
                        "description": "Optional proxy groups. Leave empty for default Apify Proxy; use only if you know your account's proxy groups.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyCountryCode": {
                        "title": "Proxy country code",
                        "type": "string",
                        "description": "Optional proxy country code. Leave empty for default proxy routing.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
