# PagesJaunes Scraper — French Business Directory & Contact Info (`studio-amba/pagesjaunes-scraper`) Actor

Scrape business listings, phone numbers, addresses, ratings, and opening hours from PagesJaunes.fr — France's #1 business directory.

- **URL**: https://apify.com/studio-amba/pagesjaunes-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## PagesJaunes Scraper

Extract business listings from [PagesJaunes.fr](https://www.pagesjaunes.fr) — France's #1 business directory (Yellow Pages) — into structured JSON with names, phone numbers, addresses, ratings, opening hours, SIRET numbers, and GPS coordinates.

### What is PagesJaunes Scraper?

**PagesJaunes Scraper** lets you extract structured business data from France's largest professional directory, helping you build lead lists, analyze local markets, and automate B2B prospecting — all without manual browsing or copy-pasting.

- **Generate B2B leads at scale:** extract business names, phone numbers, emails, and websites for any profession in any French city — ready for your CRM or outreach tool
- **Analyze local competition:** map business density, average ratings, and review counts by area to find underserved markets or evaluate competitive pressure
- **Monitor directory listings:** schedule daily runs to track new businesses appearing in your category, spot closures, or detect rating changes
- **Enrich existing datasets:** add phone numbers, addresses, SIRET registration numbers, and GPS coordinates to your business database
- **Power location intelligence:** use latitude/longitude data to build maps, calculate service areas, or feed geospatial models

PagesJaunes.fr has **no public API and no bulk export feature**. This scraper is the only way to get structured data out of the platform at scale. No other Apify actor covers PagesJaunes.

### What data does PagesJaunes Scraper extract?

🏢 **Business name** — company or professional name
📍 **Full address** — street, postal code, and city
📞 **Phone number** — direct business line
🌐 **Website** — company URL
📧 **Email** — contact email (detail pages only)
🏷️ **Category** — business activity or profession
⭐ **Rating** — average score out of 5
💬 **Review count** — number of customer reviews
🗺️ **GPS coordinates** — latitude and longitude for mapping
🕐 **Opening hours** — day-by-day schedule (detail pages only)
📝 **Description** — business description text (detail pages only)
🔢 **SIRET number** — French business registration ID (detail pages only)
🔗 **Direct URL** to the listing on PagesJaunes.fr
🕒 **Scraped at** — timestamp for data freshness tracking

### How to scrape PagesJaunes.fr businesses

The input is simple: set a **search query** and **location**, then hit run. You can also provide PagesJaunes search result URLs directly.

#### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **searchQuery** | string | `"plombier"` | Business type or profession to search for (e.g., "restaurant", "dentiste", "electricien") |
| **location** | string | `"Paris"` | City name or postal code (e.g., "Lyon", "75011", "Marseille 13001") |
| **startUrls** | array | — | PagesJaunes search result or category page URLs. Overrides searchQuery/location when provided |
| **maxResults** | integer | `100` | Maximum number of results to return (1–10,000) |
| **scrapeDetails** | boolean | `false` | Visit each business's detail page for opening hours, description, email, and SIRET number |
| **proxyConfiguration** | object | Residential proxies | Proxy settings. Residential proxies are required — datacenter proxies will be blocked |

#### Tips for best results

- **Start small, then scale:** test with `maxResults: 10` to verify output before running thousands of results
- **Use specific locations:** "Paris 75011" returns more targeted results than just "Paris"
- **Enable `scrapeDetails` selectively:** listing pages already include name, address, phone, rating, and GPS. Only enable detail scraping when you need opening hours, SIRET, descriptions, or emails
- **Use `startUrls` for precision:** paste PagesJaunes search URLs directly when you need exact control over categories and filters
- **Schedule weekly runs** to keep your business database current — new listings appear daily across all categories

### Output

Results are stored in a **dataset** that you can download in JSON, CSV, Excel, XML, or HTML format directly from the Apify Console.

#### JSON example

```json
{
    "name": "Durand Plomberie & Chauffage",
    "address": "47 Rue Oberkampf",
    "city": "Paris",
    "postalCode": "75011",
    "phone": "01 43 57 82 14",
    "website": "https://www.durand-plomberie.fr",
    "email": "contact@durand-plomberie.fr",
    "url": "https://www.pagesjaunes.fr/pros/07428319",
    "category": "Plombier",
    "rating": 4.2,
    "reviewCount": 47,
    "latitude": 48.8634,
    "longitude": 2.3789,
    "openingHours": {
        "Lundi": "08:00 - 19:00",
        "Mardi": "08:00 - 19:00",
        "Mercredi": "08:00 - 19:00",
        "Jeudi": "08:00 - 19:00",
        "Vendredi": "08:00 - 19:00",
        "Samedi": "09:00 - 13:00"
    },
    "description": "Entreprise de plomberie et chauffage depuis 2003. Intervention rapide sur Paris 11e et arrondissements limitrophes. Devis gratuit.",
    "siret": "44928371600024",
    "scrapedAt": "2026-04-04T12:00:00.000Z"
}
````

### How much does it cost to scrape PagesJaunes?

PagesJaunes Scraper uses **HTTP requests with residential proxies**, keeping costs low while maintaining reliability against Cloudflare protection.

| Scenario | Est. cost | Time |
|----------|-----------|------|
| 100 businesses (listing only) | ~$0.10 | ~30 sec |
| 1,000 businesses (listing only) | ~$1.00 | ~3 min |
| 1,000 businesses with detail pages | ~$2.50 | ~8 min |
| 5,000 businesses with detail pages | ~$12.50 | ~35 min |

**Pricing breakdown:**

- Per result (listing only): ~$0.001
- Per result (with details): ~$0.004

### Can I integrate PagesJaunes Scraper with other apps?

Yes. PagesJaunes Scraper connects with any tool through [Apify integrations](https://apify.com/integrations):

- **Google Sheets** — automatically export business listings to a spreadsheet
- **Slack / Email** — get notified when new businesses match your criteria
- **Zapier / Make** — trigger workflows when data is ready
- **Airtable** — build a searchable business directory
- **REST API** — call the scraper programmatically from any language
- **Webhooks** — get notified when a run finishes

### Can I use PagesJaunes Scraper as an API?

Yes. Use the [Apify API](https://docs.apify.com/api/v2) to run PagesJaunes Scraper programmatically.

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/pagesjaunes-scraper").call(run_input={
    "searchQuery": "restaurant",
    "location": "Lyon",
    "maxResults": 200,
    "scrapeDetails": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} — {item['phone']} — {item['rating']}/5")
```

**JavaScript:**

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

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('studio-amba/pagesjaunes-scraper').call({
    searchQuery: 'restaurant',
    location: 'Lyon',
    maxResults: 200,
    scrapeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Check the [API tab](https://apify.com/studio-amba/pagesjaunes-scraper/api) for full documentation.

### FAQ

#### What is PagesJaunes.fr?

PagesJaunes.fr (now part of Solocal Group) is France's largest online business directory — the digital successor to the iconic Yellow Pages. It lists millions of businesses across every profession and city in France, with contact details, reviews, and opening hours.

#### How does PagesJaunes Scraper work?

It sends HTTP requests to PagesJaunes search pages using residential proxies and extracts structured data from the results. Optionally, it visits individual business detail pages for richer data like opening hours, SIRET numbers, and descriptions. No browser automation is needed for listing pages, keeping it fast and affordable.

#### What is a SIRET number?

SIRET (Systeme d'Identification du Repertoire des Etablissements) is the unique 14-digit identifier assigned to every business establishment in France. It's essential for B2B verification, legal compliance, and company research. Enable `scrapeDetails: true` to extract SIRET numbers.

#### Can I search by postal code instead of city name?

Yes. The `location` field accepts both city names ("Paris", "Lyon") and postal codes ("75011", "69001"). Postal codes often give more precise results for specific neighborhoods.

#### Why are some fields empty?

Fields like `email`, `openingHours`, `description`, and `siret` are only available on detail pages. Set `scrapeDetails: true` to extract them. Even with detail scraping, some businesses simply don't list all information on PagesJaunes.

#### How often should I run this scraper?

For lead generation, weekly runs are usually sufficient. For competitive monitoring or real-time business intelligence, daily runs ensure you catch new listings and changes quickly.

#### Is it legal to scrape PagesJaunes?

This scraper extracts publicly available business data that PagesJaunes.fr displays to all visitors. The data is factual (names, addresses, phone numbers, ratings) and consists of professional business information. As with any scraping tool, use the data responsibly and in compliance with applicable laws including GDPR.

### Limitations

- **France only.** PagesJaunes.fr covers French businesses exclusively.
- **Residential proxies required.** PagesJaunes uses Cloudflare anti-bot protection — datacenter proxies will be blocked.
- **Phone numbers may be partial.** Some listings use click-to-reveal phone numbers; the scraper extracts what's visible on the page.
- **Email, opening hours, SIRET, and description** require `scrapeDetails: true`, which increases run time and cost.
- **Rate limiting.** The actor uses controlled concurrency (max 3 concurrent pages) to avoid triggering blocks. Very large runs may take longer as a result.

### Other French data scrapers

Combine PagesJaunes Scraper with these actors for comprehensive French market coverage:

- 🍽️ [Resto Scraper](https://apify.com/studio-amba/resto-scraper) — French restaurant data (menus, reviews, prices)
- 🏠 [Logic-Immo Scraper](https://apify.com/studio-amba/logicimmo-scraper) — French real estate listings

### Your feedback

Found a bug or have a feature request? Please open an issue on the [Issues tab](https://apify.com/studio-amba/pagesjaunes-scraper/issues). We actively maintain this scraper and respond to all reports.

# Actor input Schema

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

PagesJaunes search result or category pages to scrape. Example: https://www.pagesjaunes.fr/annuaire/paris-75000/plombier

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

Business type or profession to search for (e.g., 'plombier', 'restaurant', 'dentiste'). Used together with 'location' to build a search URL. Ignored if startUrls are provided.

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

City name or postal code (e.g., 'Paris', '75001', 'Lyon'). Used together with 'searchQuery'. Ignored if startUrls are provided.

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

Maximum number of business listings to scrape.

## `scrapeDetails` (type: `boolean`):

Visit each business's detail page to extract additional data like opening hours, description, SIRET number, and full contact info. Slower but more complete.

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

Proxy settings. REQUIRED — PagesJaunes uses Cloudflare anti-bot protection. Residential proxies are strongly recommended.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/paris-75000/plombier"
    }
  ],
  "searchQuery": "plombier",
  "location": "Paris",
  "maxResults": 100,
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.pagesjaunes.fr/annuaire/paris-75000/plombier"
        }
    ],
    "searchQuery": "plombier",
    "location": "Paris",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/pagesjaunes-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 = {
    "startUrls": [{ "url": "https://www.pagesjaunes.fr/annuaire/paris-75000/plombier" }],
    "searchQuery": "plombier",
    "location": "Paris",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/pagesjaunes-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 '{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/paris-75000/plombier"
    }
  ],
  "searchQuery": "plombier",
  "location": "Paris",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/pagesjaunes-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "PagesJaunes Scraper — French Business Directory & Contact Info",
        "description": "Scrape business listings, phone numbers, addresses, ratings, and opening hours from PagesJaunes.fr — France's #1 business directory.",
        "version": "0.1",
        "x-build-id": "WtRqaa3mv2INvcwo1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~pagesjaunes-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-pagesjaunes-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/studio-amba~pagesjaunes-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-pagesjaunes-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/studio-amba~pagesjaunes-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-pagesjaunes-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "PagesJaunes search result or category pages to scrape. Example: https://www.pagesjaunes.fr/annuaire/paris-75000/plombier",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Business type or profession to search for (e.g., 'plombier', 'restaurant', 'dentiste'). Used together with 'location' to build a search URL. Ignored if startUrls are provided."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "City name or postal code (e.g., 'Paris', '75001', 'Lyon'). Used together with 'searchQuery'. Ignored if startUrls are provided."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of business listings to scrape.",
                        "default": 100
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "Visit each business's detail page to extract additional data like opening hours, description, SIRET number, and full contact info. Slower but more complete.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. REQUIRED — PagesJaunes uses Cloudflare anti-bot protection. Residential proxies are strongly recommended."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
