# Real Estate Contractors Email Scraper (`contacts-api/real-estate-contractors-email-scraper`) Actor

Real estate contractors email scraper to extract verified contractor emails from construction companies, property development firms, and business directories 📧🏗️ Perfect for B2B outreach, partnerships, and real estate lead generation.

- **URL**: https://apify.com/contacts-api/real-estate-contractors-email-scraper.md
- **Developed by:** [Lead Heaven](https://apify.com/contacts-api) (community)
- **Categories:** Lead generation, Real estate, Automation
- **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

### 🏗️ Real Estate Contractors Email Scraper — Find Verified Contacts In Minutes

> The fastest way to build a targeted contractor contact list. This actor searches Google Maps for real estate contractors in any city, crawls their websites, and extracts public emails, phones, and social media profiles — delivering a clean, export-ready dataset for outreach and growth. Use it to collect every relevant real estate contractors email and accelerate your real estate contractors leads pipeline with minimal effort using this real estate contractors email scraper.

---

#### 🚀 Quick Start

1. Enter your search term — e.g., "Real Estate Contractors", "general contractor", "property maintenance"
2. Add one or more target locations — e.g., "New York, NY" or "Dallas, Texas"
3. Set your desired number of businesses with emails
4. Hit Run and get results in minutes

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

---

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

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

- Real estate investors and developers
- Property managers and asset managers
- Renovation/remodeling firms and subcontractor networks
- B2B marketing and sales teams

It combines Google Maps listing discovery with deep website crawling to extract publicly available contact data — producing a verified, deduplicated real estate contractors list ready for immediate use.

Whether you need a real estate contractors lead finder, a real estate contractors lead scraper, or a real estate contractors email finder to enrich your CRM, this actor covers all three in one automated run. It also works effectively as a real estate contractors contact scraper and real estate contractors contact finder to consolidate direct outreach channels across markets.

---

#### 📦 What Data Does It Extract?

| Field | Description |
|---|---|
| Business Name | Company or contractor name from Google Maps |
| Website | Official website URL (if 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 if available |
| Emails | All public real estate contractors email addresses extracted from website pages |
| 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 website pages crawled per domain |
| Rating | Average Google Maps star rating |
| Reviews | Total number of Google reviews |
| Latitude / Longitude | Geo-coordinates for mapping |
| Place ID | Google Maps place identifier |
| Scrape Status | Per-record status: success, partial, or error |

This actor is an effective real estate contractors data scraper, designed to normalize and structure results so they can be readily dropped into your workflows.

---

#### ⚙️ Input Configuration

##### Minimal Example

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

##### Full Example With All Options

```json
{
  "googleMapsSearchTerm": "Real Estate Contractors",
  "googleMapsLocation": [
    "New York",
    "Dallas, Texas",
    "San Diego, California"
  ],
  "maxBusinesses": 200,
  "scrapeMaxBusinessesPerLocation": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

##### Input Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| googleMapsSearchTerm | String | Yes | Business type or niche to search — e.g., "Real Estate Contractors", "general contractor", "roofing contractor" |
| googleMapsLocation | Array | Yes | One or more target locations — e.g., \["New York", "Austin, Texas"] |
| maxBusinesses | Integer | No | Max businesses with emails to return (1–1,000). Stops when reached |
| scrapeMaxBusinessesPerLocation | Boolean | No | If true, applies the cap per location; if false, total across all locations |
| proxyConfiguration | Object | No | Proxy settings. Strongly recommended for large runs |

***

#### 📤 Sample Output

```json
[
  {
    "name": "MetroBuild Contracting",
    "website": "https://www.metrobuildco.com",
    "phone": "+1 212-555-0148",
    "full_address": "425 W 45th St, New York, NY 10036, United States",
    "city": "New York",
    "state": "NY",
    "zip": "10036",
    "country_code": "US",
    "scraped_emails": [
      "info@metrobuildco.com",
      "bids@metrobuildco.com"
    ],
    "scraped_phones": [
      "+1 212-555-0148",
      "+1 212-555-0192"
    ],
    "scraped_social_media": [
      "linkedin:https://www.linkedin.com/company/metrobuildco",
      "instagram:https://www.instagram.com/metrobuildco"
    ],
    "emails_found": 2,
    "pages_scraped": 18,
    "avg_rating": 4.7,
    "total_reviews": 93,
    "lat": 40.7602,
    "long": -73.9884,
    "place_id": "ChIJEXAMPLEID",
    "scrape_status": "success"
  }
]
```

***

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

```
Step 1 → Search Google Maps using your term + location
Step 2 → Collect 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 operate as a discovery engine and a real estate contractors lead scraper at once, it builds a reliable contact pipeline from search to extraction.

***

#### ✨ Key Features

##### 🎯 Precise Location Targeting

Pinpoint contractors in your exact markets — cities, counties, or states — and build localized real estate contractors leads quickly.

##### 🔍 Deep Website Crawl

Goes beyond the listing to find every publicly visible real estate contractors email on homepages, contact pages, footers, and service pages.

##### 🧭 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 real estate contractors list.

##### 🧹 Smart De-Duplication

Removes duplicate emails per domain so your outreach stays clean and deliverable, whether you’re using the real estate contractors email extractor mode or the discovery mode.

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

Normalized fields mapped to phones, emails, ratings, and location components. Import directly into HubSpot, Salesforce, Apollo, Instantly, or any tool without reformatting — ideal for a real estate contractors contact scraper workflow.

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

Built-in proxy support ensures stable, large-scale runs without rate limits. Recommended for agency campaigns and national real estate contractors leads acquisition.

##### ⏱️ Stop Exactly At Your Target

Halts as soon as maxBusinesses is reached — no wasted compute or overage, whether running as a real estate contractors data scraper or focused email finder.

##### 🔄 Schedulable & Repeatable

Run daily, weekly, or monthly to keep your real estate contractors list fresh and up to date.

***

#### 🎯 Use Cases

##### 💼 B2B Outreach & Sales

Fuel cold-email campaigns to general contractors, remodeling firms, roofers, and maintenance vendors. Use this real estate contractors email scraper to streamline prospecting and generate consistent real estate contractors leads.

##### 🏢 Property Management Vendor Onboarding

Build a vetted vendor roster fast. The tool works as a real estate contractors contact finder to source emails and phones for maintenance and repair partners across multiple cities.

##### 🧰 Subcontractor & Supplier Networks

Identify and contact local contractors for bids and partnerships. Operate it as a real estate contractors lead finder to expand your rolodex.

##### 🧭 Market Expansion & Territory Planning

Map out competitors and partners as you enter new markets. The discovery and crawl pipeline functions as a robust real estate contractors data scraper for landscape analysis.

##### 🧾 CRM Enrichment & Data Hygiene

Enrich existing records with missing emails, phones, and social pages. Treat it as a real estate contractors email finder to fill gaps and remove duplicates.

##### 🧪 A/B Testing & Campaign Validation

Quickly validate demand across multiple metros by pulling fresh contact data using a reliable real estate contractors lead scraper.

***

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

Output depends on:

- Number of locations added
- Breadth of the search term (“general contractor” vs. niche specialties)
- Website density and email visibility in each market
- maxBusinesses and per-location vs. combined mode
- Proxy configuration and run timeout

Typical Ranges:

- Small (1–3 cities): 20–100 businesses with emails
- Medium (5–15 cities): 200–600 businesses with emails
- Large (20+ cities/states): 800–1,000+ per run

Run across different regions to grow your real estate contractors list consistently over time.

***

#### 🔌 Integrations & Export Options

Once your run completes, you can:

- 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 leads are found
- Webhooks: Push results to your CRM or pipeline on run completion

Plug directly into Instantly, Smartlead, Apollo, HubSpot, Salesforce, Pipedrive, or any outreach 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 "Real Estate Contractors Email Scraper" in the Apify Store and click Try for free.

- Step 3 — Set Your Search Term
  Enter "Real Estate Contractors" or a niche variant like "general contractor", "roofing contractor", "kitchen remodeler", or "property maintenance".

- Step 4 — Add Target Locations
  Provide one or more location strings — e.g., "New York", "Dallas, 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: total across all locations
  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 🚀
  Start your run and let the real estate contractors email scraper find and extract contacts.

- Step 9 — Export & Use
  Download as JSON, CSV, or Excel — or pull via API straight into your stack to build your real estate contractors list.

***

#### ⚖️ Legal & Compliance

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

Best practices:

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

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

This real estate contractors data scraper 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. It only extracts publicly visible emails from business websites and public listings — think "info@", "estimates@", "bids@" — not private inboxes. It focuses on collecting the right real estate contractors email for B2B communication.

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 real estate contractors leads.

Q: Does it deduplicate results?
A: Yes. Emails are deduplicated per domain. This keeps your real estate contractors email finder output clean and campaign-ready.

Q: Is proxy usage required?
A: Not for small runs, but strongly recommended for 200+ businesses to avoid rate limits and ensure reliability.

Q: How is this different from manual Google searching?
A: Manual search is slow and inconsistent. This tool automates discovery and extraction — acting as a reliable real estate contractors lead scraper and real estate contractors email extractor — delivering results in minutes.

Q: What if a contractor has no website?
A: The actor still captures listing data (name, phone, address) when available. Emails typically require a website; yields are higher when more businesses have websites.

Q: Can I schedule recurring runs?
A: Absolutely. Use Apify’s scheduler to run weekly or monthly and keep your real estate contractors list refreshed.

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

Q: Will this help me find local vendors quickly?
A: Yes. Many users employ it as a real estate contractors contact finder for vendor onboarding, bid requests, and territory expansion.

***

#### 🧑‍💻 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
- Niche-specific patterns (e.g., specialty contractors)
- Bulk or enterprise run support
- CRM and workflow integrations

Built for investors, property managers, marketing teams, and agencies who need accurate real estate contractors leads at scale — fast, with a dependable real estate contractors email extractor at the core.

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": "Real Estate 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": "Real Estate 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/real-estate-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": "Real Estate Contractors",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

```

## MCP server setup

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

```

## OpenAPI specification

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