# Pagesjaunes Scraper Ppr (`silentflow/pagesjaunes-scraper-ppr`) Actor

PagesJaunes scraper PPR - Pay per result pricing! Extract 130+ business fields from PagesJaunes.fr yellow pages: emails, phones, SIRET, addresses, reviews, ratings. Perfect for lead generation in France. Residential proxy included. No upfront costs, only pay for successful results.

- **URL**: https://apify.com/silentflow/pagesjaunes-scraper-ppr.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.30 / 1,000 results

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.
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-result

## 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 (Pay Per Result)

**🇬🇧 English** | [🇫🇷 Français](#-pagesjaunes-scraper-pay-per-result-français)

---

### What is PagesJaunes Scraper PPR?

PagesJaunes Scraper PPR (Pay Per Result) allows you to **extract business listings from PagesJaunes.fr** with a pay-per-result pricing model. You only pay for successful results! This version includes mandatory residential proxy protection for maximum reliability.

Perfect for:
- 📞 **Lead generation** - Build targeted contact lists with verified emails and phone numbers
- 📊 **Market research** - Analyze business trends and competitor landscapes
- 🔍 **Data enrichment** - Enhance your existing databases with detailed French business information
- 📈 **Local SEO** - Track directory listings and optimize local search presence

---

### ⚠️ Important: Residential Proxy Required

**This PPR version requires residential proxies to run.** The scraper will exit with an error if no proxy is configured. This ensures maximum anti-ban protection and reliable scraping.

You must configure one of the following:
1. Run on Apify platform (automatic proxy access)
2. Provide custom residential proxy via `proxyUrl` input parameter
3. Set `APIFY_PROXY_PASSWORD` environment variable

---

### What can you search for?

You can scrape businesses by:

| Search option | Examples |
|--------------|----------|
| **Location + Activity** | Paris restaurants, Lyon plumbers, Marseille lawyers |
| **Search result pages** | `https://www.pagesjaunes.fr/annuaire/paris-75/restaurants` |
| **Individual listings** | `https://www.pagesjaunes.fr/pros/12345678` |
| **Categories** | Restaurants, Hotels, Doctors, Pharmacies, Plumbers, Electricians, Lawyers, Accountants, Shops, etc. |

---

### What information do you get?

For each business found, you receive **130+ detailed fields** including:

| Information | Description |
|-------------|-------------|
| 📝 **Business name** | Company or establishment name |
| 📧 **Email** | Primary email address |
| 📞 **Phone** | Phone number (formatted and raw) |
| 🌐 **Website** | Business website URL |
| 📍 **Address** | Complete address with postal code and city |
| 🗺️ **Location** | Latitude and longitude coordinates |
| 🏢 **SIRET/SIREN** | French business registration numbers |
| ⭐ **Rating** | Customer rating (0-5 stars) |
| 💬 **Reviews** | Number of customer reviews |
| 🕐 **Opening hours** | Business hours for each day |
| 🏷️ **Activity** | Business category and NAF code |
| 🔗 **Social media** | Facebook, Twitter, LinkedIn, Instagram links |
| 📸 **Photos** | Business photos and logo |
| 💼 **Services** | List of services and amenities offered |
| 💳 **Payment methods** | Accepted payment types |
| 🏷️ **Brands** | Distributed brands and products |
| 🌍 **Languages** | Languages spoken |
| ✅ **Certifications** | Quality labels and certifications |
| 💰 **Pricing** | Price range and average prices |
| 👥 **Staff** | Management and employee information |
| 📊 **Financial data** | Revenue, capital, and financial information |

...and many more fields covering every aspect of the business!

---

### How to use?

#### Option 1: Search result pages

1. Go to PagesJaunes.fr and search for businesses
2. Apply your filters (location, activity, etc.)
3. Copy the URL from your browser
4. Paste it in the "Start URLs" field

Example URLs:
- `https://www.pagesjaunes.fr/annuaire/paris-75/restaurants`
- `https://www.pagesjaunes.fr/annuaire/lyon-69/plombiers`
- `https://www.pagesjaunes.fr/annuaire/marseille-13/coiffeurs`

The scraper will automatically extract all businesses from the search results and navigate through all pages.

#### Option 2: Individual listings

If you have specific business URLs, you can scrape them directly:

Example: `https://www.pagesjaunes.fr/pros/12345678`

---

### Example results

```json
{
  "denomination": "Le Petit Bistrot",
  "email": "contact@lepetitbistrot.fr",
  "telephone": "01 23 45 67 89",
  "site_web": "https://www.lepetitbistrot.fr",
  "adresse_full_long": "123 Rue de Rivoli, 75001 Paris",
  "codePostal": "75001",
  "ville": "Paris",
  "siret": "12345678901234",
  "basicInfo_place_rating": 4.5,
  "basicInfo_place_nb_review": 120,
  "url": "https://www.pagesjaunes.fr/pros/12345678"
}
````

***

### Tips for best results

1. ✅ **Use specific URLs** - Copy exact search result URLs from PagesJaunes
2. ✅ **Start small** - Test with 1-2 pages first
3. ✅ **Respect limits** - Don't scrape too many pages at once
4. ✅ **Use French proxies** - French residential proxies are mandatory and recommended

***

### Need help?

If you have questions or need assistance, feel free to contact us!

***

***

## 📇 PagesJaunes Scraper (Pay Per Result) - Français

[🇬🇧 English](#-pagesjaunes-scraper-pay-per-result) | **🇫🇷 Français**

***

### Qu'est-ce que PagesJaunes Scraper PPR ?

PagesJaunes Scraper PPR (Pay Per Result) vous permet d'**extraire les annonces d'entreprises sur PagesJaunes.fr** avec un modèle de tarification au résultat. Vous ne payez que pour les résultats réussis ! Cette version inclut une protection proxy résidentielle obligatoire pour une fiabilité maximale.

Parfait pour :

- 📞 **Génération de leads** - Créez des listes de contacts ciblées avec des emails et numéros de téléphone vérifiés
- 📊 **Études de marché** - Analysez les tendances des entreprises et les paysages concurrentiels
- 🔍 **Enrichissement de données** - Améliorez vos bases de données existantes avec des informations détaillées sur les entreprises françaises
- 📈 **SEO local** - Suivez les annonces d'annuaires et optimisez la présence en recherche locale

***

### ⚠️ Important : Proxy Résidentiel Requis

**Cette version PPR nécessite des proxies résidentiels pour fonctionner.** Le scraper se terminera avec une erreur si aucun proxy n'est configuré. Cela garantit une protection anti-ban maximale et un scraping fiable.

Vous devez configurer l'un des éléments suivants :

1. Exécuter sur la plateforme Apify (accès proxy automatique)
2. Fournir un proxy résidentiel personnalisé via le paramètre d'entrée `proxyUrl`
3. Définir la variable d'environnement `APIFY_PROXY_PASSWORD`

***

### Que pouvez-vous rechercher ?

Vous pouvez scraper des entreprises par :

| Option de recherche | Exemples |
|---------------------|----------|
| **Localisation + Activité** | Restaurants Paris, Plombiers Lyon, Avocats Marseille |
| **Pages de résultats** | `https://www.pagesjaunes.fr/annuaire/paris-75/restaurants` |
| **Annonces individuelles** | `https://www.pagesjaunes.fr/pros/12345678` |
| **Catégories** | Restaurants, Hôtels, Médecins, Pharmacies, Plombiers, Électriciens, Avocats, Experts-comptables, Magasins, etc. |

***

### Quelles informations obtenez-vous ?

Pour chaque entreprise trouvée, vous recevez **130+ champs détaillés** incluant :

| Information | Description |
|-------------|-------------|
| 📝 **Nom de l'entreprise** | Nom de la société ou de l'établissement |
| 📧 **Email** | Adresse email principale |
| 📞 **Téléphone** | Numéro de téléphone (formaté et brut) |
| 🌐 **Site web** | URL du site web de l'entreprise |
| 📍 **Adresse** | Adresse complète avec code postal et ville |
| 🗺️ **Localisation** | Coordonnées latitude et longitude |
| 🏢 **SIRET/SIREN** | Numéros d'immatriculation des entreprises françaises |
| ⭐ **Note** | Note client (0-5 étoiles) |
| 💬 **Avis** | Nombre d'avis clients |
| 🕐 **Horaires** | Horaires d'ouverture pour chaque jour |
| 🏷️ **Activité** | Catégorie d'entreprise et code NAF |
| 🔗 **Réseaux sociaux** | Liens Facebook, Twitter, LinkedIn, Instagram |
| 📸 **Photos** | Photos et logo de l'entreprise |
| 💼 **Services** | Liste des services et équipements proposés |
| 💳 **Moyens de paiement** | Types de paiements acceptés |
| 🏷️ **Marques** | Marques distribuées et produits |
| 🌍 **Langues** | Langues parlées |
| ✅ **Certifications** | Labels qualité et certifications |
| 💰 **Tarifs** | Fourchette de prix et prix moyens |
| 👥 **Personnel** | Informations sur la direction et les employés |
| 📊 **Données financières** | Chiffre d'affaires, capital, informations financières |

...et bien d'autres champs couvrant tous les aspects de l'entreprise !

***

### Comment utiliser ?

#### Option 1 : Pages de résultats de recherche

1. Allez sur PagesJaunes.fr et recherchez des entreprises
2. Appliquez vos filtres (localisation, activité, etc.)
3. Copiez l'URL de votre navigateur
4. Collez-la dans le champ "Start URLs"

Exemples d'URLs :

- `https://www.pagesjaunes.fr/annuaire/paris-75/restaurants`
- `https://www.pagesjaunes.fr/annuaire/lyon-69/plombiers`
- `https://www.pagesjaunes.fr/annuaire/marseille-13/coiffeurs`

Le scraper va automatiquement extraire toutes les entreprises des résultats de recherche et naviguer à travers toutes les pages.

#### Option 2 : Annonces individuelles

Si vous avez des URLs d'entreprises spécifiques, vous pouvez les scraper directement :

Exemple : `https://www.pagesjaunes.fr/pros/12345678`

***

### Exemple de résultats

```json
{
  "denomination": "Le Petit Bistrot",
  "email": "contact@lepetitbistrot.fr",
  "telephone": "01 23 45 67 89",
  "site_web": "https://www.lepetitbistrot.fr",
  "adresse_full_long": "123 Rue de Rivoli, 75001 Paris",
  "codePostal": "75001",
  "ville": "Paris",
  "siret": "12345678901234",
  "basicInfo_place_rating": 4.5,
  "basicInfo_place_nb_review": 120,
  "url": "https://www.pagesjaunes.fr/pros/12345678"
}
```

***

### Conseils pour de meilleurs résultats

1. ✅ **Utilisez des URLs spécifiques** - Copiez les URLs exactes des résultats de recherche depuis PagesJaunes
2. ✅ **Commencez petit** - Testez avec 1-2 pages d'abord
3. ✅ **Respectez les limites** - Ne scrapez pas trop de pages à la fois
4. ✅ **Utilisez des proxies français** - Les proxies résidentiels français sont obligatoires et recommandés

***

### Besoin d'aide ?

Si vous avez des questions ou besoin d'assistance, n'hésitez pas à nous contacter !

# Actor input Schema

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

URLs to start scraping from. Can be search result pages (e.g., https://www.pagesjaunes.fr/annuaire/paris-75/restaurants) or individual listings (e.g., https://www.pagesjaunes.fr/pros/12345678)

## `maxItems` (type: `integer`):

Maximum number of listings to scrape

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time

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

Number of times the crawler will retry a failed request before giving up

## `requestTimeoutSecs` (type: `integer`):

Maximum time to wait for a page to load

## `proxyUrl` (type: `string`):

Custom proxy URL (optional, format: http://user:pass@host:port). If not provided, Apify residential proxy will be used.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants"
    }
  ],
  "maxItems": 1000,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 5,
  "requestTimeoutSecs": 60
}
```

# 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-75/restaurants"
        }
    ],
    "proxyUrl": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/pagesjaunes-scraper-ppr").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-75/restaurants" }],
    "proxyUrl": "",
}

# Run the Actor and wait for it to finish
run = client.actor("silentflow/pagesjaunes-scraper-ppr").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-75/restaurants"
    }
  ],
  "proxyUrl": ""
}' |
apify call silentflow/pagesjaunes-scraper-ppr --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Pagesjaunes Scraper Ppr",
        "description": "PagesJaunes scraper PPR - Pay per result pricing! Extract 130+ business fields from PagesJaunes.fr yellow pages: emails, phones, SIRET, addresses, reviews, ratings. Perfect for lead generation in France. Residential proxy included. No upfront costs, only pay for successful results.",
        "version": "1.0",
        "x-build-id": "FlXwF6IjMdjzBy130"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/silentflow~pagesjaunes-scraper-ppr/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-silentflow-pagesjaunes-scraper-ppr",
                "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/silentflow~pagesjaunes-scraper-ppr/runs": {
            "post": {
                "operationId": "runs-sync-silentflow-pagesjaunes-scraper-ppr",
                "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/silentflow~pagesjaunes-scraper-ppr/run-sync": {
            "post": {
                "operationId": "run-sync-silentflow-pagesjaunes-scraper-ppr",
                "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": "URLs to start scraping from. Can be search result pages (e.g., https://www.pagesjaunes.fr/annuaire/paris-75/restaurants) or individual listings (e.g., https://www.pagesjaunes.fr/pros/12345678)",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Maximum Items",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of listings to scrape",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time",
                        "default": 10
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up",
                        "default": 5
                    },
                    "requestTimeoutSecs": {
                        "title": "Request Timeout (seconds)",
                        "minimum": 10,
                        "maximum": 300,
                        "type": "integer",
                        "description": "Maximum time to wait for a page to load",
                        "default": 60
                    },
                    "proxyUrl": {
                        "title": "Proxy URL",
                        "type": "string",
                        "description": "Custom proxy URL (optional, format: http://user:pass@host:port). If not provided, Apify residential proxy will be used."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
