# CPSC Product Recalls Monitor (`automation-lab/cpsc-product-recalls-monitor`) Actor

Monitor official U.S. CPSC recalls by product, company, hazard, remedy, and keyword. Export compliance-ready recall datasets and only-new alerts.

- **URL**: https://apify.com/automation-lab/cpsc-product-recalls-monitor.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.02 / 1,000 item extracteds

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

## CPSC Product Recalls Monitor

Monitor official U.S. Consumer Product Safety Commission (CPSC) product recalls from the public saferproducts.gov recall API. This Apify Actor turns government recall records into clean datasets for compliance, marketplace monitoring, product safety, insurance, legal, and risk teams.

The actor is HTTP-first, fast, and designed for scheduled monitoring. Search by date range, product keyword, company keyword, hazard, remedy, or general text, then export normalized recall records with product names, hazards, remedies, companies, countries, contact details, and images.

### What does CPSC Product Recalls Monitor do?

It queries the official CPSC recall JSON endpoint and saves matching recall records to an Apify dataset.

- ✅ Monitor new consumer product recalls by date
- ✅ Search recall titles, descriptions, products, hazards, remedies, companies, and countries
- ✅ Extract normalized product, hazard, remedy, party, country, injury, and image fields
- ✅ Run on a schedule with `onlyNew` dedupe by `RecallID`
- ✅ Export data to JSON, CSV, Excel, BigQuery, Google Sheets, or your own API workflow

### Who is it for?

#### Retail compliance teams

Track recalls that might affect SKUs sold in your stores or marketplace catalog.

#### Marketplace trust and safety teams

Detect safety recalls involving sellers, importers, product categories, or consumer hazards.

#### Product safety and quality teams

Monitor product names, model families, hazards, incidents, and remedies without manually checking CPSC pages.

#### Insurance and legal researchers

Collect structured recall evidence with official source URLs, dates, descriptions, injuries, and remedy text.

#### Brand protection teams

Watch for product mentions, company names, retailer names, and importer details in new recall notices.

### Why use this actor?

Manual recall monitoring is easy to miss. The CPSC website is public, but compliance teams usually need repeatable exports, filters, and integrations.

This actor provides:

- 📅 Date range monitoring
- 🔎 Keyword filtering
- 🧾 Structured recall details
- 🏷 Product and company matching
- 🚨 Hazard and remedy extraction
- 🔁 Scheduled `onlyNew` mode
- 📤 Dataset exports and API access

### Official data source

The actor uses the official saferproducts.gov recall REST service:

`https://www.saferproducts.gov/RestWebServices/Recall?format=json`

The source is public and does not require login, cookies, scraping browser pages, or a paid API key.

### Data you can extract

| Field | Description |
| --- | --- |
| `recallId` | Stable CPSC Recall ID |
| `recallNumber` | Public recall number |
| `recallDate` | Recall announcement date |
| `lastPublishDate` | Last publish/update date when provided |
| `title` | Recall title |
| `description` | Product/recall description |
| `url` | Official CPSC recall URL |
| `consumerContact` | Consumer instructions/contact details |
| `products` | Product objects with name, model, type, units, category |
| `productNames` | Flattened product name list |
| `hazards` | CPSC hazard statements |
| `remedies` | Remedy instructions |
| `remedyOptions` | Remedy labels such as Refund, Repair, Replace |
| `injuries` | Incidents or injuries text |
| `manufacturers` | Manufacturer names and IDs when present |
| `importers` | Importer names and IDs when present |
| `retailers` | Retailer / sold-at text and IDs when present |
| `distributors` | Distributor names and IDs when present |
| `countries` | Manufacturer countries |
| `upcs` | UPCs when provided by CPSC |
| `imageUrls` | Recall image URLs |
| `images` | Image URLs with captions |
| `matchedFilters` | Which user filters matched |
| `isNew` | Whether the Recall ID was unseen in monitor mode |
| `source` | Source endpoint label |
| `scrapedAt` | Actor run timestamp |

### How much does it cost to monitor CPSC product recalls?

The actor uses pay-per-event pricing:

- A small start event per run
- A per-record event for each CPSC recall saved

Because it uses the official JSON endpoint and no browser, runs are normally inexpensive. Use a short date range and a low `maxItems` value for test runs. For ongoing monitoring, schedule the actor daily or weekly with `onlyNew` enabled so you pay only for newly emitted records.

### Input options

#### `sinceDays`

Look back this many days when `startDate` is empty. The default is 30.

#### `startDate` and `endDate`

Use explicit inclusive dates in `YYYY-MM-DD` format.

#### `keyword`

Search across title, description, products, hazards, remedies, companies, countries, and consumer contact text.

#### `productKeyword`

Search only product names, descriptions, models, and types.

#### `companyKeyword`

Search manufacturers, importers, retailers, and distributors.

#### `hazardKeyword`

Search hazard statements.

#### `remedyKeyword`

Search remedy instructions and remedy option labels.

#### `maxItems`

Maximum recall records to save. Keep this small for first tests and increase for historical exports.

#### `sortBy`

Choose `newest` or `oldest`.

#### `onlyNew`

Enable scheduled monitoring mode. The actor stores seen `RecallID` values in the default key-value store and emits only unseen recalls on later runs that use the same storage.

#### `includeImages`

Include image URL and caption fields when CPSC provides them.

### Example input: recent smoke alarm recalls

```json
{
  "sinceDays": 90,
  "keyword": "smoke",
  "maxItems": 50,
  "sortBy": "newest",
  "onlyNew": false,
  "includeImages": true
}
````

### Example input: company monitoring

```json
{
  "sinceDays": 365,
  "companyKeyword": "Amazon",
  "maxItems": 100,
  "sortBy": "newest",
  "onlyNew": true
}
```

### Example output

```json
{
  "recallId": 10840,
  "recallNumber": "26582",
  "recallDate": "2026-06-25",
  "title": "Combination Smoke and Carbon Monoxide (CO) Detectors Recalled...",
  "url": "https://www.cpsc.gov/Recalls/...",
  "productNames": ["Treatlife Smoke and Carbon Monoxide (CO) Detectors"],
  "hazards": ["The recalled detectors can fail to alert consumers of a fire..."],
  "remedyOptions": ["Refund"],
  "countries": ["China"],
  "matchedFilters": ["keyword"],
  "isNew": true
}
```

### How to run the actor

1. Open the actor on Apify.
2. Enter a date range or leave `startDate` empty and use `sinceDays`.
3. Add keyword, product, company, hazard, or remedy filters if needed.
4. Set `maxItems`.
5. Click **Start**.
6. Download the dataset or connect it to another workflow.

### Scheduled monitoring workflow

For daily compliance monitoring:

1. Set `sinceDays` to 7 or 14.
2. Add your company, product, hazard, or keyword filters.
3. Enable `onlyNew`.
4. Create an Apify schedule that runs daily.
5. Send dataset items to Slack, email, Google Sheets, a webhook, or your internal compliance system.

The actor dedupes by stable CPSC `RecallID` in its default key-value store.

### Tips for better results

- Use broad `keyword` searches for discovery.
- Use `productKeyword` when matching SKUs or product families.
- Use `companyKeyword` for manufacturers, importers, retailers, or marketplace names.
- Use `hazardKeyword` for risks such as `fire`, `burn`, `choking`, `fall`, or `laceration`.
- Use `remedyKeyword` for workflows focused on refunds, repairs, replacements, or warnings.
- Keep scheduled runs small and frequent instead of running huge historical exports every day.

### Integrations

You can connect CPSC recall data to:

- Google Sheets product safety trackers
- Slack alerts for new recall matches
- Marketplace seller risk dashboards
- Catalog compliance review queues
- Insurance and legal research databases
- Webhooks for internal case management systems
- BigQuery or Snowflake for historical recall analytics

### 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/cpsc-product-recalls-monitor').call({
  sinceDays: 30,
  keyword: 'battery',
  maxItems: 50,
});

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

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/cpsc-product-recalls-monitor').call(run_input={
    'sinceDays': 30,
    'keyword': 'battery',
    'maxItems': 50,
})
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~cpsc-product-recalls-monitor/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"sinceDays":30,"keyword":"battery","maxItems":50}'
```

### MCP integration

Use this actor with Apify MCP tools in Claude Desktop, Claude Code, or other MCP clients.

MCP URL:

`https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor`

Claude Code setup:

```bash
claude mcp add apify-cpsc-recalls https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor
```

Claude Desktop JSON config:

```json
{
  "mcpServers": {
    "apify-cpsc-recalls": {
      "url": "https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor"
    }
  }
}
```

Example prompts:

- "Run the CPSC Product Recalls Monitor for the last 30 days and summarize recalls mentioning batteries."
- "Check whether any new CPSC recalls mention smoke detectors or carbon monoxide alarms."
- "Export CPSC recalls involving Amazon sellers to a table with hazard and remedy columns."

### Data freshness

The actor retrieves records from the live CPSC recall service at run time. Use `lastPublishDate` and `recallDate` to distinguish original announcements from updated records.

### Limitations

- The actor returns what the official CPSC recall endpoint provides.
- Some fields, such as UPCs or manufacturers, may be empty for certain recalls.
- Keyword matching is case-insensitive substring matching, not semantic classification.
- `onlyNew` dedupe is scoped to the actor's default key-value store; changing storage starts a new seen-ID history.

### Legality and ethical use

This actor accesses a public U.S. government recall API. Use the data for lawful compliance, safety, research, and business purposes. Always review official CPSC pages for legal decisions, public notices, or customer-facing communications.

### FAQ

#### I got zero results

Try a broader date range, remove narrow filters, or search a simpler keyword such as `battery`, `fire`, `smoke`, `toy`, or `refund`.

#### My scheduled run did not emit an old recall

If `onlyNew` is enabled, the actor skips Recall IDs it has already seen in the same key-value store. Disable `onlyNew` or use a fresh storage to re-export historical records.

#### A field is empty

Some CPSC records do not include every nested field. Empty UPC, manufacturer, distributor, or image arrays usually mean the source record did not provide them.

### Related scrapers and monitors

Other Automation Lab actors can complement this workflow:

- https://apify.com/automation-lab/website-contact-finder
- https://apify.com/automation-lab/bulk-url-status-checker
- https://apify.com/automation-lab/google-search-results-scraper

### Support

If you need a new CPSC filter, output field, or integration example, open an issue on the actor page with the input you used and the expected output.

# Actor input Schema

## `sinceDays` (type: `integer`):

Used when Start date is empty. The actor looks back this many days from the End date.

## `startDate` (type: `string`):

Inclusive recall date start in YYYY-MM-DD format. Leave empty to use Days back to monitor.

## `endDate` (type: `string`):

Inclusive recall date end in YYYY-MM-DD format. Leave empty to use today.

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

Optional full-text keyword matched against title, description, products, hazards, remedies, companies, countries, and contact text.

## `productKeyword` (type: `string`):

Optional keyword matched against product names, descriptions, models, and types.

## `companyKeyword` (type: `string`):

Optional keyword matched against manufacturers, importers, retailers, and distributors.

## `hazardKeyword` (type: `string`):

Optional keyword matched against CPSC hazard text.

## `remedyKeyword` (type: `string`):

Optional keyword matched against remedy instructions and remedy options.

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

Maximum matching recalls to save to the dataset.

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

Order of records in the dataset.

## `onlyNew` (type: `boolean`):

When enabled, the actor saves Recall IDs in its default key-value store and emits only recalls not seen by previous runs using the same storage.

## `includeImages` (type: `boolean`):

Include image URLs and captions from the CPSC record when available.

## Actor input object example

```json
{
  "sinceDays": 30,
  "keyword": "smoke",
  "maxItems": 20,
  "sortBy": "newest",
  "onlyNew": false,
  "includeImages": true
}
```

# 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 = {
    "sinceDays": 30,
    "startDate": "",
    "endDate": "",
    "keyword": "smoke",
    "productKeyword": "",
    "companyKeyword": "",
    "hazardKeyword": "",
    "remedyKeyword": "",
    "maxItems": 20,
    "sortBy": "newest",
    "onlyNew": false,
    "includeImages": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/cpsc-product-recalls-monitor").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 = {
    "sinceDays": 30,
    "startDate": "",
    "endDate": "",
    "keyword": "smoke",
    "productKeyword": "",
    "companyKeyword": "",
    "hazardKeyword": "",
    "remedyKeyword": "",
    "maxItems": 20,
    "sortBy": "newest",
    "onlyNew": False,
    "includeImages": True,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/cpsc-product-recalls-monitor").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 '{
  "sinceDays": 30,
  "startDate": "",
  "endDate": "",
  "keyword": "smoke",
  "productKeyword": "",
  "companyKeyword": "",
  "hazardKeyword": "",
  "remedyKeyword": "",
  "maxItems": 20,
  "sortBy": "newest",
  "onlyNew": false,
  "includeImages": true
}' |
apify call automation-lab/cpsc-product-recalls-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/cpsc-product-recalls-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CPSC Product Recalls Monitor",
        "description": "Monitor official U.S. CPSC recalls by product, company, hazard, remedy, and keyword. Export compliance-ready recall datasets and only-new alerts.",
        "version": "0.1",
        "x-build-id": "crKxogsP3mZQa6K8z"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~cpsc-product-recalls-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-cpsc-product-recalls-monitor",
                "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~cpsc-product-recalls-monitor/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-cpsc-product-recalls-monitor",
                "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~cpsc-product-recalls-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-cpsc-product-recalls-monitor",
                "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": {
                    "sinceDays": {
                        "title": "Days back to monitor",
                        "minimum": 1,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Used when Start date is empty. The actor looks back this many days from the End date.",
                        "default": 30
                    },
                    "startDate": {
                        "title": "Start date",
                        "type": "string",
                        "description": "Inclusive recall date start in YYYY-MM-DD format. Leave empty to use Days back to monitor."
                    },
                    "endDate": {
                        "title": "End date",
                        "type": "string",
                        "description": "Inclusive recall date end in YYYY-MM-DD format. Leave empty to use today."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Optional full-text keyword matched against title, description, products, hazards, remedies, companies, countries, and contact text."
                    },
                    "productKeyword": {
                        "title": "Product keyword",
                        "type": "string",
                        "description": "Optional keyword matched against product names, descriptions, models, and types."
                    },
                    "companyKeyword": {
                        "title": "Company keyword",
                        "type": "string",
                        "description": "Optional keyword matched against manufacturers, importers, retailers, and distributors."
                    },
                    "hazardKeyword": {
                        "title": "Hazard keyword",
                        "type": "string",
                        "description": "Optional keyword matched against CPSC hazard text."
                    },
                    "remedyKeyword": {
                        "title": "Remedy keyword",
                        "type": "string",
                        "description": "Optional keyword matched against remedy instructions and remedy options."
                    },
                    "maxItems": {
                        "title": "Maximum recall records",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum matching recalls to save to the dataset.",
                        "default": 20
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "newest",
                            "oldest"
                        ],
                        "type": "string",
                        "description": "Order of records in the dataset.",
                        "default": "newest"
                    },
                    "onlyNew": {
                        "title": "Monitor mode: only new Recall IDs",
                        "type": "boolean",
                        "description": "When enabled, the actor saves Recall IDs in its default key-value store and emits only recalls not seen by previous runs using the same storage.",
                        "default": false
                    },
                    "includeImages": {
                        "title": "Include recall images",
                        "type": "boolean",
                        "description": "Include image URLs and captions from the CPSC record when available.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
