# Uline Catalog & Price Scraper (`crawlerbros/uline-catalog-price-scraper`) Actor

Scrape live industrial, packaging, and shipping-supply listings from Uline.com - browse any of the 45 top-level catalog departments, search by keyword, or look up full product detail (price, description, category path) by item number. No login required.

- **URL**: https://apify.com/crawlerbros/uline-catalog-price-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Uline Catalog & Price Scraper

Scrape live industrial, packaging, and shipping-supply listings from [Uline.com](https://www.uline.com) — browse any of Uline's 45 top-level catalog departments (or jump straight to any group/subgroup by URL), search by keyword, or pull full product detail (price, pack pricing, availability, dimensions) straight from an item number. Works on Uline's US, Canadian (English & French), and Mexican storefronts. No login, no account, no paid proxy required.

### What this actor does

- **Browse a catalog department** — pick from all 45 Uline departments (Boxes, Tape, Stretch Wrap, Janitorial Supplies, Gloves, Shelving, and more). The actor automatically crawls every group and subgroup inside the department and collects every in-stock item with its real price.
- **Browse by group/subgroup URL** — paste any Uline department/group/subgroup URL (e.g. copied straight from your browser while browsing uline.com) to crawl that exact node, without being limited to the 45 top-level departments.
- **Search by keyword** — free-text search across Uline's full catalog, e.g. `corrugated boxes 12x12x12`, `packing tape 2 inch`.
- **Product detail by item number** — paste one or more Uline item numbers (e.g. `S-4992`) or product URLs to get the full detail record, including pack price/quantity, availability, color, and dimensions.
- **Multi-market** — scrape uline.com (US, USD), uline.ca (Canada, CAD, English or French), or uline.mx (Mexico, MXN, Spanish) — same catalog and item numbers, localized pricing.
- **Filters** — price range and 5 sort orders (relevance, price low/high, item number, name A-Z).
- **Optional full-detail enrichment** — turn on `fetchFullDetails` during browse/search to backfill pack price, pack quantity, availability, color, and dimensions onto every result (normally only returned by `productDetail` mode).
- Empty fields are always omitted — every record only contains data actually found on the page.

### Output per product

- `itemNumber` — Uline SKU, e.g. `S-4992`
- `description` — product description as shown on Uline
- `category` — Uline's own catalog category label
- `className`, `classNum` — top-level department (e.g. `Boxes, Corrugated` / `Cls_04`)
- `groupName`, `groupNum` — mid-level group (e.g. `Corrugated Boxes` / `Grp_9`)
- `subgroupName`, `subgroupNum` — leaf subgroup (e.g. `Long Boxes` / `BL_406`)
- `categoryUrl`, `groupUrl`, `subgroupUrl` — live Uline URL for each ancestor catalog node
- `price`, `priceCurrency` — per-unit price, in the currency of the selected market
- `packPrice` — total price for the minimum order quantity (e.g. a case), where Uline shows a separate case price *(`productDetail` mode, or browse/search with `fetchFullDetails` on)*
- `packQuantity` — number of units in that pack/case *(same conditions as `packPrice`)*
- `availability` — `InStock` / `OutOfStock` / etc. *(same conditions as `packPrice`)*
- `color`, `dimensions`, `width`, `height` — physical attributes where Uline publishes them *(same conditions as `packPrice`)*
- `priceValidUntil` — date the listed price is guaranteed until *(same conditions as `packPrice`)*
- `productUrl` — direct Uline product page
- `imageUrl` — product photo
- `sourceUrl` — the exact Uline page the record was scraped from
- `recordType: "product"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `browseByCategory` | `browseByCategory` / `browseByUrl` / `search` / `productDetail` |
| `productClass` | select | `Cls_04` (Boxes, Corrugated) | Catalog department to crawl (mode=browseByCategory) |
| `categoryUrl` | string | – | Full Uline department/group/subgroup URL to crawl (mode=browseByUrl) |
| `keywords` | string | `corrugated boxes 12x12x12` | Free-text search (mode=search) |
| `itemNumbers` | array | – | Uline item numbers or product URLs (mode=productDetail) |
| `minPrice` / `maxPrice` | number | – | Price range, in the selected market's currency |
| `sortBy` | select | `relevance` | `relevance` / `priceLowToHigh` / `priceHighToLow` / `itemNumber` / `nameAToZ` |
| `maxItems` | integer | `30` | Hard cap on emitted records (1-500) |
| `fetchFullDetails` | boolean | `false` | Fetch each result's own product page to add pack price/quantity, availability, color, dimensions (mode=browseByCategory, browseByUrl, search) |
| `country` | select | `US` | Market to scrape: `US` (uline.com), `CA` (uline.ca), `CA_FR` (fr.uline.ca), `MX` (uline.mx) |

#### Example: browse a department

```json
{
  "mode": "browseByCategory",
  "productClass": "Cls_17",
  "maxPrice": 50,
  "maxItems": 100
}
````

#### Example: browse a specific group by URL

```json
{
  "mode": "browseByUrl",
  "categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes",
  "maxItems": 50
}
```

#### Example: keyword search

```json
{
  "mode": "search",
  "keywords": "nitrile gloves large",
  "maxItems": 40
}
```

#### Example: product detail by item number

```json
{
  "mode": "productDetail",
  "itemNumbers": ["S-4992", "S-4748"]
}
```

#### Example: Canadian market with full-detail enrichment

```json
{
  "mode": "browseByCategory",
  "productClass": "Cls_04",
  "country": "CA",
  "fetchFullDetails": true,
  "maxItems": 20
}
```

### FAQs

**Does this actor need a Uline account or cookies?**
No. Catalog department browsing and product detail pages are fully public. Uline's dedicated keyword-search page sits behind a short-lived JS verification challenge, so `search` mode uses a headless browser only for that first step; every other request is plain HTTP.

**Why does keyword search sometimes return fewer results than expected?**
Uline auto-narrows broad or ambiguous search terms (e.g. a single generic word) to a department landing page instead of a direct product list. This actor detects that case and automatically drills into the first matching group/subgroup so you still get real, relevant products — a more specific, multi-word phrase (ideally including a size or spec) returns the most precise direct matches.

**What does `productClass` cover?**
Every one of Uline's 45 public top-level catalog departments — shipping, packaging, janitorial, safety, retail, office, and warehouse supplies. If you need a narrower slice than a whole department, use `mode: "browseByUrl"` with the exact group or subgroup URL instead.

**What markets are supported?**
`US` (uline.com, USD), `CA` (uline.ca, CAD, English), `CA_FR` (fr.uline.ca, CAD, French), and `MX` (uline.mx, MXN, Spanish). All four serve the same catalog structure and item numbers with localized pricing.

**Why don't `packPrice`, `availability`, `color`, etc. show up on browse/search results?**
Those fields come from each product's own detail page, which browse/search modes don't fetch by default (to keep runs fast). Turn on `fetchFullDetails` to fetch them for every result, at the cost of one extra request per item — or use `productDetail` mode directly, which always includes them at no extra configuration.

**Why did I get 0 results?**
Either the department/URL/keyword/item number had no matching data, or your price filter excluded every match. The run's status message explains which case applies.

### Limitations

- **Size/variant "root" items** (mostly apparel-sized products like gloves) require Uline's own size-selector form rather than a single static product page, so `productDetail` mode can't resolve a final SKU for these — the base item still appears in `browseByCategory`/`browseByUrl`/`search` results, just without pack/detail enrichment.
- **"Related items"** shown on Uline's product pages are loaded client-side after page load and aren't present in the static HTML, so they aren't extracted.
- Client-side `sortBy` is applied after fetching (Uline's own pages don't expose a server-side sort parameter for catalog/search listings).

# Actor input Schema

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

What to fetch from Uline.

## `productClass` (type: `string`):

One of Uline's 45 top-level catalog departments. The actor crawls every group and subgroup under it to collect real, in-stock products with prices.

## `categoryUrl` (type: `string`):

A full Uline department (`Cls_XX`), group (`Grp_XX`), or subgroup (`BL_XX`) URL — copy it straight from your browser's address bar while browsing uline.com. Crawls every product from that exact node down, without being limited to the 45 top-level departments in `productClass`.

## `keywords` (type: `string`):

Free-text keyword search, e.g. `corrugated boxes 12x12x12`, `packing tape 2 inch`, `nitrile gloves`. More specific phrases (including a size) return the most precise matches.

## `itemNumbers` (type: `array`):

Uline item numbers, e.g. `S-4992`, or full product URLs.

## `minPrice` (type: `number`):

Drop products cheaper than this (in the currency of the selected `country` market — Uline prices are rarely whole numbers, e.g. `1.18`).

## `maxPrice` (type: `number`):

Drop products pricier than this (in the currency of the selected `country` market).

## `sortBy` (type: `string`):

Client-side sort applied after fetching.

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

Hard cap on emitted records.

## `fetchFullDetails` (type: `boolean`):

(mode=browseByCategory, browseByUrl, search) Fetch each result's own product page to add pack price, pack quantity, availability, color, dimensions, and price-valid-until date. Adds one extra request per result, so runs take longer. `productDetail` mode always includes these fields at no extra cost.

## `country` (type: `string`):

Which localized Uline storefront to scrape. Changes the base domain, currency, and (for Mexico) language — the catalog structure and item numbers are identical across markets.

## Actor input object example

```json
{
  "mode": "browseByCategory",
  "productClass": "Cls_04",
  "categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes",
  "keywords": "corrugated boxes 12x12x12",
  "itemNumbers": [],
  "sortBy": "relevance",
  "maxItems": 30,
  "fetchFullDetails": false,
  "country": "US"
}
```

# Actor output Schema

## `products` (type: `string`):

Dataset containing all scraped Uline products.

# 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 = {
    "mode": "browseByCategory",
    "productClass": "Cls_04",
    "categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes",
    "keywords": "corrugated boxes 12x12x12",
    "itemNumbers": [],
    "sortBy": "relevance",
    "maxItems": 30,
    "fetchFullDetails": false,
    "country": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/uline-catalog-price-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 = {
    "mode": "browseByCategory",
    "productClass": "Cls_04",
    "categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes",
    "keywords": "corrugated boxes 12x12x12",
    "itemNumbers": [],
    "sortBy": "relevance",
    "maxItems": 30,
    "fetchFullDetails": False,
    "country": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/uline-catalog-price-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 '{
  "mode": "browseByCategory",
  "productClass": "Cls_04",
  "categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes",
  "keywords": "corrugated boxes 12x12x12",
  "itemNumbers": [],
  "sortBy": "relevance",
  "maxItems": 30,
  "fetchFullDetails": false,
  "country": "US"
}' |
apify call crawlerbros/uline-catalog-price-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Uline Catalog & Price Scraper",
        "description": "Scrape live industrial, packaging, and shipping-supply listings from Uline.com - browse any of the 45 top-level catalog departments, search by keyword, or look up full product detail (price, description, category path) by item number. No login required.",
        "version": "1.0",
        "x-build-id": "NGngKm4lSgDfu5ESR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~uline-catalog-price-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-uline-catalog-price-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/crawlerbros~uline-catalog-price-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-uline-catalog-price-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/crawlerbros~uline-catalog-price-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-uline-catalog-price-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": [
                            "browseByCategory",
                            "browseByUrl",
                            "search",
                            "productDetail"
                        ],
                        "type": "string",
                        "description": "What to fetch from Uline.",
                        "default": "browseByCategory"
                    },
                    "productClass": {
                        "title": "Catalog department (mode=browseByCategory)",
                        "enum": [
                            "Cls_01",
                            "Cls_02",
                            "Cls_03",
                            "Cls_04",
                            "Cls_05",
                            "Cls_06",
                            "Cls_07",
                            "Cls_08",
                            "Cls_09",
                            "Cls_10",
                            "Cls_11",
                            "Cls_12",
                            "Cls_13",
                            "Cls_14",
                            "Cls_15",
                            "Cls_16",
                            "Cls_17",
                            "Cls_18",
                            "Cls_19",
                            "Cls_20",
                            "Cls_21",
                            "Cls_22",
                            "Cls_23",
                            "Cls_24",
                            "Cls_25",
                            "Cls_26",
                            "Cls_27",
                            "Cls_28",
                            "Cls_29",
                            "Cls_30",
                            "Cls_31",
                            "Cls_32",
                            "Cls_33",
                            "Cls_34",
                            "Cls_35",
                            "Cls_36",
                            "Cls_37",
                            "Cls_38",
                            "Cls_39",
                            "Cls_40",
                            "Cls_41",
                            "Cls_42",
                            "Cls_43",
                            "Cls_44",
                            "Cls_45"
                        ],
                        "type": "string",
                        "description": "One of Uline's 45 top-level catalog departments. The actor crawls every group and subgroup under it to collect real, in-stock products with prices.",
                        "default": "Cls_04"
                    },
                    "categoryUrl": {
                        "title": "Category/group/subgroup URL (mode=browseByUrl)",
                        "type": "string",
                        "description": "A full Uline department (`Cls_XX`), group (`Grp_XX`), or subgroup (`BL_XX`) URL — copy it straight from your browser's address bar while browsing uline.com. Crawls every product from that exact node down, without being limited to the 45 top-level departments in `productClass`.",
                        "default": "https://www.uline.com/Grp_9/Corrugated-Boxes"
                    },
                    "keywords": {
                        "title": "Search keywords (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword search, e.g. `corrugated boxes 12x12x12`, `packing tape 2 inch`, `nitrile gloves`. More specific phrases (including a size) return the most precise matches.",
                        "default": "corrugated boxes 12x12x12"
                    },
                    "itemNumbers": {
                        "title": "Item numbers (mode=productDetail)",
                        "type": "array",
                        "description": "Uline item numbers, e.g. `S-4992`, or full product URLs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "number",
                        "description": "Drop products cheaper than this (in the currency of the selected `country` market — Uline prices are rarely whole numbers, e.g. `1.18`)."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "number",
                        "description": "Drop products pricier than this (in the currency of the selected `country` market)."
                    },
                    "sortBy": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "priceLowToHigh",
                            "priceHighToLow",
                            "itemNumber",
                            "nameAToZ"
                        ],
                        "type": "string",
                        "description": "Client-side sort applied after fetching.",
                        "default": "relevance"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 30
                    },
                    "fetchFullDetails": {
                        "title": "Fetch full product details",
                        "type": "boolean",
                        "description": "(mode=browseByCategory, browseByUrl, search) Fetch each result's own product page to add pack price, pack quantity, availability, color, dimensions, and price-valid-until date. Adds one extra request per result, so runs take longer. `productDetail` mode always includes these fields at no extra cost.",
                        "default": false
                    },
                    "country": {
                        "title": "Market / country",
                        "enum": [
                            "US",
                            "CA",
                            "CA_FR",
                            "MX"
                        ],
                        "type": "string",
                        "description": "Which localized Uline storefront to scrape. Changes the base domain, currency, and (for Mexico) language — the catalog structure and item numbers are identical across markets.",
                        "default": "US"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
