# Restaurant Email Scraper (`contacts-api/restaurant-email-scraper`) Actor

Restaurant email scraper to extract verified emails from restaurants, cafés, and food service businesses 📧🍽️ Perfect for B2B outreach, supplier partnerships, and restaurant industry lead generation.

- **URL**: https://apify.com/contacts-api/restaurant-email-scraper.md
- **Developed by:** [Lead Heaven](https://apify.com/contacts-api) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

### 🍽️ Restaurant Email Scraper — Find Verified Contacts For Any City

> The fastest way to build a targeted restaurant list with verified contacts. This actor searches Google Maps for restaurants in any location, crawls their websites, and extracts restaurant email addresses, phone numbers, and social media profiles — delivering clean, export-ready data for restaurant leads.

---

#### 🚀 Quick Start

1. Enter your search term — e.g., "Italian restaurants", "sushi bar", "pizza takeaway"
2. Add one or more target locations — e.g., "New York", "Miami, Florida", "Los Angeles, CA"
3. Set your desired number of businesses with emails
4. Hit Run and get your results in minutes

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

---

#### 💡 What Is The Restaurant Email Scraper?

The Restaurant Email Scraper is a purpose-built lead generation and contact discovery tool for suppliers, agencies, and platforms serving the hospitality industry. It combines Google Maps discovery with deep website crawling to extract publicly available contact data and produce a high-quality restaurant list you can use right away.

Whether you need a restaurant lead finder for prospecting, a restaurant contact scraper for pulling emails and phones, or a restaurant data scraper for broader enrichment — this all-in-one workflow makes it simple. Use it as your restaurant email finder to surface inboxes, as a restaurant email extractor to collect addresses at scale, or as a restaurant lead scraper to create segmentable outreach lists for any cuisine or city.

---

#### 📦 What Data Does It Extract?

| Field | Description |
|---|---|
| Business Name | Official restaurant or venue name from Google Maps |
| Website | Website URL if listed or discovered |
| Phone | Primary phone from the listing or website |
| Full Address | Complete address as listed |
| City / State / ZIP | Parsed location components |
| Country Code | ISO country code where available |
| Emails | All public restaurant email addresses extracted from site pages |
| Additional Phones | Extra phone numbers discovered during crawl |
| Social Media Links | Facebook, Instagram, LinkedIn, X/Twitter, and more |
| Email Count | Total unique emails found per business |
| Pages Scraped | Number of website pages crawled per domain |
| Rating | Average Google Maps star rating |
| Reviews | Total number of Google reviews |
| Latitude / Longitude | Geo-coordinates for mapping and filtering |
| Place ID | Google Maps place identifier |
| Scrape Status | Per-record status: success, partial, or error |

---

#### ⚙️ Input Configuration

##### Minimal Example

```json
{
  "googleMapsSearchTerm": "Restaurant",
  "googleMapsLocation": ["New York"],
  "maxBusinesses": 50
}
````

##### Full Example with All Options

```json
{
  "googleMapsSearchTerm": "Italian restaurant",
  "googleMapsLocation": [
    "New York",
    "Miami, Florida",
    "Los Angeles, California"
  ],
  "maxBusinesses": 200,
  "scrapeMaxBusinessesPerLocation": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

##### Input Parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| googleMapsSearchTerm | String | ✅ Yes | Business type to search — e.g., "Restaurant", "Italian restaurant", "sushi bar" |
| googleMapsLocation | Array | ✅ Yes | One or more locations — e.g., \["New York", "Austin, Texas"] |
| maxBusinesses | Number | ✅ Yes | Max businesses with emails to return (1–1,000). The run stops when reached |
| scrapeMaxBusinessesPerLocation | Boolean | ❌ No | If true, applies the cap per location. If false, applies a combined total across all locations |
| proxyConfiguration | Object | ❌ No | Proxy settings. Strongly recommended for larger or multi-city runs |

***

#### 📤 Sample Output

```json
[
  {
    "name": "Trattoria Verde",
    "website": "https://www.trattoriaverde.com",
    "phone": "+1 212-555-0199",
    "full_address": "145 W 29th St, New York, NY 10001, United States",
    "city": "New York",
    "state": "NY",
    "zip": "10001",
    "country_code": "US",
    "scraped_emails": [
      "info@trattoriaverde.com",
      "events@trattoriaverde.com"
    ],
    "scraped_phones": ["+1 212-555-0199", "+1 212-555-0144"],
    "scraped_social_media": [
      "facebook:https://facebook.com/trattoriaverdenyc",
      "instagram:https://instagram.com/trattoriaverde"
    ],
    "emails_found": 2,
    "pages_scraped": 12,
    "avg_rating": 4.6,
    "total_reviews": 382,
    "lat": 40.7489,
    "long": -73.9912,
    "place_id": "ChIJ-EXAMPLE-PLACEID",
    "scrape_status": "success"
  }
]
```

***

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

```
Step 1 → Search Google Maps with your term + location(s)
Step 2 → Collect restaurant listings (name, address, phone, website)
Step 3 → Visit each website and crawl key pages (Home, Menu, Contact, About)
Step 4 → Extract public emails, phones, and social media links
Step 5 → Deduplicate and normalize all contact data
Step 6 → Return structured results ready for export or API consumption
```

This flow doubles as a reliable restaurant email extractor and a scalable restaurant contact scraper in one automated run.

***

#### ✨ Key Features

##### 🎯 Precise Location Targeting

Pinpoint any neighborhood, city, state, or region. Great for building localized restaurant leads for outreach or deliveries.

##### 🔍 Deep Website Crawl

Goes beyond the listing. Crawls homepages, contact pages, menus, footers, and policy pages to surface every public restaurant email and phone number.

##### 🌎 Multi-Location Scaling

Run across dozens of cities at once. Choose a combined cap or a per-location cap — perfect for a large multi-market restaurant list.

##### 🧹 Smart De-Duplication

Automatically removes duplicate emails per domain so your lists stay clean and compliant for prospecting.

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

Normalized fields make importing seamless into HubSpot, Salesforce, Apollo, or your outreach tools — ideal for any restaurant lead scraper workflow.

##### 🛡️ Proxy-Ready for Reliability

Built-in proxy support prevents rate-limiting and IP blocks, enabling dependable large-scale runs of your restaurant data scraper campaigns.

##### ⏱️ Stop at Your Target

The run halts as soon as your maxBusinesses limit is reached — no wasted compute, no overage.

##### 🔄 Schedulable & Repeatable

Schedule recurring runs to keep your restaurant leads fresh and continuously expand your coverage.

***

#### 🎯 Use Cases

##### 💼 B2B Sales & Vendor Prospecting

- Food distributors, POS providers, reservation systems, and HR/Payroll vendors can build targeted restaurant leads by cuisine, price range, or neighborhood.
- Use as a restaurant lead finder to generate clean, segmented lists for SDR teams.

##### 📣 Marketing Agencies & Local SEO

- Create geo-targeted campaigns with verified emails and phones pulled directly from websites.
- Deploy as a restaurant contact finder to enrich existing accounts and kickstart outreach.

##### 🧾 Events, Catering, and Partnerships

- Identify venues for catering partnerships or private dining outreach.
- Treat it like a restaurant email finder to source event inboxes and manager contacts.

##### 📱 Delivery, Marketplace, and SaaS Platforms

- Expand merchant acquisition by scraping new regions or categories.
- Combine this restaurant contact scraper with your onboarding workflow to speed up go-to-market.

##### 📚 Research & Competitive Intelligence

- Build a restaurant list for market studies, directory building, or mapping projects.
- Leverage the restaurant data scraper capabilities for continuous enrichment.

***

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

Scale from a small prospect list to a regional database — results depend on:

- Number of locations added
- Search term breadth (narrow vs. broad niche)
- Website density and email visibility in each market
- maxBusinesses setting and per-location vs. combined mode
- Proxy configuration and run timeout

Typical Output Ranges:

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

Run across different regions to steadily grow your restaurant leads without hitting platform limits.

***

#### 🔌 Integrations & Export Options

Once your run completes, you can:

- JSON: Full structured data download
- CSV / Excel: Import directly into spreadsheets
- Apify API: Stream results into your own apps or workflows
- Zapier / Make: Trigger automations when new leads are found
- Webhooks: Push results to your CRM or pipeline on run completion

Plug directly into Instantly, Smartlead, Apollo, HubSpot, Salesforce, or any stack that accepts CSV/JSON. Ideal for powering a restaurant lead scraper pipeline end to end.

***

#### 🛠️ Step-By-Step Usage Guide

- Step 1 — Log in to Apify
  Create a free account or sign in at apify.com.

- Step 2 — Open the Actor
  Search for "Restaurant Email Scraper" in the Apify Store and click Try for free.

- Step 3 — Set Your Search Term
  Enter "Restaurant" or a niche variant like "Italian restaurant", "sushi bar", "vegan cafe", "tapas".

- Step 4 — Add Target Locations
  Enter one or more cities/regions — e.g., "New York", "Austin, Texas", "Toronto".

- Step 5 — Set Your Limit
  Choose how many businesses with emails you want — 20 for a quick test, up to 1,000 for a full campaign.

- Step 6 — Choose Scaling Strategy
  • Combined cap: The total across all locations combined
  • Per-location cap: Applies your limit independently to each city

- Step 7 — Enable Proxies
  Turn on Apify Proxy for stable, uninterrupted crawling at scale.

- Step 8 — Run 🚀
  Click Start and let the restaurant email scraper do the work.

- Step 9 — Export
  Download as JSON, CSV, or Excel — or pull via API straight into your stack.

***

#### ⚖️ Legal & Compliance

This actor collects only publicly available business contact information — restaurant email addresses and phone numbers published openly on websites.

Best practices to stay compliant:

- Only use publicly visible contact data
- Do not bypass login walls or paywalls
- Respect each website's robots.txt and Terms of Service
- Include an unsubscribe option in all outreach
- Follow applicable laws in your jurisdiction

Relevant regulations:

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

This tool is intended for ethical business prospecting only. You are responsible for how you use the data collected.

***

#### ❓ Frequently Asked Questions

- Does this scrape private or personal emails?
  No. It only extracts emails that are publicly visible on business websites — inboxes like info@, hello@, reservations@ — typical outputs for a restaurant email extractor.

- Can I search multiple cities in one run?
  Yes. Add as many locations as needed. Use per-location capping for even geographic distribution when building a restaurant list.

- Does it deduplicate results?
  Yes. Emails are deduplicated per domain to keep your restaurant leads accurate and clean.

- Can I schedule recurring runs?
  Absolutely. Use Apify's scheduler to refresh your restaurant list weekly or monthly.

- What niches does the search term support?
  Any Google Maps searchable term — try "Italian restaurant", "burger joint", "wine bar", "coffee shop", or "seafood restaurant". It’s flexible for your restaurant data scraper workflows.

- Are proxies required?
  Not for small runs, but strongly recommended for 200+ businesses or multi-city scrapes to avoid rate limits.

- How is this different from manual Google searching?
  Manual search is slow and inconsistent. This automates discovery, crawling, and extraction — acting as a restaurant lead finder, restaurant email finder, and restaurant contact finder in one run.

- Can agencies white-label or resell this?
  Yes. Agencies use it as a restaurant lead scraper for clients, delivering fresh outreach lists on a recurring basis.

- What if a business has no website?
  The actor still saves the listing data it finds (e.g., phone, address). Results with no discoverable emails will not count toward your maxBusinesses until an email is found, keeping your restaurant leads target-focused.

- Does it work outside the US?
  Yes. It supports global searches. Availability of restaurant email fields may vary by market and website practices.

***

#### 🧑‍💻 Support & Custom Solutions

Have a question, feature request, or need a custom build? We’re happy to help with:

- Custom input/output configurations
- Niche-specific adaptations (e.g., only fine dining, only takeout)
- Bulk or enterprise run support
- Integration assistance for CRMs or marketing tools

For any help or custom solution, contact via this mail: scrapermindapi@gmail.com

***

Built for vendors, agencies, and platforms that need accurate restaurant leads at scale — fast — powered by a reliable restaurant email scraper.

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

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

Proxy settings for scraping. Recommended for large-scale scraping.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Restaurant",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "googleMapsSearchTerm": "Restaurant",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("contacts-api/restaurant-email-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "googleMapsSearchTerm": "Restaurant",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("contacts-api/restaurant-email-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "googleMapsSearchTerm": "Restaurant",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call contacts-api/restaurant-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Restaurant Email Scraper",
        "description": "Restaurant email scraper to extract verified emails from restaurants, cafés, and food service businesses 📧🍽️ Perfect for B2B outreach, supplier partnerships, and restaurant industry lead generation.",
        "version": "1.0",
        "x-build-id": "bwhHjbeAcGLN8yXnp"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/contacts-api~restaurant-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-contacts-api-restaurant-email-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/contacts-api~restaurant-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-contacts-api-restaurant-email-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/contacts-api~restaurant-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-contacts-api-restaurant-email-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "googleMapsLocation",
                    "googleMapsSearchTerm"
                ],
                "properties": {
                    "googleMapsSearchTerm": {
                        "title": "Search Term",
                        "type": "string",
                        "description": "Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').",
                        "default": "Restaurant"
                    },
                    "googleMapsLocation": {
                        "title": "Location",
                        "type": "array",
                        "description": "Target geographic location for the email scraper (e.g., 'Miami, Florida').",
                        "default": [
                            "New York"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxBusinesses": {
                        "title": "Maximum Businesses With Emails",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Target number of businesses to find (1-1000). The scraper will stop when this target is reached.",
                        "default": 5
                    },
                    "scrapeMaxBusinessesPerLocation": {
                        "title": "Scrape Max Businesses Per Location",
                        "type": "boolean",
                        "description": "If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for scraping. Recommended for large-scale scraping."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
