# JobsDB Thailand Scraper (`mai_amm/jobsdb-thailand-scraper`) Actor

Scrape public job listings from th.jobsdb.com with optional detail enrichment.

- **URL**: https://apify.com/mai\_amm/jobsdb-thailand-scraper.md
- **Developed by:** [wiseld\_squid](https://apify.com/mai_amm) (community)
- **Categories:** Jobs, SEO tools, Agents
- **Stats:** 4 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.004 / result

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## JobsDB Thailand Scraper

Scrape job listings from JobsDB Thailand (`th.jobsdb.com`) by keyword, location, search URL, or job detail URL. The Actor is Thailand-only and is designed for job market monitoring, lead generation, salary research, recruiting intelligence, and recurring job tracking.

### Features

- Search JobsDB Thailand by keyword and location
- Crawl multiple result pages with `maxPages` and `maxResults`
- Open job detail pages by default for full job data
- Extract company, location, category, employment type, salary text, job description, application URL, and screening questions
- Track jobs across repeated runs with incremental mode
- Detect new, updated, unchanged, expired, and reappeared listings
- Optional compact output for AI agents and automation workflows
- Optional public contact extraction from job descriptions
- Residential proxy friendly with browser-based crawling, retries, and session handling

### Input

Typical input:

```json
{
  "query": "software engineer",
  "location": "Bangkok",
  "maxResults": 50,
  "maxPages": 3,
  "includeDetails": true,
  "incrementalMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": ["RESIDENTIAL"]
  }
}
````

Incremental monitoring input:

```json
{
  "query": "data analyst",
  "location": "Bangkok",
  "maxResults": 100,
  "maxPages": 5,
  "includeDetails": true,
  "incrementalMode": true,
  "stateKey": "jobsdb-th-data-analyst-bangkok",
  "emitExpired": true,
  "emitUnchanged": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": ["RESIDENTIAL"]
  }
}
```

You can also provide `startUrls` with JobsDB Thailand search or detail URLs. URLs outside `https://th.jobsdb.com` are ignored.

### Output

Each dataset item can include:

- `jobId`, `seekJobId`
- `title`
- `company`, `companyUrl`, `advertiserId`
- `location`, `locationCountry`, `locationState`, `locationSuburb`, `locationPostcode`
- `salaryText`, `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryType`
- `employmentType`, `workArrangement`
- `category`, `subCategory`, `roleId`
- `description`, `descriptionMarkdown`, `descriptionLength`
- `applyUrl`, `shareUrl`, `canonicalUrl`
- `screeningQuestions`
- `companyIndustry`, `companySize`
- `postedAtText`, `listedAtUtc`, `scrapedAt`
- `changeType`, `firstSeenAt`, `lastSeenAt`, `isRepost`, `repostOfId` when incremental mode is enabled
- `phoneNumber`, `extractedEmails` when `includeContacts` is enabled

Example:

```json
{
  "jobId": "91943754",
  "seekJobId": "91943754",
  "title": "Software Engineer",
  "company": "Finnomena Co., Ltd.",
  "location": "Pathum Wan, Bangkok (Hybrid)",
  "employmentType": "Full time",
  "workArrangement": "hybrid",
  "category": "Information & Communication Technology",
  "subCategory": "Engineering - Software",
  "applyUrl": "https://th.jobsdb.com/job/91943754/apply",
  "canonicalUrl": "https://th.jobsdb.com/job/91943754",
  "postedAtText": "Posted 4h ago"
}
```

### Detail Mode

`includeDetails` is enabled by default. This is the recommended mode because JobsDB search pages often expose only job IDs and URLs. Detail mode opens each listing and extracts the complete job data.

Disable `includeDetails` only when you need a fast URL/job ID discovery run.

### Incremental Mode

When `incrementalMode` is enabled, the Actor stores a baseline in the default key-value store using `stateKey`. Future runs compare current listings against that baseline and emit:

- `NEW`
- `UPDATED`
- `UNCHANGED`
- `REAPPEARED`
- `EXPIRED`

Use a stable `stateKey` per scheduled search, for example `jobsdb-th-software-engineer-bangkok`.

### Performance Notes

JobsDB/SEEK may block cloud and datacenter traffic. Residential proxy is strongly recommended. Detail mode is slower than search-only mode because it opens every job page.

Recommended production settings:

- `includeDetails`: `true`
- `maxConcurrency`: `1`
- `maxRequestRetries`: `4`
- `navigationTimeoutSecs`: `120`
- `requestHandlerTimeoutSecs`: `180`
- Apify Proxy group: `RESIDENTIAL`

### Latest Verification

Verified on Apify cloud on 2026-05-06 with:

- `query`: `software engineer`
- `location`: `Bangkok`
- `maxResults`: `20`
- `maxPages`: `2`
- `includeDetails`: `true`
- `maxConcurrency`: `1`
- residential proxy

Result:

- 21 requests: 1 search page + 20 detail pages
- 21 succeeded
- 0 failed
- detail fields were populated, including title, company, location, description, apply URL, and screening questions where available

### Limitations

- This Actor supports JobsDB Thailand only.
- JobsDB can change its frontend structure or anti-bot behavior, which may require parser or proxy tuning.
- Some fields are only available when JobsDB exposes them on the listing or detail page.
- Public contact extraction is optional and limited to contacts visible in job text.

### Legal

Use this Actor responsibly and make sure your use case complies with JobsDB/SEEK terms and applicable laws. Avoid collecting or using personal data in ways that violate privacy or platform rules.

# Actor input Schema

## `query` (type: `string`):

Job search keyword such as software engineer, data analyst, or บัญชี.

## `queries` (type: `array`):

Optional list of additional keywords. Each keyword is searched separately.

## `location` (type: `string`):

Optional Thailand location, for example Bangkok, Chiang Mai, Chonburi, Remote.

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

JobsDB Thailand search or job detail URLs. Non-Thai JobsDB URLs are ignored.

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

Maximum number of job records to save across all queries and URLs. Use 0 for unlimited.

## `maxPages` (type: `integer`):

Maximum search result pages per search source.

## `sortMode` (type: `string`):

Use date for newest jobs first, or relevance for JobsDB default ranking.

## `dateRange` (type: `string`):

Jobs posted within this many days, for example 1, 3, 7, 14, or 31.

## `workType` (type: `string`):

Native JobsDB work type code, for example 242 for Full time when available.

## `workArrangement` (type: `string`):

Native JobsDB arrangement code, for example 2 for Remote when available.

## `classification` (type: `string`):

Native JobsDB classification/category code.

## `subClassification` (type: `string`):

Native JobsDB sub-classification code.

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

Open job detail pages for full descriptions, company metadata, apply URL, emails, and phones where provided.

## `includeContacts` (type: `boolean`):

Include public emails and phone numbers extracted from detail text.

## `compact` (type: `boolean`):

Return only core fields for AI-agent or MCP use.

## `incrementalMode` (type: `boolean`):

Track listings across runs and emit only new, updated, or reappeared jobs by default.

## `stateKey` (type: `string`):

Stable key for incremental state. Use a different key for each scheduled query set.

## `emitUnchanged` (type: `boolean`):

When incremental mode is enabled, include unchanged jobs in the output.

## `emitExpired` (type: `boolean`):

When incremental mode is enabled, emit jobs that existed in the previous state but were not found in this run.

## `skipReposts` (type: `boolean`):

Drop detected reposts from output when incremental mode is enabled.

## `descriptionMaxLength` (type: `integer`):

Maximum text length for description fields. Use 0 for no trimming.

## `includeRawHtml` (type: `boolean`):

Include full detail-page HTML in descriptionHtml. Disabled by default to keep datasets smaller.

## `maxRequestRetries` (type: `integer`):

Retry count per request. Increase when proxies are unstable.

## `navigationTimeoutSecs` (type: `integer`):

Timeout for loading a JobsDB page. Residential proxies can be slow, so 120 seconds is safer for production.

## `requestHandlerTimeoutSecs` (type: `integer`):

Overall timeout per request including browser work and parsing.

## `maxConcurrency` (type: `integer`):

Number of browser pages running in parallel.

## `proxyConfiguration` (type: `object`):

Apify Proxy configuration. Residential proxy is recommended for JobsDB/SEEK.

## Actor input object example

```json
{
  "query": "software engineer",
  "location": "Bangkok",
  "startUrls": [
    {
      "url": "https://th.jobsdb.com/software-engineer-jobs/in-Bangkok"
    }
  ],
  "maxResults": 25,
  "maxPages": 5,
  "sortMode": "relevance",
  "dateRange": "",
  "includeDetails": true,
  "includeContacts": false,
  "compact": false,
  "incrementalMode": false,
  "stateKey": "jobsdb-th-software-engineer-bangkok",
  "emitUnchanged": false,
  "emitExpired": false,
  "skipReposts": false,
  "descriptionMaxLength": 12000,
  "includeRawHtml": false,
  "maxRequestRetries": 4,
  "navigationTimeoutSecs": 120,
  "requestHandlerTimeoutSecs": 180,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "groups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "query": "software engineer",
    "location": "Bangkok",
    "startUrls": [
        {
            "url": "https://th.jobsdb.com/software-engineer-jobs/in-Bangkok"
        }
    ],
    "stateKey": "jobsdb-th-software-engineer-bangkok"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mai_amm/jobsdb-thailand-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 = {
    "query": "software engineer",
    "location": "Bangkok",
    "startUrls": [{ "url": "https://th.jobsdb.com/software-engineer-jobs/in-Bangkok" }],
    "stateKey": "jobsdb-th-software-engineer-bangkok",
}

# Run the Actor and wait for it to finish
run = client.actor("mai_amm/jobsdb-thailand-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 '{
  "query": "software engineer",
  "location": "Bangkok",
  "startUrls": [
    {
      "url": "https://th.jobsdb.com/software-engineer-jobs/in-Bangkok"
    }
  ],
  "stateKey": "jobsdb-th-software-engineer-bangkok"
}' |
apify call mai_amm/jobsdb-thailand-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "JobsDB Thailand Scraper",
        "description": "Scrape public job listings from th.jobsdb.com with optional detail enrichment.",
        "version": "0.1",
        "x-build-id": "sBTYjkre5zOT993gP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mai_amm~jobsdb-thailand-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mai_amm-jobsdb-thailand-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/mai_amm~jobsdb-thailand-scraper/runs": {
            "post": {
                "operationId": "runs-sync-mai_amm-jobsdb-thailand-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/mai_amm~jobsdb-thailand-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-mai_amm-jobsdb-thailand-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": {
                    "query": {
                        "title": "Query",
                        "type": "string",
                        "description": "Job search keyword such as software engineer, data analyst, or บัญชี."
                    },
                    "queries": {
                        "title": "Multiple queries",
                        "type": "array",
                        "description": "Optional list of additional keywords. Each keyword is searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional Thailand location, for example Bangkok, Chiang Mai, Chonburi, Remote."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "JobsDB Thailand search or job detail URLs. Non-Thai JobsDB URLs are ignored.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of job records to save across all queries and URLs. Use 0 for unlimited.",
                        "default": 25
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum search result pages per search source.",
                        "default": 5
                    },
                    "sortMode": {
                        "title": "Sort mode",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Use date for newest jobs first, or relevance for JobsDB default ranking.",
                        "default": "relevance"
                    },
                    "dateRange": {
                        "title": "Date range",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "14",
                            "31"
                        ],
                        "type": "string",
                        "description": "Jobs posted within this many days, for example 1, 3, 7, 14, or 31.",
                        "default": ""
                    },
                    "workType": {
                        "title": "Work type code",
                        "type": "string",
                        "description": "Native JobsDB work type code, for example 242 for Full time when available."
                    },
                    "workArrangement": {
                        "title": "Work arrangement code",
                        "type": "string",
                        "description": "Native JobsDB arrangement code, for example 2 for Remote when available."
                    },
                    "classification": {
                        "title": "Classification code",
                        "type": "string",
                        "description": "Native JobsDB classification/category code."
                    },
                    "subClassification": {
                        "title": "Sub-classification code",
                        "type": "string",
                        "description": "Native JobsDB sub-classification code."
                    },
                    "includeDetails": {
                        "title": "Include details",
                        "type": "boolean",
                        "description": "Open job detail pages for full descriptions, company metadata, apply URL, emails, and phones where provided.",
                        "default": true
                    },
                    "includeContacts": {
                        "title": "Include contacts",
                        "type": "boolean",
                        "description": "Include public emails and phone numbers extracted from detail text.",
                        "default": false
                    },
                    "compact": {
                        "title": "Compact output",
                        "type": "boolean",
                        "description": "Return only core fields for AI-agent or MCP use.",
                        "default": false
                    },
                    "incrementalMode": {
                        "title": "Incremental mode",
                        "type": "boolean",
                        "description": "Track listings across runs and emit only new, updated, or reappeared jobs by default.",
                        "default": false
                    },
                    "stateKey": {
                        "title": "State key",
                        "type": "string",
                        "description": "Stable key for incremental state. Use a different key for each scheduled query set."
                    },
                    "emitUnchanged": {
                        "title": "Emit unchanged",
                        "type": "boolean",
                        "description": "When incremental mode is enabled, include unchanged jobs in the output.",
                        "default": false
                    },
                    "emitExpired": {
                        "title": "Emit expired",
                        "type": "boolean",
                        "description": "When incremental mode is enabled, emit jobs that existed in the previous state but were not found in this run.",
                        "default": false
                    },
                    "skipReposts": {
                        "title": "Skip reposts",
                        "type": "boolean",
                        "description": "Drop detected reposts from output when incremental mode is enabled.",
                        "default": false
                    },
                    "descriptionMaxLength": {
                        "title": "Description max length",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum text length for description fields. Use 0 for no trimming.",
                        "default": 12000
                    },
                    "includeRawHtml": {
                        "title": "Include raw HTML",
                        "type": "boolean",
                        "description": "Include full detail-page HTML in descriptionHtml. Disabled by default to keep datasets smaller.",
                        "default": false
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Retry count per request. Increase when proxies are unstable.",
                        "default": 4
                    },
                    "navigationTimeoutSecs": {
                        "title": "Navigation timeout seconds",
                        "minimum": 30,
                        "maximum": 240,
                        "type": "integer",
                        "description": "Timeout for loading a JobsDB page. Residential proxies can be slow, so 120 seconds is safer for production.",
                        "default": 120
                    },
                    "requestHandlerTimeoutSecs": {
                        "title": "Request handler timeout seconds",
                        "minimum": 60,
                        "maximum": 360,
                        "type": "integer",
                        "description": "Overall timeout per request including browser work and parsing.",
                        "default": 180
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of browser pages running in parallel.",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy configuration. Residential proxy is recommended for JobsDB/SEEK.",
                        "default": {
                            "useApifyProxy": true,
                            "groups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
