# Contractors Email Scraper (`contacts-api/contractors-email-scraper`) Actor

Contractors email scraper to extract verified emails from construction contractors, remodeling companies, building service providers, and contractor directories 📧🏗️ Perfect for B2B outreach, supplier partnerships, and construction industry lead generation.

- **URL**: https://apify.com/contacts-api/contractors-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, 0 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

### 🛠️ Contractors Email Scraper — Find Verified Leads In Minutes

> The fastest way to build a targeted contractors email list. This actor searches Google Maps for contractors across any city, crawls their websites, and extracts verified emails, phone numbers, and social media profiles — all in one clean, export-ready dataset for high-quality contractors leads.

---

#### 🚀 Quick Start

1. Enter your search term — e.g., "Contractors", "roofing contractors", "general contractor"
2. Add one or more target locations — e.g., "New York", "Dallas, Texas"
3. Optionally set the maximum number of businesses with emails to collect
4. Hit Run and get your results in minutes

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

---

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

The Contractors Email Scraper is a specialized lead generation and contact discovery tool for:

- Construction marketing teams and agencies
- Home improvement marketplaces and aggregators
- Sales development reps and outbound teams
- Researchers and analysts building a contractors list

It combines Google Maps discovery with deep website crawling to extract publicly available contact data — producing an accurate, deduplicated contractors list ready for outreach. Whether you need it as a contractors lead finder, a contractors lead scraper, or a contractors email finder, this single workflow covers all three in one run.

Use it to find contractors email addresses, phone numbers, and social links for general contractors, remodelers, plumbers, electricians, roofers, HVAC pros, and more.

---

#### 📦 What Data Does It Extract?

| Field | Description |
|---|---|
| Business Name | 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 contractors email addresses extracted from website pages |
| Additional Phones | Extra phone numbers discovered during crawl |
| Social Media Links | Facebook, Instagram, LinkedIn, X/Twitter, and more |
| Email Count | Total unique emails found per business |
| Pages Scraped | Number of website pages crawled 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 |

This contractors contact scraper focuses on public, business-facing contact information to streamline prospecting and outreach.

---

#### ⚙️ Input Configuration

##### Minimal Example

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

##### Full Example With All Options

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

##### Input Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `googleMapsSearchTerm` | String | ✅ Yes | Business type or niche to search — e.g., "Contractors", "roofing contractor", "HVAC contractor" |
| `googleMapsLocation` | Array | ✅ Yes | One or more locations — e.g., \["New York", "Dallas, Texas"] |
| `maxBusinesses` | Number | ❌ No | Target number of businesses with emails to collect (1–1,000). The actor stops when reached |
| `scrapeMaxBusinessesPerLocation` | Boolean | ❌ No | If true, applies `maxBusinesses` per location; if false, uses a combined total across all locations |
| `proxyConfiguration` | Object | ❌ No | Proxy settings. Strongly recommended for large runs to avoid rate limits |

***

#### 📤 Sample Output

```json
[
  {
    "name": "Skyline General Contractors",
    "website": "https://www.skylinegcny.com",
    "phone": "+1 212-555-0172",
    "full_address": "155 W 29th St, New York, NY 10001, United States",
    "city": "New York",
    "state": "NY",
    "zip": "10001",
    "country_code": "US",
    "scraped_emails": [
      "info@skylinegcny.com",
      "estimates@skylinegcny.com"
    ],
    "scraped_phones": ["+1 212-555-0172", "+1 212-555-0198"],
    "scraped_social_media": [
      "linkedin:https://www.linkedin.com/company/skyline-gc",
      "facebook:https://www.facebook.com/skylinegcny"
    ],
    "emails_found": 2,
    "pages_scraped": 12,
    "avg_rating": 4.7,
    "total_reviews": 84,
    "lat": 40.7486,
    "long": -73.9918,
    "place_id": "ChIJ9X-EXAMPLEID",
    "scrape_status": "success"
  },
  {
    "name": "GreenLeaf Roofing & Construction",
    "website": "https://www.greenleafroofing.com",
    "phone": "+1 718-555-0143",
    "full_address": "421 Atlantic Ave, Brooklyn, NY 11217, United States",
    "city": "Brooklyn",
    "state": "NY",
    "zip": "11217",
    "country_code": "US",
    "scraped_emails": [
      "contact@greenleafroofing.com"
    ],
    "scraped_phones": ["+1 718-555-0143"],
    "scraped_social_media": [
      "instagram:https://www.instagram.com/greenleafroofing",
      "twitter:https://twitter.com/greenleafroof"
    ],
    "emails_found": 1,
    "pages_scraped": 9,
    "avg_rating": 4.5,
    "total_reviews": 51,
    "lat": 40.6864,
    "long": -73.9815,
    "place_id": "ChIJy0-EXAMPLEID",
    "scrape_status": "success"
  }
]
```

***

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

```
Step 1 → Search Google Maps using your term + location
Step 2 → Collect business listings (name, address, phone, website)
Step 3 → Visit each website and crawl key pages (Home, Contact, About, Services)
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
```

Designed to act as both a contractors lead finder (discovery) and a contractors email extractor (extraction), the Contractors Email Scraper automates your pipeline end‑to‑end.

***

#### ✨ Key Features

##### 🎯 Precise Location Targeting

Specify any city, state, or region. The actor pinpoints relevant firms in your target areas, returning hyper-local contractors leads and a clean, geo-segmented contractors list.

##### 🔍 Deep Website Crawl

Goes beyond the listing. Crawls homepages, contact pages, about pages, and service pages to surface every available public contractors email and phone number.

##### 🌎 Multi-Location Scaling

Run across dozens of cities at once. Choose a combined cap or a per-location cap — perfect for building a large, multi-market contractors list quickly.

##### 🧹 Smart De-Duplication

Automatically removes duplicate emails per domain and normalizes phones/social URLs. Less cleanup, more accurate contractors leads.

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

Consistent field names and normalized values so you can drop results straight into HubSpot, Salesforce, Apollo, Instantly, or any outreach stack.

##### 🛡️ Proxy-Ready For Reliability

Optional proxy support enables stable, large-scale crawls without rate-limiting or IP blocks — ideal for agency-level campaigns using a contractors lead scraper or contractors contact scraper.

##### ⏱️ Stop At Your Target

The run halts as soon as your `maxBusinesses` limit is reached — no wasted compute.

##### 🔄 Schedulable & Repeatable

Schedule daily, weekly, or monthly runs to continuously refresh your contractors data scraper pipeline.

***

#### 🎯 Use Cases

##### 💼 B2B Outreach & Sales

Build targeted pitch lists for remodelers, roofers, electricians, plumbers, and GCs. Use it as your contractors lead scraper to power cold email and calling.

##### 🧰 Marketplace & Directory Growth

Rapidly populate and enrich your contractor directory with verified emails and phones using a reliable contractors contact finder.

##### 📣 Local & Regional Marketing

Create geo-targeted campaigns with verified contractors email addresses and social links pulled directly from company websites.

##### 🤝 Partnerships & Vendor Networks

Find complementary service providers for partnerships and subcontracting opportunities with a scalable contractors contact scraper.

##### 🧾 CRM Enrichment & Data Hygiene

Enrich existing records with missing emails, phones, and social profiles. The contractors data scraper helps keep your CRM current.

##### 🔍 Competitive & Market Research

Map segments, ratings, and review counts across regions to understand competitive density while building a current contractors list.

***

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

Scale from a small prospect list to a multi-state database — results depend on:

- Number of locations added
- Search term breadth (broad “Contractors” vs. niche “tile installer”)
- Website presence and email visibility in your markets
- `maxBusinesses` setting and per-location vs. combined mode
- Proxy configuration and run timeout

##### 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 times across different regions to continuously grow your contractors list without hitting hard platform limits.

***

#### 🔌 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 own apps or workflows |
| Zapier / Make | Trigger automations when new contractors leads are found |
| Webhooks | Push results to your CRM or pipeline on run completion |

Fits seamlessly into Instantly, Smartlead, Apollo, HubSpot, Salesforce, or any platform that accepts CSV/JSON imports.

***

#### 🛠️ 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 "Contractors Email Scraper" in the Apify Store and click Try for free.

Step 3 — Set Your Search Term\
Enter "Contractors" or a niche variant like "roofing contractor", "licensed electrician", or "kitchen remodeler".

Step 4 — Add Target Locations\
Enter one or more city/state combos — e.g., "New York", "Austin, Texas", "San Diego, California".

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 city

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

Step 8 — Run 🚀\
Click Start and let the Contractors 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 all outreach
- Follow applicable laws in your jurisdiction

Relevant regulations to be aware of:

- GDPR (EU)
- CAN-SPAM Act (US)
- CASL (Canada)
- PECR (UK)

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 scrape private or personal emails?\
A: No. The actor only extracts emails that are publicly visible on company websites — general inboxes, admin contacts, and estimate/request addresses typical in contractors email pages.

Q: Can I search multiple cities in one run?\
A: Yes. Add as many locations as needed. Use per-location capping for even geographic distribution of contractors leads.

Q: Does it deduplicate results?\
A: Yes. Emails are deduplicated per domain to keep your contractors list accurate and outreach-ready.

Q: Can I schedule recurring runs?\
A: Absolutely. Use Apify’s scheduler to run weekly or monthly and keep your contractors email data fresh.

Q: Is a proxy required?\
A: Not for small runs, but strongly recommended for 200+ businesses to avoid rate limits — especially when using it as a high-volume contractors data scraper.

Q: How is this different from manual searching?\
A: Manual search is slow and inconsistent. This actor automates discovery and extraction — acting as a contractors email finder, contractors email extractor, and contractors contact finder in one.

Q: Can agencies white-label or resell this?\
A: Yes. Run it on behalf of clients and deliver fresh contractors leads on a recurring schedule.

Q: Will this work for different trades?\
A: Yes — general contractors, remodelers, roofing, HVAC, plumbing, electrical, flooring, landscaping, and more. Adjust your search term to target the niche.

***

#### 🧑‍💻 Support & Custom Solutions

Have a question, feature request, or need a custom build? We’re happy to help with:

- Custom input/output configurations
- Niche-specific adaptations (e.g., roofers, electricians, HVAC)
- Bulk or enterprise run support
- Integration assistance to your CRM or automation

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

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Contractors Email Scraper",
        "description": "Contractors email scraper to extract verified emails from construction contractors, remodeling companies, building service providers, and contractor directories 📧🏗️ Perfect for B2B outreach, supplier partnerships, and construction industry lead generation.",
        "version": "1.0",
        "x-build-id": "WcrxBcEtwHpTMU8hj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/contacts-api~contractors-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-contacts-api-contractors-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~contractors-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-contacts-api-contractors-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~contractors-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-contacts-api-contractors-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": "Contractors"
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
