# Planity Bussiness Search Scraper (`stealth_mode/planity-bussiness-search-scraper`) Actor

Scrape business listings from Planity.com with complete details — names, locations, ratings, opening hours, phone numbers, and 45+ data fields. Perfect for market research, competitive analysis, and location-based business intelligence across Europe.

- **URL**: https://apify.com/stealth\_mode/planity-bussiness-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.
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

## Planity Business Scraper: Extract Local Business Data from Europe

**Excerpt:** Scrape business listings from Planity.com with complete details — names, locations, ratings, opening hours, phone numbers, and 45+ data fields. Perfect for market research, competitive analysis, and location-based business intelligence across Europe.

---

### What Is Planity.com?

Planity.com is a leading European local business search platform connecting consumers with service providers across multiple categories — hairdressers, salons, restaurants, wellness centers, and more. The platform operates across multiple European countries, hosting millions of verified business profiles with real-time availability, ratings, and contact information. **Manually collecting this business data is inefficient**; the **Planity Business Scraper** automates the process, extracting structured business intelligence at scale.

---

### Overview

The **Planity Business Scraper** extracts comprehensive business profiles from Planity search result pages, converting unstructured listings into clean, actionable datasets. It is designed for:

- **Market researchers** mapping competitive landscapes by geography and category
- **Location-based services** building business databases for their platforms
- **Sales teams** identifying prospect lists in target regions
- **Data analysts** studying service provider distributions and market saturation
- **Business intelligence platforms** aggregating European business data

Key strengths include geographical filtering via coordinates, high-volume extraction (`max_items_per_url` up to 200), and resilient error handling with `ignore_url_failures`.

---

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Business list URLs from Planity.com search results. Include category (e.g., `coiffeur`), location, and page number |
| `max_items_per_url` | Integer | Maximum business records per URL (1–200). Default: 20 |
| `ignore_url_failures` | Boolean | If `true`, continues scraping even if individual URLs fail. Prevents run interruptions |

#### URL Structure Explanation

Planity URLs follow this pattern:

```
https://www.planity.com/[CATEGORY]/[LOCATION]/@[LAT_MIN],[LON_MIN],[LAT_MAX],[LON_MAX]/page-[NUMBER]
```

- `[CATEGORY]` — Service type (e.g., `coiffeur`, `restaurant`, `fitness`)
- `[LOCATION]` — City + postal code (e.g., `paris-75`)
- `[LAT/LON]` — Geographic bounding box (map coordinates) for result filtering
- `[PAGE]` — Result page number

> **Tip:** Build URLs by navigating Planity.com manually, selecting your category and location, then copying the resulting URL. The scraper will paginate automatically.

***

### Output Format

**Sample output**

```json
{
  "name": "Studio Waldorf",
  "location": {
    "lat": 48.86369029999999,
    "lng": 2.3721137
  },
  "geoloc": null,
  "address": {
    "country": "France",
    "locality": "Paris",
    "postal_code": "75011",
    "street": "43, rue de la Folie Méricourt"
  },
  "slug": "studio-waldorf-75011-paris",
  "pictures": [
    {
      "accepted_id": "ea6ae59a-8615-4688-9b30-3ccd71c95c89",
      "id": "ng6g2zqftagglin19meg",
      "origin": "pro"
    },
    {
      "accepted_id": "35366d8d-4f9c-451d-bfa7-fae7735383c3",
      "id": "slyiyhntqth0nncrotty",
      "origin": "pro"
    },
    {
      "accepted_id": "ef935018-6c66-4f2a-94b0-c4217376dd0a",
      "id": "k4u0ieffkrd0xawtpve6",
      "origin": "pro",
      "thumbs": {
        "d_main": {
          "crop": {
            "h": 1785,
            "w": 3000,
            "x": 0,
            "y": 127
          },
          "t": "c_crop,w_3000,h_1785,x_0,y_127"
        }
      }
    },
    {
      "accepted_id": "6e96edda-fd62-4f28-8b90-d3bdbdc0ac7a",
      "id": "utpqsdxgzuokvwv9o6q7",
      "origin": "pro",
      "thumbs": {
        "d_main": {
          "crop": {
            "h": 1785,
            "w": 3000,
            "x": 0,
            "y": 200
          },
          "t": "c_crop,w_3000,h_1785,x_0,y_200"
        }
      }
    },
    {
      "accepted_id": "d42c72d9-2868-473b-9535-dbe5da649fa4",
      "id": "zkkynddjqwkbm1hv4se8",
      "origin": "pro",
      "thumbs": {
        "d_main": {
          "crop": {
            "h": 1420,
            "w": 2386,
            "x": 258,
            "y": 156
          },
          "t": "c_crop,w_2386,h_1420,x_258,y_156"
        }
      }
    }
  ],
  "types": "hair_care",
  "opening_hours": "Tu 10:00-19:00;We 10:00-21:00;Th 10:00-21:00;Fr 10:00-21:00;Sa 10:00-19:00",
  "pl_status": 4,
  "place_id": "7z2",
  "parent_place_id": "hw7",
  "pl_categories": [
    "hair_care",
    "odkz2",
    "odkz",
    "1xtr",
    "1qqe",
    "sdov",
    "ot4c",
    "jp02",
    "ccqt",
    "qp6k",
    "wq5n",
    "inclassable",
    "yofo",
    "yh7a",
    "w0td",
    "hc1",
    "4n6t",
    "k9m6",
    "jhrw",
    "dt3y"
  ],
  "phone_number": "+33147006515",
  "language": "fr",
  "campaign_sms_sender": "NicoWaldorf",
  "main_type": "hair_care",
  "global_average": null,
  "hide_service_prices": false,
  "hide_service_durations": false,
  "has_cm": null,
  "has_gift_voucher_online_purchasable": true,
  "has_service_online_purchasable": null,
  "ica": 1,
  "country_code": "FR",
  "is_ads_eligible": true,
  "global_rating": 4.887037037037037,
  "ratings_count": 135,
  "reviews": [
    {
      "id": "-OU8s8vJPZOF42yF1NVS,-OU8s8vJPZOF42yF1NVT,-OU8s8vJPZOF42yF1NVU,-OU9ReEVft0AFTs3301p,-OULI6fQsdNjXFc2ogH7,-OULI6fQsdNjXFc2ogH8,-OULI6fQsdNjXFc2ogH9,-OULP0RLW6uBdoc7U7GY",
      "item_reviewed": "Coloration totale + Coupe cheveux courts + Balayage cheveux courts",
      "rated_at": 1751792471000,
      "review_rating": 5,
      "author": {
        "user_pseudo": ""
      },
      "review_body": "la coupe et couleur sont parfaites, malgré mon timing serré. Merci Angelina vous avez assuré.🫶"
    },
    {
      "id": "-OUG2ki9eN7vZbOHNZyQ,-OUQ6mVPMmXfcFpzTB2f,-OUQ6mVPMmXfcFpzTB2g,-OUQ6mVQWtNtAURmqMu_",
      "item_reviewed": "Coupe cheveux mi-longs + Coloration racines",
      "rated_at": 1751839599000,
      "review_rating": 5,
      "author": {
        "user_pseudo": ""
      },
      "review_body": "Toujours parfait!"
    },
    {
      "id": "-OUE-a4gw-ZVbcKu9B9E",
      "item_reviewed": "Coupe homme",
      "rated_at": 1751755609000,
      "review_rating": 5,
      "author": {
        "user_pseudo": ""
      }
    }
  ],
  "description": "Retrouvez Nicolas et son équipe derrière la verrière du 43 de la rue Folie Méricourt dans le 11ème arrondissement de Paris, en face de l’ancien salon. Ici, tout a été pensé et designé par Nicolas Waldorf et l’architecte Oscar Ono pour créer l'espace idéal dédié à la coiffure, la beauté et le bien-être. Une équipe dévouée et soudée pour vous donner le meilleur tout au long de l’année. Formés continuellement aux dernières techniques de coiffure, Nicolas et sa team se renouvellent chaque année en fonction des nouvelles tendances. Ici, l’esprit Waldorf rime avec bonne humeur, modernité et savoir-faire pour vous proposer des services et des transformations adaptés à tous vos besoins.",
  "has_pos": null,
  "stats": {
    "all": 278,
    "web": 98,
    "apt": 180
  },
  "zoho": {
    "id": "2101591000632245577",
    "is_account": true
  },
  "pos": "pl",
  "apt": 3,
  "st": 4,
  "vc": 1,
  "is_owner_alone": false,
  "has_availabilities": 1,
  "ddv": 1744976524487,
  "dfe": -1,
  "object_id": null,
  "resolved_bid_id": "6yx9FAoQBqOrjwYufpGoBAZjL-VRZxIQAZ3ybNPTd7K8w3rsjAfp1hoQAZbVrbayfhKSSUfjE1TosSIYChQtT083X0ZTem9wSzlkRUpwdGdSOBABMNG-uY8BSAFQntaJq-8zYG9yEAAAAAAAAAAAAAAAAAAAAAB4AoUBAACgQA",
  "rank": 1,
  "from_url": "https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"
}
```

Each scraped business returns a rich profile with 45+ fields:

#### Core Business Information

| Field | Meaning |
|---|---|
| `Name` | Official business name as displayed on Planity |
| `Slug` | URL-friendly identifier for the business |
| `Address` | Full street address |
| `Location` | City and region |
| `Geoloc` | Latitude and longitude coordinates |
| `Place ID` | Unique Planity internal identifier |
| `Parent Place ID` | ID of parent location (for chain businesses) |
| `Country Code` | ISO country code (e.g., `FR`, `DE`, `ES`) |
| `Object ID` | Alternative unique identifier |
| `Rank` | Search result ranking on the page |

#### Business Classification

| Field | Meaning |
|---|---|
| `Main Type` | Primary business category (e.g., "Hair Salon") |
| `Types` | Array of secondary categories |
| `PL Categories` | Planity internal category tags |

#### Contact & Operations

| Field | Meaning |
|---|---|
| `Phone Number` | Primary business telephone |
| `Language` | Primary language(s) of business communication |
| `Opening Hours` | Operating hours schedule (formatted as availability data) |
| `Has Availabilities` | Boolean flag — whether real-time booking slots are available |

#### Ratings & Reviews

| Field | Meaning |
|---|---|
| `Global Rating` | Average customer rating (typically 0–5 stars) |
| `Global Average` | Alternative rating metric |
| `Ratings Count` | Total number of reviews/ratings submitted |
| `Reviews` | Array of customer review texts and metadata |

#### Services & Pricing

| Field | Meaning |
|---|---|
| `Hide Service Prices` | Boolean — whether business hides pricing from the platform |
| `Hide Service Durations` | Boolean — whether service durations are hidden |
| `Has Service Online Purchasable` | Boolean — whether services can be booked/paid online through Planity |
| `Has Gift Voucher Online Purchasable` | Boolean — whether gift cards are available online |

#### Platform Features & Status

| Field | Meaning |
|---|---|
| `PL Status` | Planity platform account status (e.g., active, verified) |
| `_PL Status` | Internal status code |
| `Is Ads Eligible` | Boolean — whether business is eligible for Planity ads |
| `Has CM` | Boolean — whether business has a certified manager |
| `Has POS` | Boolean — whether point-of-sale system is integrated |
| `Is Owner Alone` | Boolean — single-owner business indicator |

#### Business Integrations & Systems

| Field | Meaning |
|---|---|
| `Zoho` | Zoho CRM integration status |
| `POS` | Point-of-sale system type (if integrated) |
| `APT` | Appointment system integration |
| `ST` | Schedule/timing system flag |
| `VC` | Video conferencing or virtual consultation capability |
| `DDV` | Digital document verification status |
| `DFE` | Data freshness/update indicator |
| `ICA` | Internal compliance audit status |

#### Campaign & Marketing

| Field | Meaning |
|---|---|
| `Campaign SMS Sender` | Business SMS notification sender ID |
| `Resolved BID ID` | Business ID for campaign tracking |

#### Media

| Field | Meaning |
|---|---|
| `Pictures` | Array of business images (profile photos, storefront, interior) |
| `Description` | Business description/bio as provided by the business |

#### Statistics & Metadata

| Field | Meaning |
|---|---|
| `Stats` | Aggregated business statistics (views, bookings, etc.) |

***

### How to Use

1. **Identify your search criteria** — Visit Planity.com and navigate to your target category and location (e.g., "hairdressers in Paris").
2. **Copy the URL** — Once results load, copy the full URL including the geographic bounding box and page number.
3. **Configure the scraper**:
   - Paste URL(s) into the `urls` array
   - Set `max_items_per_url` based on your needs (200 for bulk extraction)
   - Enable `ignore_url_failures` to handle any temporary page issues
4. **Run the scraper** — Start the actor and monitor progress in the run log.
5. **Export results** — Download data as JSON, CSV, or Excel for analysis.

**Best practices:**

- Use specific geographic coordinates to avoid overly broad results
- Set realistic `max_items_per_url` limits; 200+ items may slow the run
- For multiple categories, run separate scrapes to keep datasets organized
- Verify a sample of results manually to ensure data quality

***

### Use Cases & Business Value

- **Market entry research:** Identify competitor density and service gaps in target regions
- **Lead generation:** Build prospect lists for B2B outreach to salons, spas, or restaurants
- **Consumer insights:** Analyze rating distribution, service availability, and market maturity
- **Price benchmarking:** Collect pricing and service duration data across competitors
- **Location analytics:** Study business distribution by category and geographic zone
- **Data licensing:** Aggregate business data for resale to aggregator platforms or SaaS tools

The **Planity Business Scraper** transforms Planity's vast European business directory into a structured dataset, enabling competitive intelligence and market analysis that would take weeks to compile manually.

***

### Conclusion

The **Planity.com Business Scraper** is a powerful tool for anyone needing reliable European business data at scale. With 45+ fields per listing and flexible geographic filtering, it delivers market intelligence directly into your analysis tools. Whether researching competitor markets or building a location-based platform, this scraper accelerates your data collection pipeline.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the bussiness list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/planity-bussiness-search-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 = {
    "urls": ["https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/planity-bussiness-search-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 '{
  "urls": [
    "https://www.planity.com/coiffeur/paris-75/@48.86562559985535,2.3726557953731913,48.84654257376471,2.338517531005863/page-2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/planity-bussiness-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/planity-bussiness-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Planity Bussiness Search Scraper",
        "description": "Scrape business listings from Planity.com with complete details — names, locations, ratings, opening hours, phone numbers, and 45+ data fields. Perfect for market research, competitive analysis, and location-based business intelligence across Europe.",
        "version": "0.0",
        "x-build-id": "dQWqTrum0zFJUghsS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~planity-bussiness-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-planity-bussiness-search-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/stealth_mode~planity-bussiness-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-planity-bussiness-search-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/stealth_mode~planity-bussiness-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-planity-bussiness-search-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": {
                    "urls": {
                        "title": "URLs of the bussiness list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the bussiness list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
