# Google Maps Email & Social Enricher (`coregent/google-maps-email-social-enricher`) Actor

Find emails and social profiles for businesses on Google Maps. Enriches each listing with up to four social profiles (LinkedIn, Facebook, Instagram, Twitter) and emails surfaced from the business website's home, contact, and about pages. Pay-per-lead pricing, CSV-friendly flat output.

- **URL**: https://apify.com/coregent/google-maps-email-social-enricher.md
- **Developed by:** [Delowar Munna](https://apify.com/coregent) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 5 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 lead-results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Email & Social Enricher

![Google Maps Email & Social Enricher](https://raw.githubusercontent.com/coregentdevspace/google-maps-email-social-enricher-assets/main/thumbnail-google-maps-email-social-enricher.jpg)

Find emails, social profiles, and contact data for businesses discovered on Google Maps. Bridges the gap between a physical Google Maps listing and digital outreach (email + social) — built for **B2B cold outreach, lead-gen agencies, and local-SEO marketers**.

V1 stays deliberately shallow on the website side (homepage + a small number of likely contact / about pages, capped by `maxCrawledPages`) so runs are fast and cost-predictable. You pay one flat event per business pushed to the dataset that contains at least one of: website, email, or social link.

### ✨ Why this scraper

- **Maps + website in one pass** — 16 flat fields per business covering Google Maps metadata plus emails and four social profiles.
- **Shallow by design** — homepage + up to `maxCrawledPages-1` extra contact / about pages per site. No deep crawling, no AI, no review scraping.
- **Pay-Per-Event** — one flat `lead-result` event per saved business that has at least one contact point. Empty rows are pushed for completeness but never charged.
- **Place URLs and search queries** — supply queries, direct Google Maps URLs, or both.
- **CSV-friendly output** — flat structure, no nested objects, drops cleanly into Sheets / Excel / CRMs.

---

### 🚀 Quick start — sample inputs

#### Example 1 — single query

```json
{
    "queries": ["Digital Marketing Agency London"],
    "maxResults": 10,
    "extractEmails": true,
    "extractSocials": true,
    "maxCrawledPages": 3,
    "proxyConfiguration": { "useApifyProxy": true }
}
````

#### Example 2 — mix queries with direct Maps URLs, custom residential via your own provider

```json
{
    "queries": ["Plumbers in Brooklyn", "Electricians in Sydney NSW"],
    "startUrls": [
        "https://www.google.com/maps/place/?q=place_id:ChIJN1t_tDeuEmsRUoP3ySjGub4",
        "https://www.google.com/maps/search/dentists+in+melbourne+vic"
    ],
    "maxResults": 200,
    "extractEmails": true,
    "extractSocials": true,
    "maxCrawledPages": 3,
    "deDuplication": true,
    "proxyConfiguration": {
        "useApifyProxy": false,
        "proxyUrls": ["http://user:pass@proxy.iproyal.com:12321"]
    }
}
```

> The actor blocks Apify Residential proxy; if you need residential routing, supply your own provider via `proxyConfiguration.proxyUrls` as shown. See **🚦 Proxy policy** below.

***

### 📦 Output

The dataset has one view: **Business leads** — a 16-column flat table. Every row is the same shape; fields that were not found are returned as `""`.

![Business leads — table view](https://raw.githubusercontent.com/coregentdevspace/google-maps-email-social-enricher-assets/main/google-maps-email-social-enricher-output-all-fields-table-view.png)

#### Output fields (16)

`placeId`, `title`, `website`, `phone`, `emails`, `linkedin`, `facebook`, `instagram`, `twitter`, `category`, `address`, `city`, `zipCode`, `mapUrl`, `scraped_at`, `is_enriched`.

#### Sample record — Business leads

```json
{
    "placeId": "0x48761b292e45619f:0x9aca541f20fc060",
    "title": "Influence Digital",
    "website": "https://influence.digital/",
    "phone": "+44 20 7034 2669",
    "emails": "info@influence.digital",
    "linkedin": "https://linkedin.com/company/the-united-agency",
    "facebook": "https://facebook.com/InfluenceDGTL",
    "instagram": "https://instagram.com/influencedgtl",
    "twitter": "https://twitter.com/InfluenceDGTL",
    "category": "Marketing agency",
    "address": "Second Home Spitalfields, 68 Hanbury St",
    "city": "",
    "zipCode": "",
    "mapUrl": "https://www.google.com/maps/place/Influence+Digital/data=!4m7!3m6!1s0x48761b292e45619f:0x9aca541f20fc060!8m2!3d51.5200292!4d-0.0703168!16s%2Fg%2F11btm9p_tl!19sChIJn2FFLikbdkgRYMAP8kGlrAk",
    "scraped_at": "2026-05-10T01:06:39.345Z",
    "is_enriched": true
}
```

`is_enriched` is `true` whenever the row has at least one of: `website`, `emails`, `linkedin`, `facebook`, `instagram`, `twitter`. The `lead-result` event is charged only for enriched rows.

***

### 💰 Pricing

**Pay-Per-Event**. One flat event per saved row that has any contact point (final per-event price is configured on the Apify console):

| Event         | Charged when                                                                                                            |
| ------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `lead-result` | Once per business pushed to the dataset that contains at least one of: `website`, `emails`, or any social profile URL.  |

So your bill is `count_of_enriched_rows × price_per_event`.

The actor honours the user-configured per-run spending cap (Apify `eventChargeLimitReached`) and stops cleanly when reached.

#### Not charged

- Rows with no website, no email, and no social link — pushed for completeness, but `is_enriched: false` and not billed.
- Duplicates (de-duplicated by Google Place ID).
- Rows missing a `title` (filtered out).
- Failed dataset pushes.
- Failed website fetches when no contact data was found.
- Anything after the per-run spending cap is reached.

#### 🚦 Proxy policy

Use **Apify Datacenter** proxy or **no proxy** for normal runs — both work reliably for Google Maps search and shallow website fetches at this actor's conservative concurrency.

**Apify Residential proxy is not supported.** The actor will fail at startup if `proxyConfiguration.apifyProxyGroups` includes `RESIDENTIAL`. Reason: in pay-per-event actors, residential bandwidth (~/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.

If you genuinely need residential routing, supply your own residential provider via the proxy editor's **Custom proxy URLs** field — that traffic goes through your provider, not Apify, and is unaffected:

```
http://user:pass@proxy.iproyal.com:12321
http://user:pass@proxy.brightdata.com:22225
http://user:pass@proxy.oxylabs.io:7777
```

***

### 📊 Run summary

After each run, a `RUN_SUMMARY` entry is written to the key-value store:

```json
{
    "inputs_total": 2,
    "businesses_found": 100,
    "websites_enriched": 68,
    "emails_found": 75,
    "charged_events": 60,
    "runtime_seconds": 240,
    "scraped_at": "2026-05-09T00:00:00.000Z"
}
```

`charged_events` always equals the number of dataset rows where `is_enriched === true` (and is bounded by the user's spending cap).

***

### ⚙️ Inputs

| Field                  | Type    | Default                       | Purpose                                                               |
| ---------------------- | ------- | ----------------------------- | --------------------------------------------------------------------- |
| `queries`              | Array   | `[]`                          | Google Maps search terms.                                             |
| `startUrls`            | Array   | `[]`                          | Direct Google Maps place URLs or search URLs.                         |
| `maxResults`           | Integer | `50`                          | Run-wide cap on businesses processed (hard ceiling 5000).             |
| `extractEmails`        | Boolean | `true`                        | Scan website pages for email addresses.                               |
| `extractSocials`       | Boolean | `true`                        | Detect LinkedIn / Facebook / Instagram / Twitter URLs.                |
| `maxCrawledPages`      | Integer | `3`                           | Pages fetched per business website (homepage + contact / about).      |
| `proxyConfiguration`   | Object  | `{ "useApifyProxy": true }`   | Apify Proxy settings (Apify Residential is rejected at startup).      |
| `deDuplication`        | Boolean | `true`                        | Skip duplicate businesses by Google Place ID.                         |

At least one of `queries` or `startUrls` must be provided.

***

### 🚧 Limitations (V1)

- **Cards-only Maps extraction** for search queries: V1 reads each business directly from the search results panel and does not click into individual place detail panels. Phone, website, full address, and `placeId` only appear when Google surfaces them on the card. Direct Maps place URLs (via `startUrls`) read the full panel.
- **Shallow website extraction**: homepage + up to `maxCrawledPages-1` extra pages (default 3 total). No deep crawling, no JS-rendered pages.
- **No email verification**, deliverability checks, or AI scoring.
- **No phone-number enrichment from the website** (only the Maps phone is included).
- **No login / cookie / session-based scraping.**
- **Address parsing into city / zipCode is best-effort**; the full `address` field is the source of truth.
- **Per-run hard cap is 5000 results**; per-website page cap is 5.

***

### 🛠️ Technical notes

- **Stack**: Node.js 18+ · Apify SDK 3 · Crawlee · Puppeteer (Maps) · Cheerio + native `fetch` (websites).
- **Concurrency**: Maps `min=1`, `max=3` (conservative); website pool `=5`.
- **Memory**: 1 GB min · 2 GB default · 4 GB max.
- **Per-page timeout**: 15s; per-business budget: 45s; Maps handler timeout: 120s.
- **Diagnostics**: On the first Maps render failure (no feed, zero cards, or no place panel), the actor saves the page HTML and URL to the key-value store as `debug-no-feed-html` / `debug-zero-cards-html` / `debug-no-place-panel-html`.

# Actor input Schema

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

List of Google Maps search terms (for example, "Plumbers in Brooklyn" or "Digital Marketing Agency London"). One row per search.

## `startUrls` (type: `array`):

Direct Google Maps URLs to scrape. Each entry can be either a place URL (https://www.google.com/maps/place/...) or a search URL (https://www.google.com/maps/search/...). Provide queries, startUrls, or both.

## `maxResults` (type: `integer`):

Run-wide limit on the number of businesses processed. Hard cap 5000.

## `extractEmails` (type: `boolean`):

Search each business website for email addresses (homepage + ranked contact/about pages).

## `extractSocials` (type: `boolean`):

Detect LinkedIn, Facebook, Instagram, and Twitter / X profile URLs on each business website.

## `maxCrawledPages` (type: `integer`):

Upper bound on pages fetched per business website (homepage plus contact/about). Hard cap 5.

## `deDuplication` (type: `boolean`):

Skip duplicate businesses found across overlapping search results, using Google Place ID as the dedup key.

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

Apify Proxy configuration. Defaults to Apify Proxy enabled. Apify Residential is NOT supported and will fail the run at startup; if you need residential routing, supply your own provider via Custom proxy URLs (proxyUrls).

## Actor input object example

```json
{
  "queries": [
    "Digital Marketing Agency London"
  ],
  "startUrls": [],
  "maxResults": 50,
  "extractEmails": true,
  "extractSocials": true,
  "maxCrawledPages": 3,
  "deDuplication": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Flat 16-field table of every business row pushed to the dataset: Google Maps metadata (placeId, title, website, phone, category, address, city, zipCode, mapUrl) plus enrichment fields (emails, linkedin, facebook, instagram, twitter) and an is\_enriched boolean indicating whether at least one website, email, or social link was found.

# 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": [
        "Digital Marketing Agency London"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("coregent/google-maps-email-social-enricher").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": ["Digital Marketing Agency London"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("coregent/google-maps-email-social-enricher").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": [
    "Digital Marketing Agency London"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call coregent/google-maps-email-social-enricher --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Email & Social Enricher",
        "description": "Find emails and social profiles for businesses on Google Maps. Enriches each listing with up to four social profiles (LinkedIn, Facebook, Instagram, Twitter) and emails surfaced from the business website's home, contact, and about pages. Pay-per-lead pricing, CSV-friendly flat output.",
        "version": "1.0",
        "x-build-id": "bw42Dj1G0s3hd71hD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/coregent~google-maps-email-social-enricher/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-coregent-google-maps-email-social-enricher",
                "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/coregent~google-maps-email-social-enricher/runs": {
            "post": {
                "operationId": "runs-sync-coregent-google-maps-email-social-enricher",
                "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/coregent~google-maps-email-social-enricher/run-sync": {
            "post": {
                "operationId": "run-sync-coregent-google-maps-email-social-enricher",
                "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",
                "properties": {
                    "queries": {
                        "title": "Search queries",
                        "type": "array",
                        "description": "List of Google Maps search terms (for example, \"Plumbers in Brooklyn\" or \"Digital Marketing Agency London\"). One row per search.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Direct Google Maps URLs to scrape. Each entry can be either a place URL (https://www.google.com/maps/place/...) or a search URL (https://www.google.com/maps/search/...). Provide queries, startUrls, or both.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Run-wide limit on the number of businesses processed. Hard cap 5000.",
                        "default": 50
                    },
                    "extractEmails": {
                        "title": "Extract emails",
                        "type": "boolean",
                        "description": "Search each business website for email addresses (homepage + ranked contact/about pages).",
                        "default": true
                    },
                    "extractSocials": {
                        "title": "Extract social links",
                        "type": "boolean",
                        "description": "Detect LinkedIn, Facebook, Instagram, and Twitter / X profile URLs on each business website.",
                        "default": true
                    },
                    "maxCrawledPages": {
                        "title": "Max pages per website",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Upper bound on pages fetched per business website (homepage plus contact/about). Hard cap 5.",
                        "default": 3
                    },
                    "deDuplication": {
                        "title": "Deduplicate by Place ID",
                        "type": "boolean",
                        "description": "Skip duplicate businesses found across overlapping search results, using Google Place ID as the dedup key.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy configuration. Defaults to Apify Proxy enabled. Apify Residential is NOT supported and will fail the run at startup; if you need residential routing, supply your own provider via Custom proxy URLs (proxyUrls).",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
