# Leboncoin.fr ·Only $0.79💰· Any Category· Full Listings + GPS (`memo23/leboncoin-scraper`) Actor

\[Only $0.79💰] Turn any leboncoin.fr search into a clean dataset — real estate, cars, jobs, goods. One row per ad: price, full description, GPS coordinates, seller, all images, every category attribute, plus boost flags. Anti-bot handled — no proxy or captcha setup. JSON or CSV, billed per result.

- **URL**: https://apify.com/memo23/leboncoin-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** AI, Agents, Jobs
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

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

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

## Leboncoin.fr Scraper

**Turn any leboncoin.fr search into a structured dataset — across every category.** Paste a search URL (real estate, cars, jobs, goods, services — anything) and get every matching ad as a clean row: title, price, full description, location with real GPS coordinates, seller type, all images, and **every category-specific attribute flattened inline** (rooms, surface, energy rating, mileage, brand, etc.). The site's anti-bot access is handled for you — no captcha keys, no proxy juggling. JSON or CSV out, billed per result.

#### How it works

![How Leboncoin Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-leboncoin.png)

#### ✨ Why use this scraper?

Tracking the French classifieds market? Building real-estate or used-car price datasets? Monitoring new listings in a city or category? leboncoin is France's largest marketplace — and this actor turns any of its searches into structured data without you touching its anti-bot.

- 🔗 **One input: a search URL.** Set your filters on leboncoin in the browser — category, location, price range, keyword, condition — then copy the URL. The actor translates every filter into the search API automatically.
- 🗂️ **Every category works.** Real estate, vehicles, jobs, holiday rentals, fashion, electronics, services — the same actor handles all of them. Category-specific fields come through as a flattened `attributes` object.
- 🛡️ **Anti-bot handled for you.** leboncoin is protected by an aggressive anti-bot layer; this actor clears it transparently and reuses the access token down the pages. You configure nothing — no captcha key, no special proxy setup.
- 📍 **Real GPS coordinates.** Each ad carries `location.lat` / `location.lng` plus city, zip, district, department and region — not just a place name.
- 🖼️ **All images + full description.** Every photo URL and the complete ad body, not a truncated preview.
- 📤 **Clean exports.** One row per ad, JSON + CSV exported automatically. The dataset row count equals the ad count exactly — no padding rows.

#### 🎯 Use cases

| Team | What they build |
|------|-----------------|
| **Real-estate analysts** | Price-per-m² datasets by city/district, new-listing alerts, inventory tracking |
| **Used-car dealers / marketplaces** | Pricing comps by make/model/mileage, arbitrage spotting |
| **Recruiters** | Feeds of new job ads by region and sector |
| **Market researchers** | Supply, pricing and seller-type trends across any category in France |
| **Resellers / arbitrage** | Underpriced-listing discovery in electronics, fashion, collectibles |
| **Data teams** | A clean, structured mirror of any leboncoin search for downstream pipelines |

#### 📥 Supported inputs

Pass one or more leboncoin **search URLs** in `startUrls`. The easiest workflow:

1. Open [leboncoin.fr](https://www.leboncoin.fr) and apply any filters you want (category, location, price, keyword…).
2. Copy the URL from your browser's address bar — it will look like `https://www.leboncoin.fr/recherche?category=9&locations=Rennes&price=...`.
3. Paste it into `startUrls`. Mix several different searches in one run.

| URL pattern | Behaviour |
|---|---|
| `https://www.leboncoin.fr/recherche?category=9&real_estate_type=2` | All apartment sales (real estate) |
| `https://www.leboncoin.fr/recherche?category=2&...` | Cars, with your filters (brand, price, mileage…) |
| `https://www.leboncoin.fr/recherche?text=macbook&...` | Keyword search across a category |
| `https://www.leboncoin.fr/recherche?category=9&locations=Paris_75000__...` | Any category restricted to a location |

**Not supported:** single-ad detail URLs as a starting point (the search already returns full ad data per row), and hosts other than `leboncoin.fr`.

#### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | `["https://www.leboncoin.fr/recherche?category=9&real_estate_type=2"]` | leboncoin `/recherche?...` search URLs. Filters in the query string are translated to the search API. Mix several searches freely. |
| `maxItems` | integer | `1000` | Hard cap on ads collected **per search URL**. Big searches return hundreds of thousands of results — use this to control run size and cost. |
| `maxConcurrency` | integer | `3` | How many search URLs to process in parallel. Pages within one search are sequential (the access token is reused down the pages). |
| `proxy` | object | Apify Residential, FR | leboncoin is geo-aware; French residential proxies are strongly recommended (the default). |

#### 📊 Output overview

Each scraped ad is **one dataset row** of `rowType: "ad"`. Common fields (title, price, location, seller, images, dates) are promoted to the top level; everything category-specific is flattened into the `attributes` object (with the untouched raw array kept in `attributesRaw`). The dataset row count equals the ad count exactly.

#### 📦 Output sample

One row per ad (description trimmed here for readability):

```json
{
  "rowType": "ad",
  "adId": "3201756535",
  "title": "Magnifique appartement cœur de ville",
  "description": "✨ Superbe appartement – Cœur de ville – 131,85 m² carrez ✨ Idéalement situé en plein cœur de Rennes…",
  "price": 568000,
  "priceCents": 56800000,
  "currency": "EUR",
  "url": "https://www.leboncoin.fr/ad/ventes_immobilieres/3201756535",
  "categoryId": "9",
  "categoryName": "Ventes immobilières",
  "adType": "offer",
  "status": "active",
  "firstPublishedAt": "2026-05-20 15:37:40",
  "indexedAt": "2026-06-10 15:37:40",
  "expiresAt": "2026-07-19 15:37:40",
  "seller": {
    "type": "private",
    "name": "Bihanlili22",
    "storeId": "28949902",
    "userId": "1e9e77c6-2d7e-4300-95b7-7655539a486a",
    "sector": null
  },
  "location": {
    "city": "Rennes",
    "zipcode": "35000",
    "district": "Centre",
    "department": "Ille-et-Vilaine",
    "region": "Bretagne",
    "country": "FR",
    "lat": 48.11487,
    "lng": -1.67941
  },
  "images": {
    "count": 11,
    "thumb": "https://img.leboncoin.fr/api/v1/lbcpb1/images/50/f5/44/...jpg?rule=ad-thumb",
    "urls": ["https://img.leboncoin.fr/.../...jpg?rule=ad-image", "..."]
  },
  "attributes": {
    "type_real_estate_sale": "Ancien",
    "real_estate_type": "Appartement",
    "square": "130 m²",
    "rooms": "6",
    "bedrooms": "4 ch.",
    "nb_bathrooms": "1",
    "energy_rate": "C",
    "ges": "D"
  },
  "attributesRaw": [ "...the full raw attribute array, untouched..." ],
  "hasPhone": true,
  "isBoosted": false,
  "options": { "has_option": true, "gallery": true, "highlight": true, "urgent": false, "sub_toplist": false },
  "favorites": null,
  "scrapedAt": "2026-06-10T13:39:17.254Z"
}
````

#### 🗂 Key output fields

| Group | Fields |
|---|---|
| **Identifiers** | `rowType`, `adId`, `url`, `scrapedAt` |
| **Listing** | `title`, `description` (full text), `adType` (`offer` / `demand`), `status` |
| **Price** | `price` (number), `priceCents`, `currency` |
| **Category** | `categoryId`, `categoryName` |
| **Dates** | `firstPublishedAt`, `indexedAt`, `expiresAt` |
| **Seller** | `seller.{type` (`private` / `pro`)`, name, storeId, userId, sector}` |
| **Location** | `location.{city, zipcode, district, department, region, country, lat, lng}` |
| **Images** | `images.{count, thumb, urls[]}` |
| **Attributes** | `attributes` (flattened key→value for the category: rooms, square, energy\_rate, mileage, brand, condition…), `attributesRaw` (the original array, with labels) |
| **Promotion** | `isBoosted` (seller paid for extra visibility), `options` (boost flags: `urgent`, `gallery`, `highlight`, `sub_toplist`…), `favorites` (popularity count, when leboncoin exposes it) |
| **Misc** | `hasPhone` (whether a phone number is offered on the ad) |

The exact keys inside `attributes` depend on the category — a real-estate ad carries `rooms` / `square` / `energy_rate`, a car ad carries `brand` / `mileage` / `fuel`, and so on. Whatever leboncoin shows on the ad, you get.

#### ❓ FAQ

**Do I need a captcha-solver or special proxy?**
No. The actor handles leboncoin's anti-bot access layer itself and ships with a sensible French-residential proxy default. You just paste a search URL.

**How do I scrape a specific category, city, or price range?**
Set the filters on leboncoin.fr in your browser, then copy the URL — every filter (category, `locations`, `price`, `text`, condition, etc.) is carried through to the search API. No need to learn the API yourself.

**Why is there a cap on very large searches?**
leboncoin itself caps how deep you can paginate a single search. For searches with hundreds of thousands of results, split by location or add filters to stay under the cap and get complete coverage of each slice.

**Can I scrape private data or contact details?**
No. The actor reads only the public search results. It does not log in, does not reveal hidden phone numbers, and collects no private user data — `hasPhone` is simply leboncoin's public flag for whether a phone number is offered.

**One row per ad — no duplicates?**
Correct. Ads are de-duplicated by their `adId` within a run, so the dataset row count matches the unique ad count.

#### 💬 Support

- For issues or feature requests, please use the **Issues** tab on the actor's Apify Console page.
- Author's website: <https://muhamed-didovic.github.io/>
- Email: <muhamed.didovic@gmail.com>

#### 🛠 Additional services

- Custom output shape, extra fields, or one-off datasets: <muhamed.didovic@gmail.com>
- Need detail-page enrichment, scheduled monitoring, or another French marketplace scraped? Drop an email.
- For API access (no Apify fee, just a usage fee for the API): <muhamed.didovic@gmail.com>

#### 🔎 Explore more scrapers

If this Leboncoin Scraper was useful, see other scrapers and actors at [memo23's Apify profile](https://apify.com/memo23) — covering real estate, classifieds, job boards, social media, and more.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by leboncoin, Adevinta, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available search-result data on leboncoin.fr — no authenticated endpoints, no logged-in content, and no private user data. Users are responsible for ensuring their use complies with leboncoin.fr's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.

***

### SEO Keywords

leboncoin scraper, scrape leboncoin, leboncoin api, leboncoin.fr scraper, Apify leboncoin, leboncoin data extraction, france classifieds scraper, leboncoin real estate scraper, leboncoin immobilier scraper, leboncoin cars scraper, leboncoin voiture scraper, leboncoin price data, french marketplace scraper, leboncoin listings api, leboncoin annonces scraper, scrape french classifieds, leboncoin monitoring, leboncoin alerts, leboncoin jobs scraper, leboncoin location scraper, adevinta scraper

# Actor input Schema

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

Full leboncoin.fr `/recherche?...` URLs. Filters in the query string (category, location, price range, keyword) are translated to the search API automatically. Mix several searches in one run.

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

Hard cap on the number of ads collected for each search URL. Some leboncoin searches return hundreds of thousands of results — use this to control your run size and cost. leboncoin caps deep pagination, so very large searches are best split by location or filter.

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

How many search URLs to process in parallel. Pages within a single search are fetched sequentially (the access cookie is reused down the pages). Keep this low (1–3) for the most reliable results.

## `proxy` (type: `object`):

leboncoin is geo-aware, so French residential proxies are strongly recommended (the default). Leave as-is unless you have a reason to change it.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.leboncoin.fr/recherche?category=9&real_estate_type=2"
  ],
  "maxItems": 1000,
  "maxConcurrency": 3,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}
```

# 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": [
        "https://www.leboncoin.fr/recherche?category=9&real_estate_type=2"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "FR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/leboncoin-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": ["https://www.leboncoin.fr/recherche?category=9&real_estate_type=2"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "FR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/leboncoin-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": [
    "https://www.leboncoin.fr/recherche?category=9&real_estate_type=2"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}' |
apify call memo23/leboncoin-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Leboncoin.fr ·Only $0.79💰· Any Category· Full Listings + GPS",
        "description": "[Only $0.79💰] Turn any leboncoin.fr search into a clean dataset — real estate, cars, jobs, goods. One row per ad: price, full description, GPS coordinates, seller, all images, every category attribute, plus boost flags. Anti-bot handled — no proxy or captcha setup. JSON or CSV, billed per result.",
        "version": "0.0",
        "x-build-id": "r8kypjznE3YZ6wwXs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~leboncoin-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-leboncoin-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/memo23~leboncoin-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-leboncoin-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/memo23~leboncoin-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-leboncoin-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Leboncoin search URLs",
                        "type": "array",
                        "description": "Full leboncoin.fr `/recherche?...` URLs. Filters in the query string (category, location, price range, keyword) are translated to the search API automatically. Mix several searches in one run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum ads per search URL",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Hard cap on the number of ads collected for each search URL. Some leboncoin searches return hundreds of thousands of results — use this to control your run size and cost. leboncoin caps deep pagination, so very large searches are best split by location or filter.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Max concurrent search URLs",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many search URLs to process in parallel. Pages within a single search are fetched sequentially (the access cookie is reused down the pages). Keep this low (1–3) for the most reliable results.",
                        "default": 3
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "leboncoin is geo-aware, so French residential proxies are strongly recommended (the default). Leave as-is unless you have a reason to change it.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "FR"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
