# Google Maps Scraper — Business Emails, Phones & Leads (`bovi/google-maps-leads`) Actor

Turn any Google Maps search into B2B leads: name, address, phone, website, GPS, hours + website-harvested emails & socials, each email MX-verified. Built-in contact enrichment closes the email gap. Apify residential proxy — no external key.

- **URL**: https://apify.com/bovi/google-maps-leads.md
- **Developed by:** [Vitalii Bondarev](https://apify.com/bovi) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.90 / 1,000 lead records

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

## Google Maps Leads — Verified Email, Phone & GPS Contacts

Turn any **Google Maps** search into a ready-to-use **B2B lead list**. Every business comes back as a full contact record — name, address, phone, website, GPS, hours, rating — **plus a public email harvested from the business website and MX-verified**, so the list you export is the list you can actually email. One flat price per lead. No Google API key, no external proxy key — it runs on **Apify's residential proxy**.

This is the **leads-first** sibling of a general Maps scraper: contact enrichment and email verification are **always on and bundled into one price**, not stacked as paid add-ons.

### What you get per lead

- **`primary_email`** — the single best public email for the business, picked after verification.
- **`email_status`** — `valid` (domain accepts mail), `role` (shared mailbox like `info@`), `risky` (disposable domain), or `invalid`. You always know what you're emailing.
- **`emails`** — every public email found, de-duplicated and ranked (on-domain + `mailto:` first).
- **`social_links`** — Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest, Yelp profiles from the site.
- **Full place record** — phone, website, address, GPS, category, rating, review count, opening hours, price level, owner-verified flag, and more (32+ fields).

### Why this beats the alternatives

- **Closes the email gap.** General Maps-contact scrapers land an email on roughly half of businesses because they only read the homepage. This actor walks the **highest-yield contact pages** (`/contact`, `/about`, `/kontakt`, `/impressum`, …) and **de-obfuscates hidden addresses** (`info [at] domain [dot] com`, HTML-entity forms) — lifting the fill rate where the lead actually lives.
- **Email verification is built in, not a surprise add-on.** Each harvested email is checked at the MX layer (does the domain accept mail at all?) and flagged disposable/role/valid — bundled into the per-lead price. Competing stacks charge a separate per-verification fee on top of a separate per-contact fee on top of the base place price.
- **One flat price.** You pay one rate per lead record delivered — no base-place fee + contacts add-on + verification add-on arithmetic.
- **Breaks the 20-result ceiling.** Auto-paginates (via the Maps `!8i` offset) up to **300 places per query**, deduplicated by place ID.
- **A real B-plan against format drift.** Google reshuffles its internal Maps layout between releases — the silent killer that makes index scrapers return *zero* results that look like an empty area. A **secondary regex/structural parser** recovers places by stable anchors and flags them (`parse_path: "fallback"`, lower `parse_confidence`) so degradation is visible, never silent.
- **Self-rotating against blocks.** On a CAPTCHA / consent wall / poisoned IP it rotates to a fresh residential exit (up to 3×) — and **never charges you for a blocked or empty query**.
- **No external key, $0 setup.** Uses the Apify residential proxy pool included with your account.

### How it compares

| | This actor | General Maps + contacts scraper |
|---|---|---|
| Price model | **one flat rate per lead** | base place + contacts add-on + verification add-on |
| Email verification | ✅ MX-verified, `email_status` per lead | ➕ extra per-verification fee |
| Contact-page crawl + de-obfuscation | ✅ multi-page + decode | homepage-only (≈50% fill) |
| Best-email pick | ✅ `primary_email` | — (raw list only) |
| Results per query | up to **300** (auto-paginate) | ~120 |
| Format-drift fallback parser | ✅ regex B-plan | — |
| External key required | ❌ none | ❌ none |

*(Competitor behaviour as observed on the Apify Store, 2026-06; verify current pricing on each listing.)*

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `queries` | array of strings | ✅ | Search queries, e.g. `["marketing agencies in Austin TX", "dentists near Denver CO"]`. Each query is paginated up to `maxResults`. |
| `maxResults` | integer | — | Max places per query, **1–300** (default 20). Google caps a single area near 120–300; split into narrower queries for fuller coverage. |
| `verifyEmails` | boolean | — | MX-verify every harvested email and surface a `primary_email` + `email_status`. Default `true`. Contact enrichment itself is always on. |
| `language` | string | — | Result language code (BCP-47). Default `en`. |
| `country` | string | — | Country code for result localisation. Default `us`. |
| `proxyConfiguration` | object | — | Apify proxy settings. **Must be residential** — Google Maps blocks datacenter IPs. Default: Apify `RESIDENTIAL` group. (The `GOOGLE_SERP` group does **not** support Maps.) |

### Output (key lead fields)

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Business name |
| `primary_email` | string | Best verified public email — the lead's contact |
| `email_status` | string | `valid` / `role` / `risky` / `invalid` / `none` |
| `emails` | array | All public emails found (ranked) |
| `email_count` | int | Number of distinct emails found |
| `has_email` | bool | Whether at least one email was harvested |
| `email_checks` | array | Per-email MX / role / disposable verification detail |
| `email_source_page` | string | URL the primary email was found on |
| `social_links` | object | `{platform: url}` social profiles |
| `phone` | string | Phone number |
| `website` | string | Business website URL |
| `address` | string | Full street address |
| `latitude` / `longitude` | float | Coordinates |
| `category` | string | Primary category (e.g. "Marketing agency") |
| `rating` / `reviews_count` | float / int | Star rating and review count |
| `opening_hours` | array | Structured weekly hours `[{day, hours}]` |
| `is_claimed` | bool | Owner-verified listing |
| `maps_url` | string | Direct Google Maps link |
| `parse_confidence` | float | Per-record data-quality score 0.0–1.0 |
| `scraped_at` | string | ISO-8601 UTC timestamp |

*(Plus `place_id`, `plus_code`, `price_level`, `summary`, `description`, `image_url`, `amenities`, `categories`, `work_status`, `parse_path`, `warnings`, `query`, `rank`.)*

### Use cases

- **Cold-email lead lists** — pull restaurants, agencies, contractors, dentists, gyms by city with a verified email per business, export straight to your sequencer.
- **Sales prospecting** — name + phone + website + `primary_email` into your CRM in one pass.
- **Local SEO / agency outreach** — find businesses with weak `is_claimed` / rating signals and reach the owner directly.
- **Market research** — category, price tier, and amenity distribution across a metro.

### Frequently asked questions

**Do I need a Google API key or a proxy key?** No. Runs on the Apify residential proxy pool included with your account.

**How is the email found and verified?** The actor fetches each business website over the same residential proxy — homepage plus the highest-yield contact pages — extracts public emails (decoding common `[at]`/`[dot]` obfuscation), then checks each at the MX layer to confirm the domain can receive mail and flags role/disposable addresses. The best one is surfaced as `primary_email`.

**Why MX verification and not a full mailbox probe?** Outbound SMTP (port 25) is blocked on most cloud infrastructure, so a per-mailbox RCPT probe is unreliable there. MX verification is fast, robust, and honest: it confirms the domain accepts mail and screens disposable/role addresses, which removes the bulk of dead and junk addresses.

**What if a business has no website or no public email?** You still get the full place record; `has_email` is `false` and `email_status` is `none`. You're never charged extra for enrichment that found nothing.

**How many results per query?** Up to **300**, paginated automatically. Split large cities into narrower queries for exhaustive coverage.

**Will I get charged for failed queries?** No. You pay **per lead record pushed**, after the push. Blocked, empty, or errored queries push nothing and cost nothing.

### Pricing

Pay-per-result: **$0.0069 per lead record** — Google Maps place data **plus** website email harvesting **plus** MX email verification, all in one flat rate, no add-on fees. You pay only for lead records actually delivered to your dataset.

### Integrations

- **n8n / Make / Zapier** — trigger a run or pipe every new lead into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your CRM) with no code: [n8n](https://docs.apify.com/platform/integrations/n8n), [Make](https://docs.apify.com/platform/integrations/make), [Zapier](https://docs.apify.com/platform/integrations/zapier).
- **Webhooks** — fire your endpoint the moment a run finishes ([docs](https://docs.apify.com/platform/integrations/webhooks)).
- **MCP server** — expose this actor as a tool to Claude, Cursor, or any [MCP client](https://mcp.apify.com) so an AI agent can pull leads mid-conversation ([guide](https://blog.apify.com/how-to-use-mcp/)).
- **API & SDKs** — fetch the dataset as JSON, CSV, or Excel via the Apify REST API or the Python / JS SDKs.

See all [Apify integrations](https://apify.com/integrations).

### Not affiliated with Google

This actor is not affiliated with, endorsed by, or sponsored by Google LLC. Google Maps and Google are trademarks of Google LLC. Scrape responsibly and in compliance with applicable laws and terms.

# Actor input Schema

## `queries` (type: `array`):

One or more Google Maps search queries to scrape. Each query returns up to 20 place results. Examples: 'coffee shops in San Francisco CA', 'plumbers near Austin TX 78701', 'Italian restaurants Manhattan NYC'.
## `proxyConfiguration` (type: `object`):

Apify proxy settings. Google Maps requires residential proxies — datacenter IPs are blocked. Default: Apify RESIDENTIAL group. Note: GOOGLE_SERP proxy does NOT support Maps URLs.
## `maxResults` (type: `integer`):

Maximum number of places to return per search query. The actor paginates automatically (20 per page) to exceed Google's single-page limit — set up to 300. Google itself caps a single area at roughly 120–300 places; for fuller coverage of a city, split into narrower queries (per neighborhood or subcategory).
## `verifyEmails` (type: `boolean`):

Contact enrichment is always on — the actor visits each business website (homepage + high-yield contact pages, with de-obfuscation) to extract public emails and social links. When this is enabled, every harvested email is also MX-verified (does the domain accept mail?) and flagged valid / role / risky / invalid, with the best one surfaced as primary_email. Default: on.
## `language` (type: `string`):

Two-letter BCP-47 language code for result language. Default: 'en' (English).
## `country` (type: `string`):

Two-letter ISO country code for result localisation (affects which businesses appear in results). Default: 'us'.

## Actor input object example

```json
{
  "queries": [
    "coffee shops in San Francisco CA"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxResults": 20,
  "verifyEmails": true,
  "language": "en",
  "country": "us"
}
````

# Actor output Schema

## `results` (type: `string`):

Dataset of lead records (name, address, phone, website, primary\_email, email\_status, emails, social\_links, category, rating, reviews\_count, latitude, longitude, maps\_url, scraped\_at).

# 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 = {
    "queries": [
        "coffee shops in San Francisco CA"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    },
    "maxResults": 20,
    "language": "en",
    "country": "us"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bovi/google-maps-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 = {
    "queries": ["coffee shops in San Francisco CA"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
    "maxResults": 20,
    "language": "en",
    "country": "us",
}

# Run the Actor and wait for it to finish
run = client.actor("bovi/google-maps-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 '{
  "queries": [
    "coffee shops in San Francisco CA"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxResults": 20,
  "language": "en",
  "country": "us"
}' |
apify call bovi/google-maps-leads --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Scraper — Business Emails, Phones & Leads",
        "description": "Turn any Google Maps search into B2B leads: name, address, phone, website, GPS, hours + website-harvested emails & socials, each email MX-verified. Built-in contact enrichment closes the email gap. Apify residential proxy — no external key.",
        "version": "0.1",
        "x-build-id": "y5ghzpBtwAPhuzUSo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/bovi~google-maps-leads/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-bovi-google-maps-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/bovi~google-maps-leads/runs": {
            "post": {
                "operationId": "runs-sync-bovi-google-maps-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/bovi~google-maps-leads/run-sync": {
            "post": {
                "operationId": "run-sync-bovi-google-maps-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": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "One or more Google Maps search queries to scrape. Each query returns up to 20 place results. Examples: 'coffee shops in San Francisco CA', 'plumbers near Austin TX 78701', 'Italian restaurants Manhattan NYC'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Google Maps requires residential proxies — datacenter IPs are blocked. Default: Apify RESIDENTIAL group. Note: GOOGLE_SERP proxy does NOT support Maps URLs.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    },
                    "maxResults": {
                        "title": "Max Results Per Query",
                        "minimum": 1,
                        "maximum": 300,
                        "type": "integer",
                        "description": "Maximum number of places to return per search query. The actor paginates automatically (20 per page) to exceed Google's single-page limit — set up to 300. Google itself caps a single area at roughly 120–300 places; for fuller coverage of a city, split into narrower queries (per neighborhood or subcategory).",
                        "default": 20
                    },
                    "verifyEmails": {
                        "title": "Verify Emails (MX check)",
                        "type": "boolean",
                        "description": "Contact enrichment is always on — the actor visits each business website (homepage + high-yield contact pages, with de-obfuscation) to extract public emails and social links. When this is enabled, every harvested email is also MX-verified (does the domain accept mail?) and flagged valid / role / risky / invalid, with the best one surfaced as primary_email. Default: on.",
                        "default": true
                    },
                    "language": {
                        "title": "Language",
                        "enum": [
                            "en",
                            "es",
                            "fr",
                            "de",
                            "it",
                            "pt",
                            "ja",
                            "ko",
                            "zh"
                        ],
                        "type": "string",
                        "description": "Two-letter BCP-47 language code for result language. Default: 'en' (English).",
                        "default": "en"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "gb",
                            "ca",
                            "au",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "jp",
                            "br",
                            "mx",
                            "in"
                        ],
                        "type": "string",
                        "description": "Two-letter ISO country code for result localisation (affects which businesses appear in results). Default: 'us'.",
                        "default": "us"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
