# NPI Healthcare Provider Scraper (NPPES) (`devilscrapes/npi-healthcare-provider-scraper`) Actor

Bulk-query the official CMS NPPES NPI Registry and export structured US healthcare provider leads — doctors, dentists, specialists — to JSON or CSV. Filter by state, city, specialty, and name. 7 M+ providers covered.

- **URL**: https://apify.com/devilscrapes/npi-healthcare-provider-scraper.md
- **Developed by:** [DevilScrapes](https://apify.com/devilscrapes) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## 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

<div align="center">
  <img src=".actor/icon.svg" width="160" alt="Devil Scrapes mark" />

## NPI Healthcare Provider Scraper (NPPES)

**$2.00 / 1 000 results** &nbsp;·&nbsp; pay only for results &nbsp;·&nbsp; no credit card to try

_We do the dirty work so your dataset stays clean._ 😈

Turn the US federal NPI registry into a structured lead list. Query by state, specialty, city, or provider name — and get back clean, Pydantic-validated rows with contact details, licence numbers, and taxonomy codes for every matching provider. More than 7 million individual and organisational providers on record.

</div>

---

### 🎯 What this scrapes

The NPPES NPI Registry is the authoritative federal directory of every healthcare provider in the United States. Every active physician, dentist, chiropractor, nurse practitioner, hospital, and medical group is listed here — complete with verified location address, telephone number, fax, speciality taxonomy, licence number, and enumeration status.

The registry's own API is publicly accessible, but turning it into a reliable bulk export takes real engineering: paginating past NPPES's 200-record-per-request ceiling, normalising the nested taxonomy and address objects, handling partial-result pages near the 1 200-result query cap, and coercing dates and flags into consistent types. We handle all of that and hand you back one richly-typed row per provider.

Feed it a state + specialty combination and you have a targeted lead list in minutes. Pharma field reps, dental-supply sales teams, and healthcare-data vendors have been paying $50 per thousand records from SaaS list brokers for data that the federal government publishes for free. This Actor fetches it directly and undercuts the going rate by roughly 96 %.

### 🔥 What we handle for you

- 🔁 **Automatic pagination** — the NPPES API returns at most 200 records per request. We page through all available results (up to ~1 200 per query combination) and merge them transparently.
- 🧱 **Rate-limit-aware backoff** — when the CMS endpoint pushes back we slow down, honour `Retry-After` headers, and retry up to 5 times with exponential backoff before surfacing an error.
- 🧊 **Pydantic-validated rows** — every field is typed at write time. Booleans are booleans. Dates arrive as ISO-8601 strings. Taxonomy codes, licence numbers, and address fields are normalised across individual and organisational providers.
- 🌐 **Proxy-ready** — the NPPES API is a public federal endpoint and direct routing works on most infrastructure. The proxy configuration field is there when you need it.
- 💰 **Pay-Per-Event pricing** — you pay only for records that land in your dataset. No data, no charge beyond the small run warm-up fee.
- 📦 **Export in any format** — Apify Console exports the dataset as JSON, CSV, or Excel with one click. Pull via API for automated pipelines.

### 💡 Use cases

- **Pharma / medical-device field rep territory lists** — pull every GP or specialist in a sales territory by state + taxonomy and load into your CRM.
- **Dental-supply prospecting** — filter by `dentist` taxonomy and state for a fresh dentist contact list at a fraction of the cost of a list broker.
- **Healthcare-data vendor pipelines** — bulk-export the registry by specialty and resell structured datasets to compliance, billing, or referral-network products.
- **Credentialing verification** — cross-reference provider NPI numbers, licence states, and taxonomy codes for onboarding workflows.
- **Insurance network gap analysis** — identify active providers in a region and compare against your network panel.
- **Academic and policy research** — map provider density and specialty distribution by state or ZIP.

### ⚙️ How to use it

1. Click **Try for free** — no credit card required.
2. Set at least one search filter: **state**, **specialty**, **city**, or **provider name**.
3. Optionally set **enumerationType** to restrict to individuals (NPI-1) or organisations (NPI-2).
4. Set **maxItems** — 200 is the default; the NPPES query cap is ~1 200 per combination.
5. Click **Start**. Results stream into the dataset in real time.
6. Export from **Storage → Dataset** as JSON, CSV, or Excel.

### 📥 Input

| Field | Type | Required | Default | Notes |
|---|---|:--:|---|---|
| `state` | `string` | one of | — | 2-letter state code (CA, NY, TX …). Filters by address state. |
| `city` | `string` | one of | — | City name within the chosen state. |
| `postalCode` | `string` | one of | — | 5-digit ZIP code. |
| `taxonomyDescription` | `string` | one of | — | Specialty keyword: `dentist`, `chiropractor`, `internal medicine`, etc. |
| `enumerationType` | `string` | no | `both` | `NPI-1` (individual), `NPI-2` (organisation), or `both`. |
| `firstName` | `string` | one of | — | Filter by provider first name (individuals). |
| `lastName` | `string` | one of | — | Filter by provider last name (individuals). |
| `organizationName` | `string` | one of | — | Filter by practice or organisation name. |
| `maxItems` | `integer` | no | `200` | Max records to return (1–1200). NPPES hard-caps a single query at ~1 200. |
| `proxyConfiguration` | `object` | no | `{"useApifyProxy": false}` | Apify Proxy settings. Direct routing works for NPPES on most infrastructure. |

At least one "one of" field is required to avoid returning the entire registry.

#### Example input

```json
{
  "state": "CA",
  "taxonomyDescription": "dentist",
  "enumerationType": "NPI-1",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

### 📤 Output

Every row is one NPI registry provider record.

| Field | Type | Notes |
|---|---|---|
| `npi` | `string` | 10-digit National Provider Identifier. |
| `enumeration_type` | `string` | `NPI-1` (individual) or `NPI-2` (organisation). |
| `name` | `string` | Provider display name — org name or "First Last" for individuals. |
| `credential` | `string \| null` | Credential suffix (MD, DDS, DO, RN …). |
| `status` | `string \| null` | `Active` or `Inactive`. |
| `primary_taxonomy` | `string \| null` | NUCC taxonomy code for the primary speciality. |
| `specialty` | `string \| null` | Human-readable taxonomy description. |
| `license` | `string \| null` | State licence number for the primary taxonomy. |
| `license_state` | `string \| null` | State that issued the licence. |
| `address_line1` | `string \| null` | Street address (LOCATION purpose). |
| `city` | `string \| null` | City. |
| `state` | `string \| null` | 2-letter state code. |
| `postal_code` | `string \| null` | ZIP code. |
| `country` | `string \| null` | Country code (usually US). |
| `phone` | `string \| null` | Office phone number. |
| `fax` | `string \| null` | Office fax number. |
| `sole_proprietor` | `boolean \| null` | True if enumerated as a sole proprietor. |
| `gender` | `string \| null` | Provider gender (individual providers only). |
| `enumeration_date` | `string \| null` | Date the NPI was first assigned (ISO-8601). |
| `last_updated` | `string \| null` | Date the record was last updated in NPPES (ISO-8601). |
| `scraped_at` | `string \| null` | When this row was recorded (ISO-8601 UTC). |

#### Example output

```json
{
  "npi": "1234567890",
  "enumeration_type": "NPI-1",
  "name": "Jane Smith",
  "credential": "DDS",
  "status": "Active",
  "primary_taxonomy": "122300000X",
  "specialty": "Dentist",
  "license": "CA12345",
  "license_state": "CA",
  "address_line1": "123 Main St",
  "city": "Los Angeles",
  "state": "CA",
  "postal_code": "90001",
  "country": "US",
  "phone": "310-555-0100",
  "fax": "310-555-0101",
  "sole_proprietor": true,
  "gender": "F",
  "enumeration_date": "2010-03-15",
  "last_updated": "2024-11-01",
  "scraped_at": "2026-06-07T10:00:00+00:00"
}
```

### 💰 Pricing

Pay-Per-Event — you only pay when these events fire:

| Event | USD | What triggers it |
|---|---:|---|
| `actor-start` | $0.005 | One-off warm-up charge per run |
| `result` | $0.002 | Per provider record written to the dataset |

Example: 1 000 provider records at the rates above = **$2.00**. No subscription, no minimum, no card required to start — Apify gives every new account $5 of free credit.

### 🚧 Limitations

- **NPPES query cap** — the registry limits skip to 1 000, so any single state + specialty combination returns at most ~1 200 records. For large specialties (e.g. all physicians in California) you will need to paginate by city or ZIP code range across multiple runs.
- **No email addresses** — NPPES does not publish provider email addresses. Phone and fax are included; email is not part of the public registry.
- **US providers only** — the NPPES registry covers US-based or US-licensed providers. International providers are out of scope.
- **Data freshness** — NPPES records reflect CMS update cycles. Providers who recently enrolled or updated their information may appear with a short delay. The `last_updated` field indicates the record's freshness.
- **Deactivated NPIs** — by default the API returns both active and inactive providers. Filter by `status == "Active"` post-export if you only want active practitioners.

### ❓ FAQ

**Is this data public and legal to use?**

Yes. The NPPES NPI Registry is a public federal dataset maintained by CMS (Centers for Medicare & Medicaid Services). It is published under a public domain licence with no restrictions on use. This Actor queries the public API endpoint documented at npiregistry.cms.hhs.gov.

**Why can't I get all dentists in California in one run?**

NPPES limits individual API queries to 200 records per page and caps the skip offset at 1 000, which means any single query combination is bounded at approximately 1 200 results. California alone has tens of thousands of active dentists. To get them all, segment by city or ZIP code range and run multiple Actor jobs, then merge the datasets.

**What is the difference between NPI-1 and NPI-2?**

NPI-1 (Individual) is assigned to licensed healthcare practitioners — physicians, dentists, nurses, physical therapists, and so on. NPI-2 (Organisational) is assigned to provider organisations — hospitals, group practices, dental chains, and labs. Set `enumerationType` to target one type or leave it as `both` to return all.

**How current is the data?**

The NPPES registry is updated continuously as providers enrol, update, or deactivate. The `last_updated` field on each row tells you when CMS last touched that record. For most use cases the data is current within days.

**Can I get email addresses?**

NPPES does not publish email addresses. If you need emails you will need to enrich the NPI data with a separate email-finder tool after export.

**What is the NPI taxonomy code?**

The NUCC Health Care Provider Taxonomy code identifies a provider's speciality (e.g. `122300000X` = Dentist). Each NPI record may have multiple taxonomy codes; this Actor surfaces the one marked `primary`. Full NUCC taxonomy reference: nucc.org.

### 💬 Your feedback

Spotted a bug, need a new filter, or want ZIP-code-range pagination built in? Open an issue on the **Issues** tab in Apify Console — we read every report and ship fixes weekly.

***

<div align="center">

Built by **[Devil Scrapes](https://apify.com/DevilScrapes)** 😈 — a small fleet of
opinionated public-data Actors. Honest pricing, real engineering, zero fine print.

</div>

# Actor input Schema

## `state` (type: `string`):

Two-letter US state abbreviation (e.g. <code>CA</code>, <code>NY</code>, <code>TX</code>). Filters provider addresses by state.

## `city` (type: `string`):

City name to narrow results within the chosen state (e.g. <code>Los Angeles</code>).

## `postalCode` (type: `string`):

5-digit US ZIP code to narrow results to a specific area (e.g. <code>90210</code>).

## `taxonomyDescription` (type: `string`):

Provider specialty keyword matched against NUCC taxonomy descriptions — e.g. <code>dentist</code>, <code>chiropractor</code>, <code>internal medicine</code>, <code>nurse practitioner</code>.

## `enumerationType` (type: `string`):

NPI-1 = individual providers; NPI-2 = organisations; both = no filter applied.

## `firstName` (type: `string`):

Filter by provider first name. Only relevant when enumerationType is NPI-1 or both.

## `lastName` (type: `string`):

Filter by provider last name. Only relevant when enumerationType is NPI-1 or both.

## `organizationName` (type: `string`):

Filter by organisation / practice name. Only relevant when enumerationType is NPI-2 or both.

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

Maximum number of provider records to return. NPPES caps any single query at ~1 200 results (limit 200 × 6 pages). Set lower for quick tests.

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

Apify Proxy settings. The NPPES API is a public CMS endpoint; direct routing is fine for most runs. Enable proxy if your network or the API enforces stricter rate limits.

## Actor input object example

```json
{
  "state": "CA",
  "taxonomyDescription": "dentist",
  "enumerationType": "both",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Full set of scraped provider records — one item per NPI. Streamed JSON via the Apify dataset API.

## `datasetItemsCsv` (type: `string`):

Same data, CSV export. Drop straight into a spreadsheet or CRM loader.

## `datasetView` (type: `string`):

Open the run's dataset in the Console with the Overview view applied.

# 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 = {
    "state": "CA",
    "taxonomyDescription": "dentist",
    "enumerationType": "both",
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("devilscrapes/npi-healthcare-provider-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 = {
    "state": "CA",
    "taxonomyDescription": "dentist",
    "enumerationType": "both",
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("devilscrapes/npi-healthcare-provider-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 '{
  "state": "CA",
  "taxonomyDescription": "dentist",
  "enumerationType": "both",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call devilscrapes/npi-healthcare-provider-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NPI Healthcare Provider Scraper (NPPES)",
        "description": "Bulk-query the official CMS NPPES NPI Registry and export structured US healthcare provider leads — doctors, dentists, specialists — to JSON or CSV. Filter by state, city, specialty, and name. 7 M+ providers covered.",
        "version": "0.1",
        "x-build-id": "XAWVMdVRsqvQ8Y0GN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/devilscrapes~npi-healthcare-provider-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-devilscrapes-npi-healthcare-provider-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/devilscrapes~npi-healthcare-provider-scraper/runs": {
            "post": {
                "operationId": "runs-sync-devilscrapes-npi-healthcare-provider-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/devilscrapes~npi-healthcare-provider-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-devilscrapes-npi-healthcare-provider-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": {
                    "state": {
                        "title": "State (2-letter code)",
                        "type": "string",
                        "description": "Two-letter US state abbreviation (e.g. <code>CA</code>, <code>NY</code>, <code>TX</code>). Filters provider addresses by state."
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "City name to narrow results within the chosen state (e.g. <code>Los Angeles</code>)."
                    },
                    "postalCode": {
                        "title": "Postal code (ZIP)",
                        "type": "string",
                        "description": "5-digit US ZIP code to narrow results to a specific area (e.g. <code>90210</code>)."
                    },
                    "taxonomyDescription": {
                        "title": "Specialty / taxonomy description",
                        "type": "string",
                        "description": "Provider specialty keyword matched against NUCC taxonomy descriptions — e.g. <code>dentist</code>, <code>chiropractor</code>, <code>internal medicine</code>, <code>nurse practitioner</code>."
                    },
                    "enumerationType": {
                        "title": "Enumeration type",
                        "enum": [
                            "NPI-1",
                            "NPI-2",
                            "both"
                        ],
                        "type": "string",
                        "description": "NPI-1 = individual providers; NPI-2 = organisations; both = no filter applied.",
                        "default": "both"
                    },
                    "firstName": {
                        "title": "First name (individual providers)",
                        "type": "string",
                        "description": "Filter by provider first name. Only relevant when enumerationType is NPI-1 or both."
                    },
                    "lastName": {
                        "title": "Last name (individual providers)",
                        "type": "string",
                        "description": "Filter by provider last name. Only relevant when enumerationType is NPI-1 or both."
                    },
                    "organizationName": {
                        "title": "Organisation name",
                        "type": "string",
                        "description": "Filter by organisation / practice name. Only relevant when enumerationType is NPI-2 or both."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1200,
                        "type": "integer",
                        "description": "Maximum number of provider records to return. NPPES caps any single query at ~1 200 results (limit 200 × 6 pages). Set lower for quick tests.",
                        "default": 200
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. The NPPES API is a public CMS endpoint; direct routing is fine for most runs. Enable proxy if your network or the API enforces stricter rate limits.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
