# Google Maps Contact Leads & Website Opportunity Scorer (`luminar/google-maps-contact-website-opportunity-leads`) Actor

Turn Google Maps searches into outreach-ready local business leads with contact routes, website signals, priority scores, offer angles, and CRM-friendly output.

- **URL**: https://apify.com/luminar/google-maps-contact-website-opportunity-leads.md
- **Developed by:** [Luka Bulatovic](https://apify.com/luminar) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Google Maps Contact Leads & Website Opportunity Scorer

Turn Google Maps searches into outreach-ready, paid-work local business leads. The Actor finds businesses for a chosen niche and location, keeps contact routes visible, adds owned-website, marketplace-listing, and contact-flow signals, and ranks which prospects are worth reviewing first.

> 🟢 **Where do I type the search?** Click **Try for free** to open the editable run form. The public **Input** tab is a read-only preview of the fields; the real text boxes appear when you start a run. Begin with **business type** + **location**, for example `dentist` + `Tivat, Montenegro`.


Built for agencies, freelancers, local SEO teams, web studios, consultants, and B2B sales teams that want a focused prospecting list instead of a raw export.

### What it does

1. 🔎 **Finds local businesses** from a Google Maps keyword + location search.
2. 📞 **Collects contact routes** such as phone, website, Google Maps/source URL, and optional email/social contact fields.
3. 🧭 **Checks website opportunity signals** with a bounded homepage/contact-flow review when pitch-priority mode is enabled.
4. 🎯 **Ranks prospects** with priority tier, action score, recommended offer type, and a short reason to review the lead.
5. 📤 **Exports CRM-friendly rows** for CSV, XLSX, Google Sheets, Make, Zapier, Airtable, or your own workflow.

### Best for

- web designers and small agencies looking for businesses that may need a new website or rebuild;
- local SEO and visibility consultants building targeted outreach lists;
- freelancers selling practical local-business improvements;
- sales teams that want contacts plus a reason to contact, not only scraped rows;
- lead researchers who need Sheets/CRM-ready fields with evidence and review notes.

### Example output

| businessName | contact route | website signal | priorityTier | score | recommendedOfferType | whyNow |
|---|---:|---|---|---:|---|---|
| Example Mobile Welding | phone + website | weak contact path | now_pitch | 91 | new_website_or_rebuild | Strong local profile, but the website/contact path may be losing direct inquiries. |
| Example Family Dentist | phone + website | needs manual review | review_first | 73 | local_visibility_review | Good reputation signals with unclear conversion path. |
| Example Cafe | phone | contact list only | not_scored | — | — | Contact mode selected; scoring was not requested. |

Sample JSON item:

```json
{
  "businessName": "Example Local Contractor",
  "category": "Contractor",
  "city": "Austin, TX",
  "phonePublic": "+1 512 000 0100",
  "phones_csv": "+1 512 000 0100",
  "websiteUrl": "https://example-contractor.test",
  "googleMapsUrl": "https://maps.google.com/?cid=example",
  "primaryContactMethod": "phone",
  "websiteClassification": "weak_contact_flow",
  "priorityTier": "now_pitch",
  "actionPriorityScore": 91,
  "recommendedOfferType": "new_website_or_rebuild",
  "whyNow": "Strong public reputation is paired with weak standalone website/contact-flow evidence.",
  "outreachOpeningLine": "I was checking Austin contractors and noticed your Google profile is strong, but the website/contact path may be losing direct inquiries.",
  "crmSummary": "High-priority local contractor lead for website/contact-flow review.",
  "manualCheckBeforeOutreach": "Open the website and Google profile before sending outreach. Confirm current contact route and business identity."
}
````

### Key features

| Feature | What it gives you |
|---|---|
| Google Maps discovery | One focused search by business type and location. |
| Contact list mode | A clean prospect table with phones, websites, source URLs, and contact quality fields. |
| Pitch-priority mode | Adds website/contact-flow signals, score, tier, offer angle, and outreach-ready notes. |
| Website opportunity scoring | Helps identify leads worth reviewing for new website, direct-booking/owned-site, rebuild, local visibility, or contact-flow offers. |
| Email/social enrichment | Optional contact fields for outreach lists that need email or social routes. |
| CSV-friendly output | Flat fields such as `phones_csv`, `emails_csv`, `socialProfiles_csv`, `evidenceBullets_csv`, and `weakSiteReasons_csv`. |
| Evidence and review notes | Output includes reasons, warnings, and manual-check fields so outreach stays accurate. |
| Predictable first runs | Defaults are intentionally small: 10 leads, 10 homepage checks, email/social enrichment off. |

### How to use it

#### 🔎 1. Type what to search for

Click **Try for free**, then fill the first two text boxes:

| Field | What to type | Example |
|---|---|---|
| 🔎 **Business type or keyword** | the niche, service, or business category | `mobile welders` |
| 📍 **Location** | city, region, country, or service area | `Austin, TX` |
| 🔢 **Number of leads to check** | how many Google Maps results to inspect | `10` |

Copyable starter input:

```json
{
  "searchQuery": "mobile welders",
  "locationQuery": "Austin, TX",
  "maxPlaces": 10
}
```

Good first-run examples:

- 🔎 `dentists` + 📍 `Berlin, Germany`
- 🔎 `roofing company` + 📍 `Phoenix, AZ`
- 🔎 `apartments` + 📍 `Tivat, Montenegro`
- 🔎 `mobile welders` + 📍 `Austin, TX`

#### 📋 2. Pick the lead list type

| Mode | Use it when you want |
|---|---|
| `just_contacts` | a straightforward contact list from Google Maps rows. |
| `contacts_plus_pitch_priority` | contacts plus website/contact-flow opportunity scoring and outreach notes. |

Recommended first run:

```json
{
  "mode": "contacts_plus_pitch_priority",
  "searchQuery": "mobile welders",
  "locationQuery": "Austin, TX",
  "maxPlaces": 10,
  "enableWebsiteEnrichment": true,
  "maxWebsiteFetches": 10,
  "includeEmails": false,
  "includeSocialProfiles": false
}
```

#### 🚀 3. Run and export

Run the Actor, then download results as CSV, XLSX, JSON, XML, or connect the dataset to Google Sheets, Make, Zapier, Airtable, or your CRM.

### Main output fields

| Field | Meaning |
|---|---|
| `businessName` | Business/listing name. |
| `category`, `city`, `businessStatus` | Basic profile context. |
| `phonePublic`, `phones`, `phones_csv` | Main public phone and CSV-ready phone list. |
| `emails`, `emails_csv` | Email contact fields for email-enriched runs. |
| `socialProfiles`, `socialProfiles_csv` | Social/profile contact routes for social-enriched runs. |
| `websiteUrl` | Business website URL. |
| `googleMapsUrl` | Source Google Maps URL. |
| `contactDataQualityScore` | Contact-data completeness signal. |
| `websiteClassification` | Website/contact-flow classification used by scoring. |
| `weakSiteReasons`, `weakSiteReasons_csv` | Website/contact-flow issues detected during bounded review. |
| `contactFlowSignals`, `contactFlowSignals_csv` | Contact path signals found on the homepage. |
| `priorityTier` | Outreach priority bucket, e.g. `now_pitch`, `review_first`, or not scored. |
| `actionPriorityScore` | Numeric priority score for pitch-priority mode. |
| `recommendedOfferType` | Suggested service angle such as new website, direct-booking/owned-site, rebuild, local visibility, or contact-flow review. |
| `whyNow` | Short reason this prospect is worth checking. |
| `outreachOpeningLine` | Draft opening angle for manual review, not an auto-send message. |
| `crmSummary` | Compact CRM/Sheets note. |
| `manualCheckBeforeOutreach` | What to verify before contacting the business. |
| `evidenceBullets`, `evidenceBullets_csv` | Evidence behind the score and recommendation. |

### Contact list vs pitch-priority output

#### Contact list

Use this when you only need a clean Google Maps prospect export.

```json
{ "mode": "just_contacts" }
```

Returns contact and source fields such as business name, category, phone, website, Google Maps URL, contact quality score, and CSV-ready contact columns.

#### Contact list + pitch priority

Use this when you want the Actor to help sort the list.

```json
{ "mode": "contacts_plus_pitch_priority" }
```

Adds score, tier, recommended offer type, why-now reason, evidence, CRM summary, and a manual-check note for outreach review.

### Marketplace / direct-booking opportunities

If a Google Maps listing uses a Booking.com, Airbnb, TripAdvisor, Expedia, Hotels.com, Agoda, Vrbo, Kayak, or Trivago URL as its website route, the Actor does **not** automatically discard it as a bad lead. It classifies the row as a marketplace-listing-only/direct-site opportunity and recommends manual verification before any pitch. This is useful for accommodation, restaurants, tours, and appointment-based businesses where an owned inquiry or direct-booking site can be commercially valuable.

### Pricing and runtime notes

Live discovery uses a child Google Maps Actor to fetch the source rows. A run can therefore consume Apify resources for:

- this Actor, and
- the configured Google Maps child Actor (`compass/crawler-google-places` by default, unless changed through API/advanced input).

The default input is built for controlled first runs:

- `maxPlaces`: 10
- `maxWebsiteFetches`: 10
- email enrichment: off
- social profile enrichment: off

Increase limits only after checking the first dataset. Website checks and contact enrichment can increase runtime and Apify credit usage. The scoring layer itself is deterministic and does not use paid LLM APIs.

### Good to know

- Google Maps and source websites decide which contact fields exist in a run. Empty cells mean the field was not exposed by the source path used for that row.
- Website enrichment is a bounded homepage/contact-flow check, not a full crawler.
- The Actor treats uncertain website results as review cases, not automatic proof that a business needs a rebuild.
- `outreachOpeningLine` is a draft angle for a human reviewer. It is not meant for automatic spam campaigns.
- For high-value prospects, open the Google Maps profile and website before sending outreach.

### FAQ

#### Can I use this only as a contact scraper?

Yes. Select `Contact list` mode. The Actor will return the contact/source fields without pitch-priority scoring.

#### What makes this different from a normal Google Maps scraper?

A normal scraper gives you rows. This Actor adds prospecting context: contact quality, website/contact-flow signals, priority score, recommended offer type, why-now reason, evidence, and CRM-friendly notes.

#### Can I export to Google Sheets or a CRM?

Yes. Use Apify dataset export or integrations. The output includes flat CSV-friendly fields such as `phones_csv`, `emails_csv`, `socialProfiles_csv`, `evidenceBullets_csv`, `weakSiteReasons_csv`, and `contactFlowSignals_csv`.

#### Should I start with email/social enrichment enabled?

For the first run, start lean. Review a small dataset first, then enable email or social enrichment when your outreach workflow needs those routes.

#### Does the Actor crawl whole websites?

No. Website enrichment is intentionally bounded. It checks the homepage/contact-flow signals needed for scoring and keeps the run controlled.

#### Is this legal to use?

The Actor is designed for public business data and manual B2B prospecting workflows. You are responsible for complying with GDPR, ePrivacy, CAN-SPAM, platform terms, and local outreach rules in your market.

### Compliance-first outreach

This Actor helps you build and prioritize a prospect list. It does not replace manual review.

Before outreach, check the business identity, current website/profile state, contact route, and any local rules that apply to your message type. Use evidence fields and manual-check notes to avoid overclaiming.

# Actor input Schema

## `searchQuery` (type: `string`):

Start here: type the business type, service, or keyword to search for on Google Maps. Examples: restaurant, dentist, mobile welder, roofing company, apartments.

## `locationQuery` (type: `string`):

Type the city, region, country, or service area where you want to find leads. Examples: Austin, TX; Berlin, Germany; Tivat, Montenegro.

## `maxPlaces` (type: `integer`):

Choose how many Google Maps results to inspect. Start with 5–10 for a quick test, then increase the limit when you are happy with the output.

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

Choose the preferred language for Google Maps results.

## `mode` (type: `string`):

Choose a simple contact list or a richer outreach table with priority tiers, offer angles, and review notes.

## `enableWebsiteEnrichment` (type: `boolean`):

Turn this on to check business websites for simple outreach signals such as homepage quality and contact path. This helps prioritize leads without crawling entire websites.

## `maxWebsiteFetches` (type: `integer`):

Limit how many business websites should be checked. For your first run, keep this equal to or lower than the lead limit to control runtime and cost.

## `includeEmails` (type: `boolean`):

Add business email fields when they are found. Leave this off for a faster, simpler first run.

## `includeSocialProfiles` (type: `boolean`):

Add public social profile links when they are found. Useful if you plan to contact businesses through social channels.

## Actor input object example

```json
{
  "searchQuery": "restaurant",
  "locationQuery": "New York, USA",
  "maxPlaces": 10,
  "language": "en",
  "mode": "contacts_plus_pitch_priority",
  "enableWebsiteEnrichment": true,
  "maxWebsiteFetches": 10,
  "includeEmails": false,
  "includeSocialProfiles": false
}
```

# Actor output Schema

## `leads` (type: `string`):

Lead rows with public contact fields, website-opportunity scoring, enrichment evidence, and manual-review safety fields.

## `discoverySummary` (type: `string`):

Run metadata for the optional Google Maps child Actor discovery step. Exists when inputMode is live\_google\_maps\_child.

## `runSummary` (type: `string`):

Counts, enrichment coverage, marketplace-listing rows, child usage, and pay-per-event billing status for this run.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("luminar/google-maps-contact-website-opportunity-leads").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("luminar/google-maps-contact-website-opportunity-leads").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 '{}' |
apify call luminar/google-maps-contact-website-opportunity-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=luminar/google-maps-contact-website-opportunity-leads",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Contact Leads & Website Opportunity Scorer",
        "description": "Turn Google Maps searches into outreach-ready local business leads with contact routes, website signals, priority scores, offer angles, and CRM-friendly output.",
        "version": "1.0",
        "x-build-id": "S3SayrovpPQFFxs0o"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/luminar~google-maps-contact-website-opportunity-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-luminar-google-maps-contact-website-opportunity-leads",
                "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/luminar~google-maps-contact-website-opportunity-leads/runs": {
            "post": {
                "operationId": "runs-sync-luminar-google-maps-contact-website-opportunity-leads",
                "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/luminar~google-maps-contact-website-opportunity-leads/run-sync": {
            "post": {
                "operationId": "run-sync-luminar-google-maps-contact-website-opportunity-leads",
                "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": [
                    "searchQuery",
                    "locationQuery"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "🔎 What businesses should we look for?",
                        "type": "string",
                        "description": "Start here: type the business type, service, or keyword to search for on Google Maps. Examples: restaurant, dentist, mobile welder, roofing company, apartments.",
                        "default": "restaurant"
                    },
                    "locationQuery": {
                        "title": "📍 Where should we search?",
                        "type": "string",
                        "description": "Type the city, region, country, or service area where you want to find leads. Examples: Austin, TX; Berlin, Germany; Tivat, Montenegro.",
                        "default": "New York, USA"
                    },
                    "maxPlaces": {
                        "title": "🔢 Number of leads to check",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Choose how many Google Maps results to inspect. Start with 5–10 for a quick test, then increase the limit when you are happy with the output.",
                        "default": 10
                    },
                    "language": {
                        "title": "🌍 Google Maps language",
                        "enum": [
                            "en",
                            "de",
                            "es",
                            "fr",
                            "it",
                            "pt",
                            "nl",
                            "pl",
                            "ro",
                            "sr",
                            "hr",
                            "bs"
                        ],
                        "type": "string",
                        "description": "Choose the preferred language for Google Maps results.",
                        "default": "en"
                    },
                    "mode": {
                        "title": "📋 Lead list type",
                        "enum": [
                            "just_contacts",
                            "contacts_plus_pitch_priority"
                        ],
                        "type": "string",
                        "description": "Choose a simple contact list or a richer outreach table with priority tiers, offer angles, and review notes.",
                        "default": "contacts_plus_pitch_priority"
                    },
                    "enableWebsiteEnrichment": {
                        "title": "🧭 Check websites for opportunities",
                        "type": "boolean",
                        "description": "Turn this on to check business websites for simple outreach signals such as homepage quality and contact path. This helps prioritize leads without crawling entire websites.",
                        "default": true
                    },
                    "maxWebsiteFetches": {
                        "title": "⚙️ Maximum websites to check",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Limit how many business websites should be checked. For your first run, keep this equal to or lower than the lead limit to control runtime and cost.",
                        "default": 10
                    },
                    "includeEmails": {
                        "title": "✉️ Include email contacts",
                        "type": "boolean",
                        "description": "Add business email fields when they are found. Leave this off for a faster, simpler first run.",
                        "default": false
                    },
                    "includeSocialProfiles": {
                        "title": "📱 Include social profiles",
                        "type": "boolean",
                        "description": "Add public social profile links when they are found. Useful if you plan to contact businesses through social channels.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
