# Health Canada Medical Device Licence Scraper (`automation-lab/health-canada-medical-device-licence-scraper`) Actor

Extract official Health Canada medical device licence records with status, class, company, dates, and source metadata for compliance workflows.

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

## Pricing

Pay per event

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

## Health Canada Medical Device Licence Scraper

Extract official Health Canada medical device licence records from the public Medical Devices Active Licence Listing JSON API.

Use this actor to monitor licence status, device classes, company details, and official refresh dates without maintaining your own Health Canada API ingestion code.

### What does Health Canada Medical Device Licence Scraper do?

This actor downloads and normalizes public Canadian medical device licence records.

It reads the official Health Canada API, filters records locally, joins company details when requested, and saves clean dataset rows for export.

Typical records include licence number, status code, risk class, licence name, company name, company address, licence type, status dates, refresh date, and source metadata.

### Who is it for?

Regulatory affairs teams use it to track active licences for devices sold in Canada.

Importers and distributors use it to verify supplier licence status before procurement or onboarding.

Compliance consultants use it to build repeatable client reports from official public data.

Market intelligence teams use it to monitor manufacturers, licence classes, and product-family coverage.

Healthcare procurement teams use it to check device families and company records against purchasing lists.

### Why use this actor?

Health Canada's source API is public but large and not shaped as a ready-to-use business export.

This actor gives you an Apify dataset with normalized fields, filters, scheduled runs, webhooks, and integrations.

You can run a focused licence lookup or a broad recurring export with the same input schema.

### Official data source

The actor uses Health Canada's public Medical Devices JSON API.

Licence endpoint: `https://health-products.canada.ca/api/medical-devices/licence/?lang=en&type=json`

Company endpoint: `https://health-products.canada.ca/api/medical-devices/company/?lang=en&type=json`

Device endpoint: `https://health-products.canada.ca/api/medical-devices/device/?lang=en&type=json`

No login, cookies, or browser automation are required.

### Data you can extract

| Field | Description |
|---|---|
| licenceNumber | Health Canada original licence number |
| licenceStatus | Official licence status code |
| riskClass | Canadian medical device risk class |
| licenceName | Licence or device-family name |
| licenceTypeDescription | Device family, single device, or other source type |
| firstLicenceStatusDate | First status date from Health Canada |
| lastRefreshDate | Source refresh date |
| endDate | End date when present |
| companyName | Joined licence holder/company name |
| companyAddress | Joined public company address |
| deviceTradeNames | Optional joined device trade names |
| sourceEndpoint | Source API URL used for the row |
| fetchedAt | Actor run timestamp |

### How much does it cost to scrape Health Canada medical device licences?

This actor uses pay-per-event pricing: a small run-start event plus a per-result event for each licence record saved to the dataset.

Current event prices are:

| Charge event | FREE tier | BRONZE tier | Notes |
|---|---:|---:|---|
| Run started | $0.005 per run | $0.005 per run | Charged once when the actor starts |
| Licence record extracted | about $0.0000247 per item | about $0.0000214 per item | Higher Apify tiers receive lower per-item prices |

Example estimates before Apify platform usage costs:

| Run size | FREE estimate | BRONZE estimate | Typical use case |
|---|---:|---:|---|
| 100 licence rows | about $0.0075 | about $0.0071 | First test or focused lookup |
| 1,000 licence rows | about $0.0297 | about $0.0264 | Company or class monitoring export |
| 10,000 licence rows | about $0.2516 | about $0.2194 | Broad regulatory dataset refresh |

Use `maxItems` to keep test runs small. On the Apify Free plan, start with `maxItems: 100` and one company, device, class, or status filter so your first run stays inexpensive and easy to inspect.

For scheduled monitoring, filter by company, licence number, device keyword, class, or status to avoid exporting more rows than needed.

### Quick start

1. Open the actor on Apify.
2. Keep the default English source language.
3. Choose a small `maxItems` value for your first test.
4. Add a device keyword such as `sterilizer` or a company keyword such as `medtronic`.
5. Run the actor.
6. Download the dataset as JSON, CSV, Excel, or connect it to your workflow.

### Input options

`language` controls English or French source responses.

`maxItems` limits saved licence rows.

`licenceNumbers` targets exact official licence numbers.

`deviceNameKeywords` filters licence names and optional trade names.

`companyNameKeywords` filters joined company names.

`licenceStatuses` filters exact status codes such as `O`.

`riskClasses` filters device classes 1, 2, 3, and 4.

`licenceTypeCodes` filters official licence type codes.

`includeCompanyDetails` joins company address and status fields.

`includeDeviceTradeNames` joins the larger public device endpoint for trade names and device IDs.

### Example input

```json
{
  "maxItems": 100,
  "deviceNameKeywords": ["sterilizer"],
  "licenceStatuses": ["O"],
  "includeCompanyDetails": true,
  "includeDeviceTradeNames": false
}
````

### Example output

```json
{
  "licenceNumber": 8203,
  "licenceStatus": "O",
  "riskClass": 2,
  "licenceName": "STERIS AMSCO CENTURY SERIES SMALL STERILIZERS",
  "licenceTypeDescription": "Device Family",
  "companyName": "STERIS MEXICO, S. DE R.L. DE C.V.",
  "companyCountryCode": "MX",
  "lastRefreshDate": "2026-06-26",
  "sourceLanguage": "en"
}
```

### Filtering tips

Use `licenceNumbers` for precise verification workflows.

Use `companyNameKeywords` when monitoring a manufacturer or distributor.

Use `deviceNameKeywords` for product-family research.

Enable `includeDeviceTradeNames` only when you need device-level names; it downloads a larger source endpoint.

Keep `licenceStatuses` set to `O` when you only need currently open/active records.

### Scheduling and monitoring

Run the actor daily or weekly on Apify schedules.

Export datasets to your warehouse or spreadsheet after every run.

Use Apify webhooks to alert your compliance team when a scheduled run finishes.

Compare current exports with previous datasets to detect licence status, class, or company changes.

### Integrations

Send results to Google Sheets for compliance review queues.

Push datasets to BigQuery, Snowflake, or PostgreSQL for regulated-data dashboards.

Trigger Slack or email notifications through Apify webhooks.

Use Make, Zapier, or n8n to enrich supplier onboarding workflows.

Combine this actor with your vendor master data to identify missing or expired licence references.

### 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/health-canada-medical-device-licence-scraper').call({
  maxItems: 100,
  companyNameKeywords: ['medtronic'],
  licenceStatuses: ['O']
});
console.log(run.defaultDatasetId);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/health-canada-medical-device-licence-scraper').call(run_input={
    'maxItems': 100,
    'riskClasses': [3, 4],
    'licenceStatuses': ['O'],
})
print(run['defaultDatasetId'])
```

### API usage with cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~health-canada-medical-device-licence-scraper/runs?token=MY-APIFY-TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"maxItems":100,"deviceNameKeywords":["sterilizer"],"licenceStatuses":["O"]}'
```

### MCP usage

Use this actor through Apify MCP from Claude Code, Claude Desktop, Cursor, or VS Code-compatible MCP clients.

MCP URL:

`https://mcp.apify.com/?tools=automation-lab/health-canada-medical-device-licence-scraper`

Claude Code setup using HTTP transport:

```bash
claude mcp add apify-health-canada-devices --transport http "https://mcp.apify.com/?tools=automation-lab/health-canada-medical-device-licence-scraper"
```

Claude Desktop setup: open settings, add a custom MCP server, choose HTTP/remote URL transport, and paste the Apify MCP URL above. If you edit the JSON config directly, use:

```json
{
  "mcpServers": {
    "apify-health-canada-devices": {
      "url": "https://mcp.apify.com/?tools=automation-lab/health-canada-medical-device-licence-scraper"
    }
  }
}
```

Cursor setup: open Cursor Settings → MCP, add a new server, select HTTP transport, name it `apify-health-canada-devices`, and use the same MCP URL.

VS Code setup: install an MCP-capable extension such as the official MCP/agent extension you use, add a remote HTTP server, and configure the Apify MCP URL as the server endpoint.

Example prompts:

- Run the Health Canada medical device licence scraper for active sterilizer licences.
- Export active class 3 and 4 medical device licences for Medtronic.
- Check whether licence numbers 10181 and 35494 are still present in the Health Canada listing.

### Quality and freshness

The source dataset includes `lastRefreshDate` from Health Canada.

The actor adds `fetchedAt` so you can audit exactly when your export was produced.

Source fields are normalized but not reinterpreted; status codes and class values remain official source values.

### Limitations

The actor depends on Health Canada's public API availability.

The source API does not appear to provide server-side filtering for all fields, so the actor downloads source datasets and filters locally.

Company joins require the company endpoint.

Device trade-name joins require a larger device endpoint and can take longer.

### Legality

### Legal and ethical use

The actor collects public government regulatory data.

Always use the data according to Health Canada's terms, your organization's compliance rules, and applicable laws.

Do not treat scraped data as legal advice.

For regulatory decisions, verify critical records against the official Health Canada website.

### Troubleshooting

If you receive zero items, broaden your filters or remove company/device keywords.

If a run takes longer than expected, disable `includeDeviceTradeNames` unless you need trade-name joins.

If company fields are empty, enable `includeCompanyDetails`.

If you need French source labels where available, set `language` to `fr`.

### FAQ

#### Is this official Health Canada data?

Yes. The actor extracts records from Health Canada's public JSON API and preserves source dates and status codes.

#### Can I monitor only active licences?

Yes. Set `licenceStatuses` to `["O"]` and schedule recurring runs.

#### Why are device trade names optional?

The device endpoint is much larger than the licence endpoint, so the actor only joins trade names when you enable `includeDeviceTradeNames` or filter by device keyword.

### Related scrapers

Health Canada Drug Database Scraper: `https://apify.com/automation-lab/health-canada-drug-database-scraper`

Use both actors together to monitor Canadian regulated health-product data across drugs and medical devices.

### Changelog

Initial version extracts official Health Canada medical device active licence records with company joins, filters, and normalized dataset output.

### Support

If you need a new field from another Health Canada medical-device endpoint, open an Apify issue with the endpoint and an example record.

We can extend the actor when the field is public and stable.

### Dataset export formats

Apify lets you download the dataset as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.

CSV and Excel are convenient for compliance analysts.

JSONL is useful for warehouses and automated diffing pipelines.

### Recommended first run

Start with `maxItems` set to 100.

Use `licenceStatuses: ["O"]` for active/open records.

Add one company or device keyword.

Review the dataset fields.

Then increase `maxItems` or remove filters for broader monitoring.

# Actor input Schema

## `language` (type: `string`):

Language for Health Canada API responses and official source metadata.

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

Maximum number of matching medical device licence records to save.

## `includeCompanyDetails` (type: `boolean`):

Join company name, address, status, city, region, country, and postal code from the Health Canada company endpoint.

## `includeDeviceTradeNames` (type: `boolean`):

Join matching device trade names and device IDs. This fetches the larger public device endpoint and is useful for device-level searches.

## `licenceNumbers` (type: `array`):

Optional exact original licence numbers to extract, for example 10181 or 35494.

## `deviceNameKeywords` (type: `array`):

Optional case-insensitive keywords matched against licence names and, when enabled, device trade names.

## `companyNameKeywords` (type: `array`):

Optional case-insensitive company-name substrings, for example STERIS or MEDTRONIC.

## `licenceStatuses` (type: `array`):

Optional exact licence status codes from Health Canada, such as O for active/open licences.

## `riskClasses` (type: `array`):

Optional Canadian medical device risk classes to include (1, 2, 3, or 4).

## `licenceTypeCodes` (type: `array`):

Optional exact Health Canada licence type codes, such as F for Device Family or S for Single Device.

## Actor input object example

```json
{
  "language": "en",
  "maxItems": 20,
  "includeCompanyDetails": true,
  "includeDeviceTradeNames": false,
  "licenceNumbers": [],
  "deviceNameKeywords": [],
  "companyNameKeywords": [],
  "licenceStatuses": [
    "O"
  ],
  "riskClasses": [],
  "licenceTypeCodes": []
}
```

# 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 = {
    "language": "en",
    "maxItems": 20,
    "includeCompanyDetails": true,
    "includeDeviceTradeNames": false,
    "licenceNumbers": [],
    "deviceNameKeywords": [],
    "companyNameKeywords": [],
    "licenceStatuses": [
        "O"
    ],
    "riskClasses": [],
    "licenceTypeCodes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/health-canada-medical-device-licence-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 = {
    "language": "en",
    "maxItems": 20,
    "includeCompanyDetails": True,
    "includeDeviceTradeNames": False,
    "licenceNumbers": [],
    "deviceNameKeywords": [],
    "companyNameKeywords": [],
    "licenceStatuses": ["O"],
    "riskClasses": [],
    "licenceTypeCodes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/health-canada-medical-device-licence-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 '{
  "language": "en",
  "maxItems": 20,
  "includeCompanyDetails": true,
  "includeDeviceTradeNames": false,
  "licenceNumbers": [],
  "deviceNameKeywords": [],
  "companyNameKeywords": [],
  "licenceStatuses": [
    "O"
  ],
  "riskClasses": [],
  "licenceTypeCodes": []
}' |
apify call automation-lab/health-canada-medical-device-licence-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/health-canada-medical-device-licence-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Health Canada Medical Device Licence Scraper",
        "description": "Extract official Health Canada medical device licence records with status, class, company, dates, and source metadata for compliance workflows.",
        "version": "0.1",
        "x-build-id": "FLEoJplhAhwEhWgIC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~health-canada-medical-device-licence-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-health-canada-medical-device-licence-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~health-canada-medical-device-licence-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-health-canada-medical-device-licence-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~health-canada-medical-device-licence-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-health-canada-medical-device-licence-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": {
                    "language": {
                        "title": "API language",
                        "enum": [
                            "en",
                            "fr"
                        ],
                        "type": "string",
                        "description": "Language for Health Canada API responses and official source metadata.",
                        "default": "en"
                    },
                    "maxItems": {
                        "title": "Maximum licences",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of matching medical device licence records to save.",
                        "default": 20
                    },
                    "includeCompanyDetails": {
                        "title": "Join company details",
                        "type": "boolean",
                        "description": "Join company name, address, status, city, region, country, and postal code from the Health Canada company endpoint.",
                        "default": true
                    },
                    "includeDeviceTradeNames": {
                        "title": "Join device trade names",
                        "type": "boolean",
                        "description": "Join matching device trade names and device IDs. This fetches the larger public device endpoint and is useful for device-level searches.",
                        "default": false
                    },
                    "licenceNumbers": {
                        "title": "Licence numbers",
                        "type": "array",
                        "description": "Optional exact original licence numbers to extract, for example 10181 or 35494.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "deviceNameKeywords": {
                        "title": "Device or licence name contains",
                        "type": "array",
                        "description": "Optional case-insensitive keywords matched against licence names and, when enabled, device trade names.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyNameKeywords": {
                        "title": "Company name contains",
                        "type": "array",
                        "description": "Optional case-insensitive company-name substrings, for example STERIS or MEDTRONIC.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "licenceStatuses": {
                        "title": "Licence status codes",
                        "type": "array",
                        "description": "Optional exact licence status codes from Health Canada, such as O for active/open licences.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "riskClasses": {
                        "title": "Medical device risk classes",
                        "type": "array",
                        "description": "Optional Canadian medical device risk classes to include (1, 2, 3, or 4).",
                        "items": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 4
                        }
                    },
                    "licenceTypeCodes": {
                        "title": "Licence type codes",
                        "type": "array",
                        "description": "Optional exact Health Canada licence type codes, such as F for Device Family or S for Single Device.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
