# Google Maps Scraper | $1 per 1,000 places (`fancyboeing/my-actor`) Actor

Extract Google Maps business listings — name, address, phone, website,
rating, coordinates, opening hours and Place ID. No browser, no proxy
needed. 190+ places per search, 500 places in under a minute.
Works worldwide: tested on Latin, Cyrillic and Thai scripts.

- **URL**: https://apify.com/fancyboeing/my-actor.md
- **Developed by:** [Mike Moros](https://apify.com/fancyboeing) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 place scrapeds

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/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 Scraper — $1 / 1,000 places, no browser

Extract business listings from Google Maps: **name, category, full address, phone, website, rating, coordinates, Place ID, opening status, district and more** — 23 fields per record. Export to JSON, CSV or Excel, or pull it through the API.

No browser. No API key. No proxy needed at normal volume.

### Measured performance

These are numbers from real runs, not estimates:

| | |
|---|---|
| 484 places, 2 search terms × 2 cities | **46 seconds** |
| 193 places, single search | **21 seconds** |
| Phone number fill rate | **~82%** |
| Compute cost per 1,000 places | **fractions of a cent** |

The reason it is this cheap: it talks to the same endpoint the Google Maps front end uses, over plain HTTP. Browser-based scrapers spend minutes of CPU and residential-proxy bandwidth on work this Actor does in seconds.

### Why this one

**Your limit is a limit.** `maxItemsPerQuery` and `maxTotalItems` are checked in code before every single push. There is no code path that produces item N+1. When the global cap is hit, the remaining searches are skipped and never billed.

**You are never billed twice for the same place.** Google's result pages overlap. Deduplication runs across the whole run, not per page — a page containing only places already collected is logged as "not billed" and skipped.

**No junk rows.** Google returns the searched region itself as an entity ("Prague, Czechia" with no category, address or rating). Those are dropped rather than billed as a business.

**The cost ceiling is printed before any request is made:**
````

Plan: 2 term(s) x 2 location(s) = 4 search(es), up to 300 each,
global cap 600 -> at most 600 billable results. The run cannot exceed this number.

````

### Quick start

1. **Search term(s)** — `coffee shop`, `dentist`, `shoe repair`. One per line, **without the city**.
2. **Location(s)** — `Prague, Czechia`, `Miami, FL, USA`. One per line.
3. **Max results** — 20 for a test, 500+ for a lead list.

Every term is searched in every location: 3 terms × 4 cities = 12 searches.

Keep the city out of the search term. A term that already names a place makes Google run the location as a second search and return fewer results.

### Output

```json
{
  "name": "The Miners Coffee Old Town",
  "category": "Coffee shop, Cafe, Coffee store",
  "rating": 4.7,
  "address": "Železná 490/14, 110 00 Staré Město, Czechia",
  "phone": "+420 605 439 645",
  "website": "https://www.theminers.eu/e-shop",
  "latitude": 50.0863821,
  "longitude": 14.4218181,
  "placeId": "ChIJ3XqKYCGVC0cRYE5lAu_5hSY",
  "cid": "2775899550276472416",
  "neighbourhood": "Old Town",
  "district": null,
  "countryCode": "CZ",
  "timezone": "Europe/Prague",
  "openingHoursToday": ["Monday 8:30 AM–7:30 PM"],
  "status": "Open · Closes 7:30 PM",
  "permanentlyClosed": false,
  "photoUrl": "https://lh3.googleusercontent.com/...",
  "googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ3XqK..."
}
````

Works internationally out of the box — Czech and US records above came from the same run, with correct local address and phone formats.

### Limitations — stated here, not discovered on your bill

- **About 190 places per single search.** That is Google's ceiling, not this Actor's. To go past it, split the area into neighbourhoods or postcodes and give each as its own line in Location(s).
- **Phone numbers: roughly 82% coverage.** The search endpoint does not carry a phone for every listing. Full coverage requires one extra request per place, which is a planned paid add-on rather than something hidden in the base price.
- **`reviewCount` is not populated.** The rating comes through; the review total is not in this endpoint's response. Same add-on as above.
- **`openingHoursToday` is today only.** The full week needs the per-place request.
- **`district` is best-effort.** Google mixes the district into the category list; it is split back out by name pattern, so an unusual district name may stay in `category`.
- **Google changes its response shape periodically.** Extraction is signature-based rather than index-based, so a change costs one field instead of the whole run — but it still needs occasional maintenance. That is inherent to scraping Maps.
- **Emails are not on Google Maps.** They live on the business's own website. Chain a website crawler onto the `website` field, or wait for the contact-enrichment add-on.

### Legal

This collects publicly visible business information. How you use it is your responsibility — check your obligations under GDPR/CCPA before using scraped contact data for outreach. This is not legal advice.

### Publishing notes (for the Actor owner)

- Pricing: `PAY_PER_EVENT`, event name **`result`** (already wired via `Actor.charge`), suggested **$0.001/place = $1 per 1,000**. Competitors at this tier charge $1–2.50; the incumbent charges $4.
- Put the price in the title — every successful low-cost competitor does: `Google Maps Scraper | $1/1k Places`.
- Fill in `seoTitle` and `seoDescription`; Store search weights them heavily.
- Verify the default input runs successfully with no changes — that is what most first-time visitors click.

# Actor input Schema

## `searchTerms` (type: `array`):

What you would type into Google Maps — <code>dentist</code>, <code>coffee shop</code>, <code>plumber</code>. One per line.<br><br><b>Leave the city out of the term</b> and put it in Location(s) below. A term that already names a place makes Google search for it twice and return fewer results.

## `locations` (type: `array`):

One complete location per line — <code>Prague, Czechia</code>, <code>Brooklyn, New York, USA</code>. Every term is searched in every location, so 3 terms × 4 cities = 12 searches.

## `maxItemsPerQuery` (type: `integer`):

Cap per term-and-location combination, enforced in code — the Actor stops the moment it is reached and never bills you for more. Use 20 for a quick test, 500+ for city-scale lead lists.<br><br>Google returns roughly 20 places per request and caps a single search at about 120; split a city into neighbourhoods to go past that.

## `maxTotalItems` (type: `integer`):

Hard ceiling across every search. <b>This is your spend control.</b> When it is reached, remaining searches are skipped and never billed.

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

Interface language Google answers in. It changes names, categories, addresses and the opening-status text — and it also changes which places Google ranks highly, so it is worth matching the local language of the target city.

## `additionalLanguages` (type: `array`):

Optional. Runs each search again in these languages — and, crucially, <b>translates the search term</b> rather than only switching the interface language.<br><br>Measured on real runs: a Thai <i>term</i> over Hua Hin returned <b>27% more</b> businesses than English alone, while merely switching the interface language returned <b>zero</b> extra places. Translation is what works.<br><br>Built-in terms cover 12 languages (th, ru, es, de, fr, pt, it, pl, cs, tr, id, vi) for ~50 common business types. A term with no translation is <b>skipped, not repeated</b>, so you never pay for a duplicate pass. Overlap between languages is deduplicated and never billed twice.

## `locationBias` (type: `string`):

Optional <code>latitude,longitude</code> to centre the search, e.g. <code>50.0755,14.4378</code>. Leave empty to let the Location text define the area.

## `searchQueries` (type: `array`):

Older single-field format, e.g. <code>coffee shop in Prague</code>. Still works, but Search term + Location returns more places.

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

Optional. This Actor sends plain HTTP requests rather than driving a browser, so it works without a proxy at low volume. Enable a proxy for large or repeated runs.

## Actor input object example

```json
{
  "searchTerms": [
    "coffee shop"
  ],
  "locations": [
    "Prague, Czechia"
  ],
  "maxItemsPerQuery": 50,
  "maxTotalItems": 500,
  "language": "en",
  "additionalLanguages": [],
  "locationBias": "",
  "searchQueries": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `places` (type: `string`):

All scraped business listings.

# 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 = {
    "searchTerms": [
        "coffee shop"
    ],
    "locations": [
        "Prague, Czechia"
    ],
    "additionalLanguages": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("fancyboeing/my-actor").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 = {
    "searchTerms": ["coffee shop"],
    "locations": ["Prague, Czechia"],
    "additionalLanguages": [],
}

# Run the Actor and wait for it to finish
run = client.actor("fancyboeing/my-actor").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 '{
  "searchTerms": [
    "coffee shop"
  ],
  "locations": [
    "Prague, Czechia"
  ],
  "additionalLanguages": []
}' |
apify call fancyboeing/my-actor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Maps Scraper | $1 per 1,000 places",
        "description": "Extract Google Maps business listings — name, address, phone, website,\nrating, coordinates, opening hours and Place ID. No browser, no proxy\nneeded. 190+ places per search, 500 places in under a minute.\nWorks worldwide: tested on Latin, Cyrillic and Thai scripts.",
        "version": "0.0",
        "x-build-id": "IkWElWAjdbjeaC02u"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fancyboeing~my-actor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fancyboeing-my-actor",
                "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/fancyboeing~my-actor/runs": {
            "post": {
                "operationId": "runs-sync-fancyboeing-my-actor",
                "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/fancyboeing~my-actor/run-sync": {
            "post": {
                "operationId": "run-sync-fancyboeing-my-actor",
                "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": [
                    "maxItemsPerQuery",
                    "maxTotalItems"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "🔍 Search term(s)",
                        "type": "array",
                        "description": "What you would type into Google Maps — <code>dentist</code>, <code>coffee shop</code>, <code>plumber</code>. One per line.<br><br><b>Leave the city out of the term</b> and put it in Location(s) below. A term that already names a place makes Google search for it twice and return fewer results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "📍 Location(s)",
                        "type": "array",
                        "description": "One complete location per line — <code>Prague, Czechia</code>, <code>Brooklyn, New York, USA</code>. Every term is searched in every location, so 3 terms × 4 cities = 12 searches.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItemsPerQuery": {
                        "title": "💯 Max results per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap per term-and-location combination, enforced in code — the Actor stops the moment it is reached and never bills you for more. Use 20 for a quick test, 500+ for city-scale lead lists.<br><br>Google returns roughly 20 places per request and caps a single search at about 120; split a city into neighbourhoods to go past that.",
                        "default": 50
                    },
                    "maxTotalItems": {
                        "title": "🛑 Max results total",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Hard ceiling across every search. <b>This is your spend control.</b> When it is reached, remaining searches are skipped and never billed.",
                        "default": 500
                    },
                    "language": {
                        "title": "🌍 Language",
                        "enum": [
                            "en",
                            "cs",
                            "sk",
                            "de",
                            "es",
                            "pt",
                            "fr",
                            "it",
                            "nl",
                            "pl",
                            "ru",
                            "uk",
                            "kk",
                            "tr",
                            "ro",
                            "hu",
                            "el",
                            "bg",
                            "sr",
                            "hr",
                            "sv",
                            "no",
                            "da",
                            "fi",
                            "et",
                            "lv",
                            "lt",
                            "ar",
                            "he",
                            "fa",
                            "hi",
                            "bn",
                            "th",
                            "vi",
                            "id",
                            "ms",
                            "tl",
                            "ja",
                            "ko",
                            "zh-CN",
                            "zh-TW"
                        ],
                        "type": "string",
                        "description": "Interface language Google answers in. It changes names, categories, addresses and the opening-status text — and it also changes which places Google ranks highly, so it is worth matching the local language of the target city.",
                        "default": "en"
                    },
                    "additionalLanguages": {
                        "title": "➕ Extra language passes (finds more places)",
                        "type": "array",
                        "description": "Optional. Runs each search again in these languages — and, crucially, <b>translates the search term</b> rather than only switching the interface language.<br><br>Measured on real runs: a Thai <i>term</i> over Hua Hin returned <b>27% more</b> businesses than English alone, while merely switching the interface language returned <b>zero</b> extra places. Translation is what works.<br><br>Built-in terms cover 12 languages (th, ru, es, de, fr, pt, it, pl, cs, tr, id, vi) for ~50 common business types. A term with no translation is <b>skipped, not repeated</b>, so you never pay for a duplicate pass. Overlap between languages is deduplicated and never billed twice.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "locationBias": {
                        "title": "📡 Coordinate bias (optional)",
                        "type": "string",
                        "description": "Optional <code>latitude,longitude</code> to centre the search, e.g. <code>50.0755,14.4378</code>. Leave empty to let the Location text define the area.",
                        "default": ""
                    },
                    "searchQueries": {
                        "title": "🔗 Legacy: combined queries",
                        "type": "array",
                        "description": "Older single-field format, e.g. <code>coffee shop in Prague</code>. Still works, but Search term + Location returns more places.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy",
                        "type": "object",
                        "description": "Optional. This Actor sends plain HTTP requests rather than driving a browser, so it works without a proxy at low volume. Enable a proxy for large or repeated runs.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
