# PagineGialle Italy Scraper (`solidcode/paginegialle-it-scraper`) Actor

\[💰 $1.8 / 1K] Extract Italian business listings from PagineGialle.it — name, address, phone, website, email, category, rating, and geo. Search by what + where, filter by category, or paste PagineGialle URLs directly.

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

## Pricing

from $1.80 / 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

## PagineGialle Italy Scraper

Pull business listings from PagineGialle.it — Italy's national Yellow Pages — at scale: name, phone, email, website, full Italian address with CAP and province, GPS coordinates, VAT number, average rating, and review count for every listing. Search by what + where across any Italian city, pick from 24 ready-made business sectors, or paste a PagineGialle URL and get a clean, structured dataset back. Built for Italian sales teams, lead-generation agencies, and market researchers who need verified business contacts across all of Italy without browsing the directory page by page.

### Why This Scraper?

- **Nationwide Italian coverage** — every one of Italy's 20 regions and 100+ provinces, from Roma and Milano to small comuni, returned with region, province code (RM, MI, NA), and 5-digit CAP postal code on each listing.
- **24 ready-made business sectors** — pick Restaurants, Lawyers, Plumbers, Dentists, Real Estate Agencies, Accountants, Pharmacies and 17 more from a dropdown, or type your own Italian search term.
- **Verified contact block on every listing** — phone (plus a full `phones` array of every published number), email, and the business's own website, separated from social profiles so you never mistake a Facebook link for a homepage.
- **Partita IVA (VAT number) capture** — the Italian VAT ID is pulled straight from the listing, ready for B2B verification and CRM matching.
- **GPS coordinates on every business** — latitude and longitude for territory mapping, route planning, and radius analysis.
- **Three sort modes** — Relevance, Nearest first (by distance from the searched city), or Most popular (most-viewed businesses first).
- **Full category breakdown** — a primary category plus a `categories` array listing every sector the business is filed under, so you can segment a directory precisely.
- **Fan-out search** — every search term is automatically combined with every city, so 5 terms × 4 cities is one run of 20 searches, no manual list-building.
- **Direct URL input** — paste any PagineGialle search-results page or a single business profile and it's scraped as-is, with URL filters honored.

### Use Cases

**Lead Generation**
- Build B2B contact lists with phone, email, and website for any Italian sector
- Pull every plumber, electrician, or accountant in a target province in one run
- Match leads to a Partita IVA for clean CRM deduplication
- Enrich a single prospect by pasting their PagineGialle profile URL

**Market Research**
- Map how many businesses operate in a category across competing cities
- Measure category density region by region across Italy
- Benchmark average ratings and review volume within a sector
- Track which businesses surface first under "Most popular"

**Sales Territory Planning**
- Sort by "Nearest first" around a city to build a field-rep route
- Use latitude and longitude to draw radius-based territories
- Group prospects by province code and region for quota assignment
- Prioritize highly-rated businesses as warmer outreach targets

**Local SEO & Directory Building**
- Assemble a structured local-business directory for any Italian city
- Capture full address, CAP, and geo for map-based directory products
- Collect category and social-profile links for listing pages
- Monitor a competitor's directory presence across multiple cities

**Competitive Analysis**
- Compare a brand's listings against rivals in the same sector and city
- Identify gaps where a category is under-served in a given province
- Track rating and review counts for competitors over time

### Getting Started

#### Single Search — One Term, One City

The simplest way to start: what you want and where.

```json
{
    "searchQueries": ["ristoranti"],
    "locations": ["Roma"],
    "maxResults": 100
}
````

#### Fan-Out — Many Terms Across Many Cities

Every term is combined with every city. This example runs 6 searches (2 terms × 3 cities), nearest businesses first.

```json
{
    "searchQueries": ["idraulico", "elettricista"],
    "locations": ["Milano", "Torino", "Napoli"],
    "sort": "distance",
    "maxResults": 250
}
```

#### Direct URLs

Paste a PagineGialle search page or a single business profile.

```json
{
    "startUrls": [
        "https://www.paginegialle.it/ricerca/avvocati/firenze",
        "https://www.paginegialle.it/studio-legale-rossi-firenze"
    ],
    "maxResults": 500
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQueries` | string\[] | `["ristoranti"]` | What to look for (e.g. `ristoranti`, `idraulico`, `commercialista`). Each term is combined with every location below. |
| `locations` | string\[] | `["Roma"]` | Where in Italy to search — a city, town, or province (e.g. `Roma`, `Milano`, `Napoli`). Each location is combined with every search term. |
| `startUrls` | string\[] | `[]` | Paste PagineGialle search-result pages or individual business profile pages. Scraped in addition to any search terms above. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `category` | select | `Any category` | Pick a ready-made sector instead of typing a term: Restaurants, Hotels, Bars & Cafes, Shops & Retail, Supermarkets, Hairdressers, Beauticians & Beauty Salons, Gyms & Fitness, Medical Specialists, Dentists, Pharmacies, Lawyers, Accountants, Real Estate Agencies, Plumbers, Electricians, Construction Companies, Car Repair Shops, Mechanics, Body Shops, Insurance, Banks, Schools, Veterinarians. When set, it replaces your search terms for the run. |
| `sort` | select | `Relevance` | Order results by **Relevance** (the default), **Nearest first** (by distance from the searched location), or **Most popular** (most-viewed first). |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum businesses to collect per search (each term + location pair, and each URL). Set to `0` for no cap. The run keeps the full final page even if it slightly overshoots. |

### Output

Each business is one flat row. Here's a representative result:

```json
{
    "name": "Trattoria da Mario",
    "category": "Ristoranti",
    "categories": ["Ristoranti", "Trattorie", "Cucina tipica"],
    "description": "Cucina romana tradizionale dal 1962, nel cuore di Trastevere.",
    "phone": "06 5812345",
    "phones": ["06 5812345", "338 1234567"],
    "email": "info@trattoriadamario.it",
    "website": "https://www.trattoriadamario.it",
    "address": "Via della Lungaretta 12, 00153 Roma (RM)",
    "street": "Via della Lungaretta 12",
    "postalCode": "00153",
    "city": "Roma",
    "province": "RM",
    "region": "Lazio",
    "latitude": 41.8893,
    "longitude": 12.4698,
    "rating": 4.5,
    "reviewCount": 128,
    "vatId": "01234567890",
    "businessId": "9876543",
    "socialLinks": {
        "facebook": "https://www.facebook.com/trattoriadamario",
        "instagram": "https://www.instagram.com/trattoriadamario"
    },
    "url": "https://www.paginegialle.it/trattoria-da-mario-roma",
    "searchQuery": "ristoranti",
    "searchLocation": "Roma",
    "scrapedAt": "2026-06-02T14:30:00+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Business name |
| `category` | string | Primary category |
| `categories` | string\[] | Every category the business is filed under |
| `description` | string | Short business description, when published |
| `rating` | number | Average star rating |
| `reviewCount` | integer | Total number of reviews |
| `url` | string | PagineGialle business profile URL |

#### Contact

| Field | Type | Description |
|-------|------|-------------|
| `phone` | string | Primary phone number |
| `phones` | string\[] | All published phone numbers |
| `email` | string | Contact email, when published |
| `website` | string | The business's own website |
| `socialLinks` | object | Social profile URLs keyed by network (facebook, instagram, etc.) |

#### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `address` | string | Full formatted address |
| `street` | string | Street name and number |
| `postalCode` | string | Italian postal code (CAP) |
| `city` | string | City or town |
| `province` | string | Two-letter province code (e.g. RM, MI, NA) |
| `region` | string | Italian region (regione) |
| `latitude` | number | Latitude |
| `longitude` | number | Longitude |

#### IDs & Provenance

| Field | Type | Description |
|-------|------|-------------|
| `vatId` | string | Partita IVA (Italian VAT number) |
| `businessId` | string | PagineGialle internal business identifier |
| `searchQuery` | string | The search term that produced this row |
| `searchLocation` | string | The location that produced this row |
| `scrapedAt` | string | ISO timestamp of when the row was captured |

### Tips for Best Results

- **Always include a location.** PagineGialle expects a city or province for every search term — a search term without a location is skipped, so pair each term with at least one place.
- **Use a category for clean, consistent terms.** Picking from the 24 ready-made sectors guarantees a valid Italian search term and overrides your typed queries for that run.
- **Map a sales territory with "Nearest first" + a precise city.** Sorting by distance around a specific city, combined with the latitude/longitude on each row, lets you build radius-based field-rep routes.
- **Enrich a single business by pasting its profile URL.** Drop a business's PagineGialle profile link into `startUrls` to pull its full record without running a whole search.
- **Broaden the term in small towns.** A niche category in a small comune may return only a few rows — widen the search term or search a nearby larger city for more coverage.
- **Start small, then scale.** Set `maxResults` to 25–50 on a first run to confirm the data fits your needs, then raise the cap.
- **Combine search and URLs in one run.** Mix `searchQueries` × `locations` with pasted `startUrls` to cover both broad sweeps and specific pages at once.

### Pricing

**From $1.80 per 1,000 results** — flat pay-per-result, billed only on businesses actually returned. No compute charges — you only pay per result returned. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.22 | $0.20 | $0.19 | $0.18 |
| 1,000 | $2.15 | $2.00 | $1.90 | $1.80 |
| 10,000 | $21.50 | $20.00 | $19.00 | $18.00 |
| 100,000 | $215.00 | $200.00 | $190.00 | $180.00 |

A "result" is a single business row in your dataset. Platform fees (storage, data transfer) depend on your Apify plan and are additional.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate business research, market analysis, and lead generation. You are responsible for complying with applicable laws — including the GDPR and Italian data-protection rules — and with PagineGialle's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and respect the rights of the businesses and individuals whose information you collect.

# Actor input Schema

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

What to look for on PagineGialle (e.g. 'ristoranti', 'idraulico', 'commercialista', 'parrucchiere', 'avvocato'). One row per search term. Each term is combined with every location below — for example 2 terms x 3 locations = 6 searches. Leave empty if you're using direct URLs.

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

Where in Italy to search: a city, town, or province (e.g. 'Roma', 'Milano', 'Napoli', 'Torino'). One row per place. Each location is combined with every search term above. Leave empty to search all of Italy (nationwide) for each term.

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

Paste PagineGialle.it URLs directly: search-result pages (e.g. https://www.paginegialle.it/ricerca/ristoranti/roma) or individual business profile pages. Filters baked into the URL (zone, sort) are honored as-is. When provided, these are scraped in addition to any search terms above.

## `category` (type: `string`):

Pick a ready-made business sector instead of typing your own search term. When set to anything other than 'Any category', the chosen sector becomes the search term and is combined with every location below (any terms you typed under 'What to search' are ignored for this run). Choose 'Any category' to use your own search terms instead.

## `sort` (type: `string`):

Order in which businesses are collected. 'Relevance' is the PagineGialle default; 'Nearest first' orders by distance from the searched location; 'Most popular' surfaces the most-viewed businesses first.

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

Maximum number of business listings to collect for each search (each what + where combination, and each URL). Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 10,000 per search still applies to prevent runaway pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.

## Actor input object example

```json
{
  "searchQueries": [
    "ristoranti"
  ],
  "locations": [
    "Roma"
  ],
  "startUrls": [],
  "category": "any",
  "sort": "relevance",
  "maxResults": 100
}
```

# Actor output Schema

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

Table of businesses with key fields like name, category, phone, city, and rating.

## `details` (type: `string`):

Full per-business rows including address, contact details, geo, and rating summary.

# 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 = {
    "searchQueries": [
        "ristoranti"
    ],
    "locations": [
        "Roma"
    ],
    "startUrls": [],
    "category": "any",
    "sort": "relevance",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/paginegialle-it-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 = {
    "searchQueries": ["ristoranti"],
    "locations": ["Roma"],
    "startUrls": [],
    "category": "any",
    "sort": "relevance",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/paginegialle-it-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 '{
  "searchQueries": [
    "ristoranti"
  ],
  "locations": [
    "Roma"
  ],
  "startUrls": [],
  "category": "any",
  "sort": "relevance",
  "maxResults": 100
}' |
apify call solidcode/paginegialle-it-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PagineGialle Italy Scraper",
        "description": "[💰 $1.8 / 1K] Extract Italian business listings from PagineGialle.it — name, address, phone, website, email, category, rating, and geo. Search by what + where, filter by category, or paste PagineGialle URLs directly.",
        "version": "1.0",
        "x-build-id": "ZOHKSYKcNdn7CkJ0u"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~paginegialle-it-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-paginegialle-it-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/solidcode~paginegialle-it-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-paginegialle-it-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/solidcode~paginegialle-it-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-paginegialle-it-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": {
                    "searchQueries": {
                        "title": "What to search",
                        "type": "array",
                        "description": "What to look for on PagineGialle (e.g. 'ristoranti', 'idraulico', 'commercialista', 'parrucchiere', 'avvocato'). One row per search term. Each term is combined with every location below — for example 2 terms x 3 locations = 6 searches. Leave empty if you're using direct URLs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Where to search",
                        "type": "array",
                        "description": "Where in Italy to search: a city, town, or province (e.g. 'Roma', 'Milano', 'Napoli', 'Torino'). One row per place. Each location is combined with every search term above. Leave empty to search all of Italy (nationwide) for each term.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "PagineGialle URLs",
                        "type": "array",
                        "description": "Paste PagineGialle.it URLs directly: search-result pages (e.g. https://www.paginegialle.it/ricerca/ristoranti/roma) or individual business profile pages. Filters baked into the URL (zone, sort) are honored as-is. When provided, these are scraped in addition to any search terms above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "any",
                            "ristoranti",
                            "alberghi",
                            "bar-caffe",
                            "negozi",
                            "supermercati",
                            "parrucchieri",
                            "estetiste-centri-estetici",
                            "palestre-fitness",
                            "medici-specialisti",
                            "dentisti",
                            "farmacie",
                            "avvocati",
                            "commercialisti",
                            "agenzie-immobiliari",
                            "idraulici",
                            "elettricisti",
                            "imprese-edili",
                            "autofficine",
                            "officine-meccaniche",
                            "carrozzerie",
                            "assicurazioni",
                            "banche",
                            "scuole",
                            "veterinari"
                        ],
                        "type": "string",
                        "description": "Pick a ready-made business sector instead of typing your own search term. When set to anything other than 'Any category', the chosen sector becomes the search term and is combined with every location below (any terms you typed under 'What to search' are ignored for this run). Choose 'Any category' to use your own search terms instead.",
                        "default": "any"
                    },
                    "sort": {
                        "title": "Sort results by",
                        "enum": [
                            "relevance",
                            "distance",
                            "popularity"
                        ],
                        "type": "string",
                        "description": "Order in which businesses are collected. 'Relevance' is the PagineGialle default; 'Nearest first' orders by distance from the searched location; 'Most popular' surfaces the most-viewed businesses first.",
                        "default": "relevance"
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of business listings to collect for each search (each what + where combination, and each URL). Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper limit of 10,000 per search still applies to prevent runaway pagination). The actor stops requesting new pages once this number is reached but keeps the full final page even if it slightly overshoots.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
