# Orthodontist Email Scraper (`contacts-api/orthodontist-email-scraper`) Actor

Orthodontist email scraper to extract verified orthodontist emails from dental practices, orthodontic clinics, healthcare websites, and professional directories 📧🦷 Perfect for dental outreach, recruitment, and orthodontic industry lead generation.

- **URL**: https://apify.com/contacts-api/orthodontist-email-scraper.md
- **Developed by:** [Lead Heaven](https://apify.com/contacts-api) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🦷 Orthodontist Email Scraper — Find Verified Leads in Minutes

> The fastest way to build a targeted orthodontist list. This actor searches Google Maps for orthodontic practices in your target cities, crawls their websites, and extracts verified orthodontist email contacts, phone numbers, and social media links — all in one clean, export-ready dataset to drive orthodontist leads.

---

#### 🚀 Quick Start

1. Enter your search term — e.g., "Orthodontist"
2. Add one or more target locations — e.g., "New York", "Austin, Texas"
3. Set your desired number of businesses with emails
4. Hit Run and get your results in minutes

No coding required. Export to CSV, JSON, or Excel instantly.

---

#### 💡 What Is The Orthodontist Email Scraper?

The Orthodontist Email Scraper is a purpose-built lead generation and contact discovery tool for:

- Dental and orthodontic marketing teams
- Growth agencies and B2B outreach professionals
- Sales reps prospecting local healthcare providers
- Researchers and operations teams

It combines Google Maps listing discovery with deep website crawling to extract publicly available contact data — producing an accurate, deduplicated list of orthodontic practices with emails and phones. Whether you need an orthodontist email finder for enrichment, an orthodontist lead finder for pipeline building, or an orthodontist contact finder to expand your CRM, this actor does it in a single automated run. It also functions as a lightweight orthodontist email extractor when you want targeted email capture from practice websites.

---

#### 📦 What Data Does It Extract?

| Field | Description |
|---|---|
| Business Name | Practice or company name from Google Maps |
| Website | Official website URL when available |
| Phone | Primary phone from the listing or website |
| Full Address | Complete address as listed |
| City / State / ZIP | Parsed location components |
| Country Code | ISO country code where available |
| Emails | All public emails discovered via crawl |
| Additional Phones | Extra phone numbers discovered during crawl |
| Social Media Links | Facebook, Instagram, LinkedIn, Twitter/X, etc. |
| Email Count | Total unique emails found per business |
| Pages Scraped | Number of pages visited per domain |
| Rating | Average Google Maps star rating |
| Reviews | Total number of Google reviews |
| Latitude / Longitude | Geo-coordinates for mapping and filtering |
| Place ID | Google Maps place identifier |
| Scrape Status | Per-record status: success, partial, or error |

The actor crawls high-signal pages (home, contact, about, footer) to surface orthodontist email contacts and unify them with listing data — ideal for clean exports and automation.

---

#### ⚙️ Input Configuration

##### Minimal Example

```json
{
  "googleMapsSearchTerm": "Orthodontist",
  "googleMapsLocation": ["New York"],
  "maxBusinesses": 50
}
````

##### Full Example with All Options

```json
{
  "googleMapsSearchTerm": "Orthodontist",
  "googleMapsLocation": [
    "New York",
    "Boston, Massachusetts",
    "Philadelphia, Pennsylvania"
  ],
  "maxBusinesses": 200,
  "scrapeMaxBusinessesPerLocation": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

##### Input Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `googleMapsSearchTerm` | String | ✅ Yes | Business type to search — e.g., "Orthodontist", "braces specialist" |
| `googleMapsLocation` | Array | ✅ Yes | One or more locations — e.g., \["New York", "Austin, Texas"] |
| `maxBusinesses` | Number | ✅ Yes | Maximum businesses with emails to return (1–1,000). The run stops at this target |
| `scrapeMaxBusinessesPerLocation` | Boolean | ❌ No | If true, applies the cap per location. If false, uses a combined total across all locations |
| `proxyConfiguration` | Object | ❌ No | Proxy settings. Strongly recommended for large and multi-location runs |

***

#### 📤 Sample Output

```json
[
  {
    "name": "SmileLine Orthodontics",
    "website": "https://www.smilelineortho.com",
    "phone": "+1 212-555-0142",
    "full_address": "250 W 57th St, New York, NY 10107, United States",
    "city": "New York",
    "state": "NY",
    "zip": "10107",
    "country_code": "US",
    "scraped_emails": [
      "info@smilelineortho.com",
      "appointments@smilelineortho.com"
    ],
    "scraped_phones": ["+1 212-555-0142", "+1 212-555-0198"],
    "scraped_social_media": [
      "facebook:https://facebook.com/smilelineortho",
      "instagram:https://instagram.com/smilelineortho",
      "linkedin:https://www.linkedin.com/company/smileline-orthodontics"
    ],
    "emails_found": 2,
    "pages_scraped": 12,
    "avg_rating": 4.7,
    "total_reviews": 203,
    "lat": 40.7651,
    "long": -73.9801,
    "place_id": "ChIJxEXAMPLEID",
    "scrape_status": "success"
  }
]
```

***

#### 🔧 How It Works — Under The Hood

```
Step 1 → Search Google Maps using your term + location
Step 2 → Collect practice listings (name, address, phone, website)
Step 3 → Visit each website and crawl key pages (Home, Contact, About, footer)
Step 4 → Extract public emails, phone numbers, and social media links
Step 5 → Deduplicate and normalize all contact data
Step 6 → Return structured results ready for export or API consumption
```

This actor serves as both an orthodontist email scraper for discovery-to-extraction and a scalable orthodontist lead scraper for ongoing prospecting.

***

#### ✨ Key Features

##### 🎯 Precise Location Targeting

Target any city, state, or region. The actor pinpoints local practices and delivers high-intent orthodontist leads for your chosen geographies.

##### 🔍 Deep Website Crawl

Goes beyond listings. Crawls top pages and footer sections to surface every publicly available orthodontist email and phone number, functioning as a reliable orthodontist email extractor at scale.

##### 🌎 Multi-Location Scaling

Run across dozens of cities in one go. Choose a combined cap or per-location cap — perfect for building a wide-reaching orthodontist list without manual effort.

##### 🧹 Smart De-Duplication

Automatically removes duplicate emails per domain and normalizes contact fields so your exports are clean from the start.

##### 📊 Structured, CRM-Ready Output

All results ship in a consistent schema that’s easy to import into HubSpot, Salesforce, Apollo, Instantly, or custom pipelines — a streamlined workflow for any orthodontist data scraper use case.

##### 🛡️ Proxy-Ready for Reliability

Built-in proxy support helps avoid rate-limiting and blocks, keeping your orthodontist lead scraper stable on large and frequent runs.

##### ⏱️ Stop At Your Target

Set `maxBusinesses` and the actor halts as soon as your target count of businesses with emails is reached — saving time and compute.

##### 🔄 Schedulable & Repeatable

Use Apify’s scheduler to run daily, weekly, or monthly and maintain a fresh pipeline — excellent for teams using an orthodontist lead finder for ongoing demand generation.

##### 🔗 Contact Enrichment From Websites

Unify listing data with website crawl results to enhance emails, phones, and social profiles — an end-to-end orthodontist contact scraper for enrichment.

***

#### 🎯 Use Cases

##### 💼 B2B Outreach & Sales

Feed cold email or call campaigns with verified contacts. Use the orthodontist lead scraper to automate prospecting and prioritize practices with websites and ratings.

##### 🧑‍⚕️ Staffing & Recruiting

Locate practices and office managers quickly. Tap the orthodontist contact finder to source direct contact points for hiring outreach.

##### 📣 Local & Regional Marketing

Create geo-targeted campaigns with accurate emails and phones pulled from practice websites, powered by a dependable orthodontist contact scraper.

##### 🤝 Partnership & Referral Development

Find complementary dental providers for referral partnerships and community events with clean contact data and website links.

##### 📚 Market Research & Benchmarking

Compile datasets for analysis, surveys, and competitive mapping — a practical use of an orthodontist data scraper for insights.

##### 🏢 Agency Client Delivery

Run repeatable weekly scrapes and deliver fresh pipelines for clients, pairing exports with a trusted orthodontist email finder to keep CRMs updated.

##### 🗃️ CRM Enrichment

Fill missing fields like secondary phones and social profiles, and verify domains before sequencing.

***

#### 📈 How Many Results Can You Get?

Scale from small prospecting lists to multi-region datasets — results depend on:

- Number of locations added
- Breadth of your search term
- Website density and email visibility in each market
- `maxBusinesses` and per-location vs. combined mode
- Proxy configuration and run timeouts

##### Typical Output Ranges

| Campaign Size | Businesses with Emails |
|---|---|
| Small (1–3 cities) | 20 – 100 |
| Medium (5–15 cities) | 200 – 600 |
| Large (20+ cities / states) | 800 – 1,000+ per run |

Run multiple campaigns across regions to continuously grow your orthodontist list while keeping results clean and deduplicated.

***

#### 🔌 Integrations & Export Options

Once your run completes, you can:

| Option | Details |
|---|---|
| JSON | Full structured data download |
| CSV / Excel | Import directly into spreadsheets |
| Apify API | Stream results into your apps or data pipelines |
| Zapier / Make | Trigger automations when new contacts are found |
| Webhooks | Push results to your CRM or data warehouse on completion |

Plug directly into Instantly, Smartlead, Apollo, HubSpot, Salesforce, or any platform that accepts CSV/JSON imports. Ideal for automating workflows that rely on a dependable orthodontist data scraper.

***

#### 🛠️ Step-By-Step Usage Guide

**Step 1 — Log in to Apify**
Create a free account or sign in at apify.com.

**Step 2 — Open the Actor**
Search for "Orthodontist Email Scraper" in the Apify Store and click Try for free.

**Step 3 — Set Your Search Term**
Enter "Orthodontist" or a niche variant like "braces specialist", "Invisalign orthodontist", or "pediatric orthodontist".

**Step 4 — Add Target Locations**
Enter one or more locations — e.g., "New York", "Los Angeles, California", "Miami, Florida".

**Step 5 — Set Your Limit**
Choose how many businesses with emails you want — 20 for a quick test, up to 1,000 for a full campaign.

**Step 6 — Choose Scaling Strategy**

- Combined cap: The total across all locations combined
- Per-location cap: Applies your limit independently to each location

**Step 7 — Enable Proxies**
Turn on Apify Proxy for stable, uninterrupted crawling at scale.

**Step 8 — Run 🚀**
Click Start and let the Orthodontist Email Scraper do the work.

**Step 9 — Export**
Download as JSON, CSV, or Excel — or pull via API straight into your stack.

***

#### ⚖️ Legal & Compliance

This actor collects only publicly available business contact information — emails and phone numbers published openly on websites.

Best practices to stay compliant:

- Only use publicly visible contact data
- Do not bypass login walls or paywalls
- Respect each website's robots.txt and Terms of Service
- Include an unsubscribe option in outreach
- Follow applicable laws in your jurisdiction

Relevant regulations to be aware of:

| Regulation | Region |
|---|---|
| GDPR | European Union |
| CAN-SPAM Act | United States |
| CASL | Canada |
| PECR | United Kingdom |

This tool is intended for ethical business prospecting only. You are responsible for how you use the data collected.

***

#### ❓ Frequently Asked Questions

**Q: Does this collect private or personal emails?**\
No. The actor only extracts emails that are publicly visible on business websites — practice inboxes, admin contacts, and general inquiry addresses.

**Q: Can I search multiple cities in one run?**\
Yes. Add as many locations as needed and choose a combined cap or per-location cap.

**Q: Does it deduplicate results?**\
Yes. Emails are deduplicated per domain for clean exports and accurate counts.

**Q: Can I schedule recurring runs?**\
Absolutely. Use Apify’s built-in scheduler to run weekly or monthly and keep your pipeline fresh.

**Q: What niches does the search term support?**\
Any Google Maps searchable term — try "Orthodontist", "braces specialist", "Invisalign orthodontist", or "dental clinic".

**Q: Are proxies required?**\
Not for small tests, but strongly recommended for 200+ businesses or multi-location campaigns to avoid rate limits.

**Q: What export formats are available?**\
JSON, CSV, and Excel. You can also consume results via the Apify API or webhooks.

**Q: How is this different from manual Google searching?**\
Manual search is slow and inconsistent. This automates discovery and extraction end-to-end, ensuring repeatable results with normalized fields.

***

#### 🧑‍💻 Support & Custom Solutions

Have a question, feature request, or need a custom build?\
Email: scrapermindapi@gmail.com

We’re happy to help with:

- Custom input/output fields (e.g., additional social discovery)
- Niche-specific adaptations for your campaigns
- Bulk or enterprise run support with proxies and scheduling
- Integration assistance for CRMs and marketing tools

Need custom fields or advanced filtering added to the Orthodontist Email Scraper? We can tailor it to your workflow.

For any help or custom solution, contact via this mail: scrapermindapi@gmail.com

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

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

Proxy settings for scraping. Recommended for large-scale scraping.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Orthodontist",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "googleMapsSearchTerm": "Orthodontist",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("contacts-api/orthodontist-email-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 = {
    "googleMapsSearchTerm": "Orthodontist",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("contacts-api/orthodontist-email-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 '{
  "googleMapsSearchTerm": "Orthodontist",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call contacts-api/orthodontist-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Orthodontist Email Scraper",
        "description": "Orthodontist email scraper to extract verified orthodontist emails from dental practices, orthodontic clinics, healthcare websites, and professional directories 📧🦷 Perfect for dental outreach, recruitment, and orthodontic industry lead generation.",
        "version": "1.0",
        "x-build-id": "GqgxSJKQjasMTXP1L"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/contacts-api~orthodontist-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-contacts-api-orthodontist-email-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/contacts-api~orthodontist-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-contacts-api-orthodontist-email-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/contacts-api~orthodontist-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-contacts-api-orthodontist-email-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "googleMapsLocation",
                    "googleMapsSearchTerm"
                ],
                "properties": {
                    "googleMapsSearchTerm": {
                        "title": "Search Term",
                        "type": "string",
                        "description": "Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').",
                        "default": "Orthodontist"
                    },
                    "googleMapsLocation": {
                        "title": "Location",
                        "type": "array",
                        "description": "Target geographic location for the email scraper (e.g., 'Miami, Florida').",
                        "default": [
                            "New York"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxBusinesses": {
                        "title": "Maximum Businesses With Emails",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Target number of businesses to find (1-1000). The scraper will stop when this target is reached.",
                        "default": 5
                    },
                    "scrapeMaxBusinessesPerLocation": {
                        "title": "Scrape Max Businesses Per Location",
                        "type": "boolean",
                        "description": "If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for scraping. Recommended for large-scale scraping."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
