# Yelp Scraper - Extract Business Data, Contacts & Reviews (`khadinakbar/yelp-scraper-all-in-one`) Actor

Scrape Yelp businesses at scale. Extract name, rating, reviews, price range, categories, address, phone, website, hours, GPS coordinates, claimed status, photos count and recent reviews. Supports keyword search mode and direct Yelp URL mode. Residential proxies recommended for production-scale use.

- **URL**: https://apify.com/khadinakbar/yelp-scraper-all-in-one.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, Real estate, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 yelp businesses

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## 🌟 Yelp Scraper — Extract Business Data, Contacts & Reviews

### What Does Yelp Scraper All-in-One Do?

Yelp Scraper All-in-One extracts complete business profiles from Yelp — including contact info, hours, ratings, price range, GPS coordinates, and optional user reviews — using either a keyword search or direct Yelp business URLs. No login, no API key, no cookies required.

### Why Use This Yelp Scraper?

- **All data in one run** — name, address, phone, website, hours, rating, reviews, coordinates, and more
- **Dual-input mode** — search by keyword + city OR scrape specific Yelp business URLs
- **Decoded website URLs** — Yelp wraps external links in a redirect; we decode them to give you the real business URL
- **Review extraction** — pull recent user reviews (author, star rating, date, full text) alongside business data
- **CRM-ready output** — clean JSON with consistent field names, null for missing data (never undefined)
- **No login required** — fully public data extraction

### What Data Can Yelp Scraper Extract?

| Field | Type | Example |
|-------|------|---------|
| `business_name` | string | `"Joe's Pizza"` |
| `yelp_url` | string | `"https://www.yelp.com/biz/joes-pizza-new-york"` |
| `yelp_business_id` | string | `"joes-pizza-new-york"` |
| `rating` | number | `4.5` |
| `review_count` | integer | `1247` |
| `price_range` | string | `"$$"` |
| `categories` | string[] | `["Pizza", "Italian"]` |
| `address` | string | `"7 Carmine St, New York, NY 10014"` |
| `street_address` | string | `"7 Carmine St"` |
| `city` | string | `"New York"` |
| `state` | string | `"NY"` |
| `zip_code` | string | `"10014"` |
| `country` | string | `"US"` |
| `phone` | string | `"(212) 366-1182"` |
| `website` | string | `"https://www.joespizzanyc.com"` |
| `hours` | object | `{"Mon": "11 AM – 11 PM"}` |
| `is_claimed` | boolean | `true` |
| `description` | string | `"Award-winning pizza since 1975..."` |
| `photos_count` | integer | `342` |
| `latitude` | number | `40.7308` |
| `longitude` | number | `-74.0021` |
| `reviews` | array | `[{author, rating, date, text}]` |
| `scraped_at` | ISO 8601 | `"2026-04-13T14:22:10.000Z"` |
| `source_url` | string | Yelp page URL |

### How to Scrape Yelp — Step-by-Step Tutorial

#### Mode 1: Search by Keyword + Location

This is the most common mode. Set `searchQuery` to what you're looking for and `location` to where.

**Example input:**
```json
{
    "searchQuery": "dentists",
    "location": "Chicago, IL",
    "maxResults": 100,
    "includeReviews": true,
    "maxReviewsPerBusiness": 5
}
````

This will search `yelp.com/search?find_desc=dentists&find_loc=Chicago%2C+IL`, paginate through results, visit each business page, and return full business profiles.

#### Mode 2: Scrape Direct Yelp URLs

Provide specific Yelp business page URLs when you already know which businesses you want to scrape.

**Example input:**

```json
{
    "startUrls": [
        { "url": "https://www.yelp.com/biz/nobu-new-york-city" },
        { "url": "https://www.yelp.com/biz/eleven-madison-park-new-york" },
        { "url": "https://www.yelp.com/biz/le-bernardin-new-york" }
    ],
    "includeReviews": true,
    "maxReviewsPerBusiness": 10
}
```

#### Mode 3: Lead Generation (B2B Use Case)

Build a prospect list of local service businesses:

```json
{
    "searchQuery": "plumbers",
    "location": "Dallas, TX",
    "maxResults": 200,
    "includeReviews": false
}
```

Then export to CSV and import directly into your CRM.

### Running via API

You can trigger this actor from your own code using the Apify API. Export scraped data, schedule runs, monitor progress, or integrate with other tools.

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

const client = new ApifyClient({ token: 'YOUR_APIFY_API_TOKEN' });

const run = await client.actor('USERNAME/yelp-scraper-all-in-one').call({
    searchQuery: 'coffee shops',
    location: 'Austin, TX',
    maxResults: 50,
    includeReviews: true,
    maxReviewsPerBusiness: 5,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Scraped ${items.length} businesses`);
console.log(items[0]);
```

### Pricing

This actor uses **pay-per-event pricing** — you only pay for results you receive.

| Results | Cost |
|---------|------|
| 10 businesses | $0.03 |
| 100 businesses | $0.30 |
| 500 businesses | $1.50 |
| 1,000 businesses | $3.00 |

**Price: $0.003 per business scraped** (80% goes to the developer, 20% to Apify platform).

Platform compute costs are separate and typically add $0.001–$0.005 per business depending on memory and run time.

### Input Parameters Reference

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `"restaurants"` | What to search for on Yelp |
| `location` | string | `"New York, NY"` | City, state, or ZIP to search in |
| `startUrls` | array | `[]` | Direct Yelp business URLs (overrides search) |
| `maxResults` | integer | `50` | Max businesses to scrape (1–1000) |
| `includeReviews` | boolean | `true` | Extract recent user reviews |
| `maxReviewsPerBusiness` | integer | `5` | Reviews per business (1–20) |
| `proxyType` | string | `"datacenter"` | Proxy strategy: datacenter / residential / none |

### Output Structure

Each scraped business is one JSON record in the output dataset. All fields are present on every record — missing data is returned as `null` (never undefined or empty string), which makes downstream data processing predictable.

**Sample output record:**

```json
{
    "business_name": "Joe's Pizza",
    "yelp_url": "https://www.yelp.com/biz/joes-pizza-new-york",
    "yelp_business_id": "joes-pizza-new-york",
    "rating": 4.5,
    "review_count": 1247,
    "price_range": "$",
    "categories": ["Pizza", "Italian"],
    "address": "7 Carmine St, New York, NY 10014, US",
    "street_address": "7 Carmine St",
    "city": "New York",
    "state": "NY",
    "zip_code": "10014",
    "country": "US",
    "phone": "(212) 366-1182",
    "website": "https://www.joespizzanyc.com",
    "hours": {
        "Mon": "10:00 AM - 4:00 AM",
        "Tue": "10:00 AM - 4:00 AM",
        "Sun": "10:00 AM - 4:00 AM"
    },
    "is_claimed": true,
    "description": "Award-winning New York-style pizza in the West Village since 1975.",
    "photos_count": 342,
    "latitude": 40.7308,
    "longitude": -74.0021,
    "reviews": [
        {
            "author": "Sarah M.",
            "rating": 5,
            "date": "01/12/2026",
            "text": "Absolute NYC institution. Cash only but worth every penny."
        }
    ],
    "scraped_at": "2026-04-13T14:22:10.000Z",
    "source_url": "https://www.yelp.com/biz/joes-pizza-new-york"
}
```

### Use Cases

**Lead Generation & Sales Prospecting** — Build targeted prospect lists of local businesses by category and location. Export phone, website, and address directly into your CRM or outreach tool.

**Market Research** — Analyze competitor density, rating distributions, price ranges, and category trends in any market.

**Local SEO Auditing** — Check how businesses appear on Yelp, assess claimed status, and benchmark ratings against local competitors.

**Review Monitoring** — Pull recent customer reviews for sentiment analysis, customer feedback aggregation, or reputation management workflows.

**Real Estate & Site Selection** — Map businesses by GPS coordinates to analyze neighborhood commercial density before opening a new location.

**AI & LLM Pipelines** — Feed structured Yelp data into RAG systems, recommendation engines, or AI agents that need local business context.

### Proxy & Anti-Bot Notes

Yelp actively monitors for automated traffic and blocks datacenter IP ranges at a high rate. For reliable results:

- **Residential proxies are strongly recommended.** Yelp blocks most datacenter and shared proxy IPs. On Apify, enable Residential proxies in your account and set `proxyType` to `residential`.
- **Without residential proxies**, the actor will still run but may hit frequent 403 blocks, especially on search results pages. Individual business URL scraping tends to have better success rates.
- The actor automatically falls back through proxy options: specified group → default proxy → no proxy. If all proxies fail, it retries up to 3 times per URL before logging a failure.
- Stealth measures applied on every request: navigator.webdriver masked, realistic Accept-Language/User-Agent headers, randomized viewport, human-like delays (1–3 seconds between requests).
- CAPTCHA/block detection: the actor checks page titles for access denied patterns and retries with a new session.

**On Apify's free plan:** datacenter proxies are limited, and Yelp blocks them heavily. Upgrade to a plan with residential proxy access for production-grade reliability.

For very large-scale scraping (10,000+ businesses), spread runs across multiple hours and use residential proxies.

### FAQ

**Q: Does this actor require a Yelp account or API key?**
A: No. It scrapes publicly available data without any authentication.

**Q: Can I scrape reviews separately from business data?**
A: Reviews are bundled into each business record. Set `includeReviews: false` to skip them and speed up the run.

**Q: How fast does it scrape?**
A: Approximately 2–5 businesses per minute with datacenter proxies. Residential proxies are 30–50% slower.

**Q: What happens if Yelp changes its page structure?**
A: The actor uses multiple CSS selector fallbacks and JSON-LD structured data extraction. Minor site changes typically don't break it. Major redesigns may require updates — check the changelog for maintenance releases.

**Q: Can I export the data to CSV or Excel?**
A: Yes. In Apify Console, go to your run → Storage → Dataset → Export → choose CSV, Excel, or JSON.

**Q: Is this legal?**
A: This actor scrapes publicly available data displayed to any visitor on Yelp.com. It does not bypass authentication, access private data, or violate user privacy. Users are responsible for ensuring their use complies with Yelp's Terms of Service and applicable laws in their jurisdiction.

### Legal Disclaimer

*This actor is intended for lawful data collection from publicly available sources. Users are responsible for compliance with applicable laws, Yelp's Terms of Service, and data protection regulations including GDPR and CCPA. The actor does not access private or authenticated data. Use responsibly.*

***

*Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools. Built and maintained by [USERNAME](https://apify.com/USERNAME).*

# Actor input Schema

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

Use this when the user provides a keyword, business type, or category (e.g. 'restaurants', 'dentists', 'coffee shops', 'auto repair'). Do NOT use this when the user provides specific Yelp URLs — use Start URLs for that instead.

## `location` (type: `string`):

City, state, ZIP code, or address to search in. Examples: 'New York, NY', 'Los Angeles, CA', '90210', 'Chicago Downtown'. Paired with Search Query. Ignored when Start URLs are provided.

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

Use this when the user provides direct Yelp business page URLs (e.g. https://www.yelp.com/biz/joes-pizza-new-york). Do NOT use this for keyword searches — use Search Query instead. Accepts multiple URLs.

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

Maximum number of businesses to scrape and return. Each business = 1 billable event at $0.003. Start with 10–50 to test before scaling.

## `includeReviews` (type: `boolean`):

Extract up to N recent user reviews per business. Each review contains: author name, star rating, date, and review text. Adds 1–2 seconds per business but significantly enriches the output.

## `maxReviewsPerBusiness` (type: `integer`):

How many reviews to extract per business page (1–20). Only applies when Include Reviews is enabled. Reviews are returned newest-first as shown on Yelp.

## `proxyType` (type: `string`):

Proxy strategy for scraping. 'datacenter' is fast and cost-effective — start here. Switch to 'residential' if you encounter blocks (slower, higher cost). 'none' for local testing only — will likely be blocked by Yelp.

## Actor input object example

```json
{
  "searchQuery": "pizza",
  "location": "New York, NY",
  "startUrls": [],
  "maxResults": 10,
  "includeReviews": true,
  "maxReviewsPerBusiness": 5,
  "proxyType": "datacenter"
}
```

# Actor output Schema

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

All scraped Yelp business records as structured JSON. Each record contains complete business data including contact info, location, hours, and optionally user reviews.

# 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 = {
    "searchQuery": "pizza",
    "location": "New York, NY",
    "startUrls": [],
    "maxResults": 10,
    "includeReviews": true,
    "maxReviewsPerBusiness": 5,
    "proxyType": "datacenter"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/yelp-scraper-all-in-one").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 = {
    "searchQuery": "pizza",
    "location": "New York, NY",
    "startUrls": [],
    "maxResults": 10,
    "includeReviews": True,
    "maxReviewsPerBusiness": 5,
    "proxyType": "datacenter",
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/yelp-scraper-all-in-one").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 '{
  "searchQuery": "pizza",
  "location": "New York, NY",
  "startUrls": [],
  "maxResults": 10,
  "includeReviews": true,
  "maxReviewsPerBusiness": 5,
  "proxyType": "datacenter"
}' |
apify call khadinakbar/yelp-scraper-all-in-one --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/yelp-scraper-all-in-one",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yelp Scraper - Extract Business Data, Contacts & Reviews",
        "description": "Scrape Yelp businesses at scale. Extract name, rating, reviews, price range, categories, address, phone, website, hours, GPS coordinates, claimed status, photos count and recent reviews. Supports keyword search mode and direct Yelp URL mode. Residential proxies recommended for production-scale use.",
        "version": "1.0",
        "x-build-id": "mMqVTjyDHbsPt2Aq1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~yelp-scraper-all-in-one/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-yelp-scraper-all-in-one",
                "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/khadinakbar~yelp-scraper-all-in-one/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-yelp-scraper-all-in-one",
                "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/khadinakbar~yelp-scraper-all-in-one/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-yelp-scraper-all-in-one",
                "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": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Use this when the user provides a keyword, business type, or category (e.g. 'restaurants', 'dentists', 'coffee shops', 'auto repair'). Do NOT use this when the user provides specific Yelp URLs — use Start URLs for that instead.",
                        "default": "restaurants"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City, state, ZIP code, or address to search in. Examples: 'New York, NY', 'Los Angeles, CA', '90210', 'Chicago Downtown'. Paired with Search Query. Ignored when Start URLs are provided.",
                        "default": "New York, NY"
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Use this when the user provides direct Yelp business page URLs (e.g. https://www.yelp.com/biz/joes-pizza-new-york). Do NOT use this for keyword searches — use Search Query instead. Accepts multiple URLs.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of businesses to scrape and return. Each business = 1 billable event at $0.003. Start with 10–50 to test before scaling.",
                        "default": 50
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Extract up to N recent user reviews per business. Each review contains: author name, star rating, date, and review text. Adds 1–2 seconds per business but significantly enriches the output.",
                        "default": true
                    },
                    "maxReviewsPerBusiness": {
                        "title": "Max Reviews Per Business",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many reviews to extract per business page (1–20). Only applies when Include Reviews is enabled. Reviews are returned newest-first as shown on Yelp.",
                        "default": 5
                    },
                    "proxyType": {
                        "title": "Proxy Type",
                        "enum": [
                            "datacenter",
                            "residential",
                            "none"
                        ],
                        "type": "string",
                        "description": "Proxy strategy for scraping. 'datacenter' is fast and cost-effective — start here. Switch to 'residential' if you encounter blocks (slower, higher cost). 'none' for local testing only — will likely be blocked by Yelp.",
                        "default": "datacenter"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
