# Brownbook Business Directory Scraper (`automation-lab/brownbook-business-directory-scraper`) Actor

Scrape public Brownbook business listings for lead generation, local SEO audits, and CRM enrichment.

- **URL**: https://apify.com/automation-lab/brownbook-business-directory-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## Brownbook Business Directory Scraper

Scrape public Brownbook business listings for lead generation, market research, local SEO audits, competitor mapping, and B2B prospecting. The actor collects business names, profile URLs, IDs, claimed status, categories, addresses, phones, websites, public emails when Brownbook exposes them, social links, descriptions, reviews, and other public listing details.

### What does Brownbook Business Directory Scraper do?

Brownbook Business Directory Scraper turns public Brownbook directory data into a clean Apify dataset. Give it a keyword, location, country code, direct Brownbook profile URLs, or a mix of all of them. The actor reads public listing identifiers from Brownbook pages, optionally opens each matched profile through the public Brownbook API, and saves normalized rows ready for export.

### Who is it for?

- 🧲 Lead generation teams building lists of local businesses.
- 📍 Local SEO agencies checking business listings and claimed profiles.
- 🧾 Sales operations teams enriching CRM records with public directory data.
- 🧪 Market researchers mapping categories across cities or countries.
- 🏢 B2B founders validating niches and prospect segments.
- 🔎 Data analysts who need structured Brownbook listing exports.

### Why scrape Brownbook?

Brownbook is a global business listing database. Public profiles can include contact details, descriptions, tags, categories, addresses, social links, and review counts. Exporting this information manually is slow. This actor automates collection while keeping the output simple enough to use in spreadsheets, CRMs, BI tools, and automation workflows.

### Why use this actor?

- ✅ HTTP-only implementation; no browser overhead.
- ✅ Public profile enrichment through Brownbook's public API.
- ✅ Direct profile URL support for precise lookups.
- ✅ Keyword, location, and country filters.
- ✅ Pay-per-result pricing model.
- ✅ Output schema designed for lead-gen workflows.
- ✅ Works with Apify datasets, integrations, API clients, and MCP.

### What data can you extract?

| Field | Description |
| --- | --- |
| `name` | Business name shown on Brownbook. |
| `profileUrl` | Brownbook business profile URL. |
| `businessId` | Brownbook numeric business identifier. |
| `claimed` | Whether the listing is claimed. |
| `category`, `naicsTitle`, `tags` | Public classification data when available. |
| `address`, `city`, `state`, `zipCode`, `countryCode` | Location fields. |
| `phone`, `mobile`, `email`, `website` | Public contact fields when available. |
| `facebook`, `instagram`, `linkedin`, `twitter`, `tiktok` | Public social links when available. |
| `rating`, `reviewCount` | Brownbook rating and review/comment count. |
| `description`, `hours` | Public profile content. |
| `source`, `scrapedAt` | Collection metadata. |

### How much does it cost to scrape Brownbook business listings?

The actor uses pay-per-event pricing: a small start charge plus a per-result charge. You only pay for results that are saved. Keep the first run small, inspect the output, and then raise `maxResults` and `maxPages` for larger lead lists.

### Quick start

1. Open the actor on Apify.
2. Enter a business keyword such as `locksmith`, `dentist`, or `restaurant`.
3. Add a location filter such as `San Jose` or a country code such as `US`.
4. Keep `maxResults` low for the first test run.
5. Run the actor.
6. Export the dataset as CSV, JSON, Excel, XML, or connect it to your workflow.

### Input options

#### `searchQuery`

Keyword or business name to match against public listing fields. Examples: `locksmith`, `plumber`, `accounting`, `restaurant`, `digital marketing`.

#### `location`

Optional city, state, ZIP, or country text filter. The actor matches it against address fields returned by Brownbook.

#### `countryCode`

Optional two-letter country code. Examples: `US`, `GB`, `CA`, `AE`.

#### `startUrls`

Direct Brownbook profile URLs or numeric IDs. Use this when you already know specific listings you want to enrich.

#### `maxResults`

Maximum number of businesses saved to the dataset.

#### `maxPages`

Controls how many sequential public Brownbook business IDs are scanned after direct `startUrls`. Increase this when your keyword is rare or you need more matches.

#### `startBusinessId`

Numeric Brownbook business ID where scanning begins. The default points to an older public section of the Brownbook directory and can be changed when you want to sample another ID range.

#### `includeDetails`

When enabled, the actor opens each matched profile through the public Brownbook API and enriches the row with more contact and description fields.

#### `maxRequestRetries`

Retry limit for transient HTTP errors.

### Example input

```json
{
  "searchQuery": "locksmith",
  "location": "San Jose",
  "countryCode": "US",
  "maxResults": 20,
  "maxPages": 5,
  "startBusinessId": 488903,
  "includeDetails": true
}
````

### Example output

```json
{
  "name": "San Jose Advantage Locksmith",
  "profileUrl": "https://www.brownbook.net/business/39536898/san-jose-advantage-locksmith",
  "businessId": "39536898",
  "claimed": true,
  "address": "3103 Alum Rock Avenue, Suite: C, San Jose, CA",
  "city": "San Jose",
  "state": "CA",
  "zipCode": "95127",
  "countryCode": "US",
  "phone": "(408)484-3856",
  "rating": 0,
  "reviewCount": 32,
  "source": "directory",
  "scrapedAt": "2026-05-18T08:00:00.000Z"
}
```

### Tips for better results

- Start with specific terms like `locksmith` or `dentist` instead of broad words like `business`.
- Add `countryCode` to avoid collecting irrelevant countries.
- Use direct `startUrls` when you need exact profile enrichment.
- Increase `maxPages` if the actor scans too few public IDs before finding enough matching listings.
- Leave `includeDetails` enabled when you need contact fields and descriptions.

### Common workflows

#### Build local sales lists

Run the actor with a service keyword and city filter, export CSV, and import the rows into your CRM or outreach platform.

#### Audit claimed profiles

Filter by a brand, category, or location and use the `claimed` field to identify profiles that may need ownership or cleanup.

#### Enrich CRM records

Pass known Brownbook profile URLs through `startUrls` and collect public profile metadata for matching records.

#### Map a niche

Run multiple small inputs for different service categories, combine datasets, and compare city coverage, phone availability, and profile completeness.

### Integrations

Apify datasets connect to many downstream tools. Typical patterns include:

- Google Sheets exports for manual sales review.
- Zapier or Make scenarios that push rows to a CRM.
- Webhook-triggered enrichment after a prospect is added.
- Scheduled runs for recurring local-market monitoring.
- Dataset API pulls into Python, Node.js, or BI pipelines.

### API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/brownbook-business-directory-scraper').call({
  searchQuery: 'locksmith',
  location: 'San Jose',
  countryCode: 'US',
  maxResults: 20,
  maxPages: 3,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/brownbook-business-directory-scraper').call(run_input={
    'searchQuery': 'locksmith',
    'location': 'San Jose',
    'countryCode': 'US',
    'maxResults': 20,
    'maxPages': 3,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/automation-lab~brownbook-business-directory-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"searchQuery":"locksmith","location":"San Jose","countryCode":"US","maxResults":20,"maxPages":5,"startBusinessId":488903}'
```

### MCP usage

Use the actor through Apify MCP in Claude Code, Claude Desktop, or other MCP-compatible clients.

MCP URL:

```text
https://mcp.apify.com/?tools=automation-lab/brownbook-business-directory-scraper
```

Claude Code setup:

```bash
claude mcp add apify-brownbook "https://mcp.apify.com/?tools=automation-lab/brownbook-business-directory-scraper"
```

Claude Desktop JSON config:

```json
{
  "mcpServers": {
    "apify-brownbook": {
      "url": "https://mcp.apify.com/?tools=automation-lab/brownbook-business-directory-scraper"
    }
  }
}
```

Example prompts:

- "Find Brownbook locksmith listings in San Jose and summarize contacts."
- "Scrape these Brownbook profile URLs and return claimed status plus websites."
- "Create a CSV of Brownbook dentists in the US with phones and profile URLs."

### Data quality notes

Brownbook profiles vary. Some have rich descriptions and social links; others only have basic address or phone data. The actor returns fields only when they are public and available in Brownbook's responses.

### Limitations

Brownbook does not expose reliable public full-text search for every term, so the actor reads public listing feeds, scans public business IDs, and applies filters client-side. For exact known businesses, use `startUrls` to scrape direct profiles.

### Legality

### Legal and ethical use

This actor collects publicly available business listing data. You are responsible for complying with applicable laws, platform terms, privacy rules, and outreach regulations. Avoid spam, respect opt-out requests, and use public contact fields responsibly.

### Troubleshooting

#### Why did I get fewer results than `maxResults`?

Your keyword, location, or country filters may be too narrow for the number of pages scanned. Increase `maxPages`, broaden the keyword, or remove one filter.

#### Why are some fields empty?

Brownbook does not expose every contact field for every profile. Empty fields mean the data was not public in the listing/profile response.

#### Why should I use `startUrls`?

Direct profile URLs are best when you already have a list of Brownbook businesses and want exact enrichment rather than discovery.

### FAQ

#### Can it scrape emails?

Yes, when Brownbook exposes a public email field for a profile. Many listings do not include email.

#### Does it require login?

No. It uses public Brownbook web/API responses.

#### Does it use a browser?

No. It is an HTTP-only actor for speed and lower compute cost.

#### Can I schedule it?

Yes. Use Apify schedules to run recurring searches and export the newest dataset.

### Related scrapers

- https://apify.com/automation-lab/google-maps-scraper
- https://apify.com/automation-lab/yellow-pages-us-scraper
- https://apify.com/automation-lab/yelp-scraper
- https://apify.com/automation-lab/tripadvisor-scraper

### Changelog

Initial version: Brownbook public listing feed collection, direct profile enrichment, public contact fields, and normalized lead-gen output.

### Support

If you need a field that appears on Brownbook but is not in the dataset, open an issue with an example profile URL and describe the missing field.

# Actor input Schema

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

Optional keyword to match against Brownbook business names, descriptions, categories, tags, websites, and addresses. Leave empty to collect recent directory listings.

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

Optional city, state, ZIP, or country filter. The actor matches this against public address fields returned by Brownbook.

## `countryCode` (type: `string`):

Optional two-letter country code filter, for example US, GB, AE, or CA.

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

Optional Brownbook business profile URLs or numeric business IDs to scrape directly. Direct profiles are scraped before directory pages.

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

Maximum number of business listings to save.

## `maxPages` (type: `integer`):

Maximum Brownbook directory API pages to scan when using keyword/location filters. Higher values discover more matches but take longer.

## `startBusinessId` (type: `integer`):

Numeric Brownbook business ID where directory scanning starts when you do not provide enough direct profile URLs. The prefill points to a public part of the Brownbook directory.

## `includeDetails` (type: `boolean`):

Open each matched Brownbook profile through the public API to enrich listings with description, website, email, social links, hours, tags, and categories when available.

## `maxRequestRetries` (type: `integer`):

Number of retry attempts for transient Brownbook API errors.

## Actor input object example

```json
{
  "searchQuery": "locksmith",
  "location": "San Jose",
  "countryCode": "US",
  "startUrls": [
    "https://www.brownbook.net/business/39536898/san-jose-advantage-locksmith"
  ],
  "maxResults": 20,
  "maxPages": 3,
  "startBusinessId": 488903,
  "includeDetails": true,
  "maxRequestRetries": 3
}
```

# Actor output Schema

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

No description

# 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": "locksmith",
    "location": "San Jose",
    "countryCode": "US",
    "startUrls": [
        "https://www.brownbook.net/business/39536898/san-jose-advantage-locksmith"
    ],
    "maxResults": 20,
    "maxPages": 3,
    "includeDetails": true,
    "maxRequestRetries": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/brownbook-business-directory-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 = {
    "searchQuery": "locksmith",
    "location": "San Jose",
    "countryCode": "US",
    "startUrls": ["https://www.brownbook.net/business/39536898/san-jose-advantage-locksmith"],
    "maxResults": 20,
    "maxPages": 3,
    "includeDetails": True,
    "maxRequestRetries": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/brownbook-business-directory-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 '{
  "searchQuery": "locksmith",
  "location": "San Jose",
  "countryCode": "US",
  "startUrls": [
    "https://www.brownbook.net/business/39536898/san-jose-advantage-locksmith"
  ],
  "maxResults": 20,
  "maxPages": 3,
  "includeDetails": true,
  "maxRequestRetries": 3
}' |
apify call automation-lab/brownbook-business-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/brownbook-business-directory-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Brownbook Business Directory Scraper",
        "description": "Scrape public Brownbook business listings for lead generation, local SEO audits, and CRM enrichment.",
        "version": "0.1",
        "x-build-id": "qTUpNgPeFxD5M3Rpb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~brownbook-business-directory-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-brownbook-business-directory-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/automation-lab~brownbook-business-directory-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-brownbook-business-directory-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/automation-lab~brownbook-business-directory-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-brownbook-business-directory-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",
                "properties": {
                    "searchQuery": {
                        "title": "Business keyword or name",
                        "type": "string",
                        "description": "Optional keyword to match against Brownbook business names, descriptions, categories, tags, websites, and addresses. Leave empty to collect recent directory listings."
                    },
                    "location": {
                        "title": "Location filter",
                        "type": "string",
                        "description": "Optional city, state, ZIP, or country filter. The actor matches this against public address fields returned by Brownbook."
                    },
                    "countryCode": {
                        "title": "Country code",
                        "type": "string",
                        "description": "Optional two-letter country code filter, for example US, GB, AE, or CA."
                    },
                    "startUrls": {
                        "title": "Brownbook profile URLs or IDs",
                        "type": "array",
                        "description": "Optional Brownbook business profile URLs or numeric business IDs to scrape directly. Direct profiles are scraped before directory pages.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Maximum businesses",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of business listings to save.",
                        "default": 50
                    },
                    "maxPages": {
                        "title": "Maximum directory pages",
                        "minimum": 1,
                        "maximum": 250,
                        "type": "integer",
                        "description": "Maximum Brownbook directory API pages to scan when using keyword/location filters. Higher values discover more matches but take longer.",
                        "default": 10
                    },
                    "startBusinessId": {
                        "title": "Starting Brownbook business ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Numeric Brownbook business ID where directory scanning starts when you do not provide enough direct profile URLs. The prefill points to a public part of the Brownbook directory.",
                        "default": 488903
                    },
                    "includeDetails": {
                        "title": "Fetch profile details",
                        "type": "boolean",
                        "description": "Open each matched Brownbook profile through the public API to enrich listings with description, website, email, social links, hours, tags, and categories when available.",
                        "default": true
                    },
                    "maxRequestRetries": {
                        "title": "Max request retries",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of retry attempts for transient Brownbook API errors.",
                        "default": 3
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
