# Have I Been Pwned Breaches Catalog Scraper (`parseforge/hibp-breaches-catalog-scraper`) Actor

Pull the entire Have I Been Pwned breach catalog with company logos, breach dates, account counts, and the categories of data exposed like email addresses, passwords, and IP addresses. Filter by domain or fetch one breach by name. Built for breach awareness and security research.

- **URL**: https://apify.com/parseforge/hibp-breaches-catalog-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🛡 Have I Been Pwned Breaches Catalog Scraper

> 🚀 **Export the full Have I Been Pwned breach catalog in one run.** Pull all 1,001+ documented data breaches with company logos, breach dates, account counts, and the exact categories of data exposed.

> 🕒 **Last updated:** 2026-06-04 · **📊 18 fields** per record · 1,001+ breaches in the catalog · keyless public breach data

Have I Been Pwned (HIBP) is the most widely trusted public registry of known data breaches, maintained by security researcher Troy Hunt. This Actor reads the public breach catalog and turns it into clean, structured records you can analyze, monitor, and feed into your own security tooling. It is built for defensive security work and breach awareness, not for looking up individual people.

**Coverage:** every breach in the public HIBP catalog (over 1,001 entries at last refresh), including the company logo, the date the breach occurred, when it was added to HIBP, the number of accounts affected, a full description, and the list of data classes exposed such as email addresses, passwords, IP addresses, and phone numbers. You can list the entire catalog, filter by a single domain, or pull one breach by name.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Security analysts and blue teams | Track new and historical breaches affecting your domains |
| Threat intelligence researchers | Build a structured breach dataset for analysis |
| Compliance and risk teams | Evidence gathering for vendor and third party risk reviews |
| Developers and data engineers | Power dashboards, alerts, and awareness tooling |

### 📋 What the HIBP Breaches Catalog Scraper does

This Actor connects to the public Have I Been Pwned breach catalog and returns structured breach records. It supports three modes:

- **All breaches** lists every breach in the catalog.
- **Breaches by domain** returns only the breaches tied to a domain you provide, for example `adobe.com`.
- **Single breach by name** fetches one breach by its HIBP name, for example `Adobe` or `LinkedIn`.

Each record leads with the breached company logo and includes the breach date, the number of accounts affected, a description, and the categories of data exposed. The Actor only reads the breach catalog, which is public and keyless. It never looks up individual email addresses or accounts.

### 🎬 Full Demo (_🚧 Coming soon_)

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `mode` | select | `all` lists every breach, `domain` filters by a domain, `breach` fetches a single breach by name. Default `all`. |
| `domain` | string | Used with `domain` mode. A domain to filter by, for example `adobe.com`. |
| `breachName` | string | Used with `breach` mode. The exact HIBP breach name, for example `Adobe`. |
| `maxItems` | integer | Maximum records to return. Free users are capped at 10. |

**Example 1. List the catalog (default).**
```json
{
  "mode": "all",
  "maxItems": 50
}
````

**Example 2. Breaches for a single domain.**

```json
{
  "mode": "domain",
  "domain": "adobe.com"
}
```

> ⚠️ **Good to Know:** the `domain` field is only applied in `domain` mode and the `breachName` field is only applied in `breach` mode. A small number of catalog entries (around 5 percent) have no associated domain, so the `domain` field can be empty for those records. This is expected and reflects the source data.

### 📊 Output

| Field | Description |
|---|---|
| 🖼 `imageUrl` | Full URL of the breached company logo |
| 📌 `title` | Display title of the breach |
| 🏷 `name` | Stable HIBP breach name used for single lookups |
| 🌐 `domain` | Primary domain associated with the breach (can be empty) |
| 📅 `breachDate` | Date the breach is believed to have occurred |
| ➕ `addedDate` | Date the breach was added to HIBP |
| ✏️ `modifiedDate` | Date the breach record was last modified |
| 👥 `pwnCount` | Number of accounts affected |
| 📝 `description` | Full description of the breach |
| 🗂 `dataClasses` | Array of data categories exposed, such as email addresses and passwords |
| ✅ `isVerified` | Whether the breach has been verified |
| 🧪 `isFabricated` | Whether the breach is considered fabricated |
| 🔒 `isSensitive` | Whether the breach is flagged sensitive |
| 📦 `isRetired` | Whether the breach has been retired |
| 📨 `isSpamList` | Whether the entry is a spam list |
| 🦠 `isMalware` | Whether the entry relates to malware |
| 🆓 `isSubscriptionFree` | Whether the breach is searchable without a subscription |
| 🕒 `scrapedAt` | Timestamp when the record was collected |
| ❌ `error` | Error message if a record failed, otherwise null |

**Real sample records from a live run:**

```json
{
  "imageUrl": "https://logos.haveibeenpwned.com/000webhost.png",
  "title": "000webhost",
  "name": "000webhost",
  "domain": "000webhost.com",
  "breachDate": "2015-03-01",
  "addedDate": "2015-10-26T23:35:45Z",
  "modifiedDate": "2017-12-10T21:44:27Z",
  "pwnCount": 14936670,
  "dataClasses": ["Email addresses", "IP addresses", "Names", "Passwords"],
  "isVerified": true,
  "scrapedAt": "2026-06-04T19:46:11.282Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://logos.haveibeenpwned.com/123RF.png",
  "title": "123RF",
  "name": "123RF",
  "domain": "123rf.com",
  "breachDate": "2020-03-22",
  "addedDate": "2020-11-15T00:59:50Z",
  "modifiedDate": "2020-11-15T01:07:10Z",
  "pwnCount": 8661578,
  "dataClasses": ["Email addresses", "IP addresses", "Names", "Passwords", "Phone numbers", "Physical addresses", "Usernames"],
  "isVerified": true,
  "scrapedAt": "2026-06-04T19:46:11.427Z",
  "error": null
}
```

```json
{
  "imageUrl": "https://logos.haveibeenpwned.com/126.png",
  "title": "126",
  "name": "126",
  "domain": "126.com",
  "breachDate": "2012-01-01",
  "addedDate": "2016-10-08T07:46:05Z",
  "modifiedDate": "2016-10-08T07:46:05Z",
  "pwnCount": 6414191,
  "dataClasses": ["Email addresses", "Passwords"],
  "isVerified": false,
  "scrapedAt": "2026-06-04T19:46:11.462Z",
  "error": null
}
```

### ✨ Why choose this Actor

- **Complete catalog.** Pulls the entire public HIBP breach list, over 1,001 entries, in a single run.
- **Logo first.** Every record leads with the breached company logo for clean visual dashboards.
- **Three query modes.** List everything, filter by domain, or fetch one breach by name.
- **Rich data classes.** See exactly what was exposed in each breach, from passwords to physical addresses.
- **Defensive by design.** Reads only the public breach catalog. No personal account lookups.

### 📈 How it compares to alternatives

| Approach | Setup | Structured output | Logos included | Domain filter |
|---|---|---|---|---|
| This Actor | None, just run | Yes | Yes | Yes |
| Manual browsing of the HIBP website | High, copy by hand | No | No | Limited |
| Writing your own script | Medium, code and maintain | Depends on you | Depends on you | Depends on you |

### 🚀 How to use

1. **Create a free Apify account** using [this sign up link](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the HIBP Breaches Catalog Scraper.
3. Pick a mode. Leave it on `all` to list the entire catalog, or choose `domain` or `breach` and fill the matching field.
4. Set `maxItems` if you want fewer records, then click **Start**.
5. Download your results or connect them to another app through the Apify API and integrations.

### 💼 Business use cases

#### Third party and vendor risk

| Goal | How this helps |
|---|---|
| Screen vendors for known breaches | Filter the catalog by a vendor domain and review what was exposed |
| Document risk evidence | Keep a structured record of breach dates, account counts, and data classes |

#### Security operations and threat intel

| Goal | How this helps |
|---|---|
| Track the breach landscape | Pull the full catalog on a schedule and watch for new additions |
| Prioritize response | Use `pwnCount` and `dataClasses` to gauge severity |

#### Awareness and training

| Goal | How this helps |
|---|---|
| Build awareness content | Pull real breach examples with logos and descriptions |
| Brief leadership | Summarize recent breaches affecting your sector |

#### Research and reporting

| Goal | How this helps |
|---|---|
| Study breach trends | Analyze breach dates and exposed data classes over time |
| Publish findings | Build datasets from a trusted public source |

### 🔌 Automating HIBP Breaches Catalog Scraper

Connect the Actor output to the tools your team already uses:

- **Make** and **Zapier** to trigger workflows when a run finishes.
- **Slack** to post a summary of new breaches to a security channel.
- **Airbyte** to load breach records into a warehouse.
- **GitHub** to commit dataset snapshots for versioned tracking.
- **Google Drive** to archive run outputs for your records.

### 🌟 Beyond business use cases

- **Research.** Academics and journalists can study how breaches evolve over time using a trusted public source.
- **Personal projects.** Build a personal dashboard that tracks breaches affecting the brands you use.
- **Non-profit.** Community defenders and digital rights groups can monitor the breach landscape at no infrastructure cost.
- **Experimentation.** Practice data engineering and visualization with a clean, real world dataset.

### 🤖 Ask an AI assistant

Drop your dataset into your favorite assistant and ask it to summarize, cluster, or chart the results:

- [ChatGPT](https://chat.openai.com)
- [Claude](https://claude.ai)
- [Perplexity](https://www.perplexity.ai)
- [Microsoft Copilot](https://copilot.microsoft.com)

### ❓ Frequently Asked Questions

**Does this Actor look up individual email addresses or passwords?**
No. It reads only the public breach catalog, which describes breaches at the company level. It never queries individual accounts and needs no API key.

**Do I need a Have I Been Pwned API key?**
No. The breach catalog endpoints used here are public and keyless. Only per account lookups, which this Actor does not perform, require a key.

**How many breaches are in the catalog?**
At the last refresh there were over 1,001 breaches. The number grows as new breaches are documented.

**Can I filter to a specific company or domain?**
Yes. Use `domain` mode and provide a domain such as `adobe.com` to return only the breaches tied to that domain.

**Can I fetch just one breach?**
Yes. Use `breach` mode and provide the exact HIBP breach name, for example `Adobe` or `LinkedIn`.

**Why is the domain field sometimes empty?**
A small share of catalog entries have no associated domain in the source data. The Actor keeps the field and leaves it empty for those records rather than dropping them.

**What are data classes?**
They are the categories of information exposed in a breach, such as email addresses, passwords, IP addresses, names, and phone numbers. Each record includes them as an array.

**How current is the data?**
The Actor reads the live catalog at run time, so each run reflects the current state of the public HIBP database.

**Is this affiliated with Have I Been Pwned?**
No. This is an independent tool that reads publicly available catalog data. It is not affiliated with or endorsed by Have I Been Pwned.

**Can free users run it?**
Yes. Free runs are limited to 10 records as a preview. Paid plans raise the limit substantially.

**What if a breach name is not found?**
The Actor returns a single record with an `error` message explaining that no breach was found for that name.

**Can I schedule recurring runs?**
Yes. Use the Apify scheduler to run the Actor on an interval and track changes to the catalog over time.

### 🔌 Integrate with any app

Every run produces a structured dataset you can pull through the Apify API, webhooks, or the built in integrations. Push breach records straight into spreadsheets, databases, BI tools, or your own security platform.

### 🔗 Recommended Actors

- [CISA KEV Scraper](https://apify.com/parseforge/cisa-kev-scraper) for known exploited vulnerabilities.
- [NIST NVD CVE Scraper](https://apify.com/parseforge/nist-nvd-cve-scraper) for the national vulnerability database.
- [URLhaus Malware URLs Scraper](https://apify.com/parseforge/urlhaus-malware-urls-scraper) for malicious URL intelligence.
- [Feodo Tracker C2 Scraper](https://apify.com/parseforge/feodo-tracker-c2-scraper) for botnet command and control servers.
- [GitHub Security Advisories Scraper](https://apify.com/parseforge/github-security-advisories-scraper) for open source advisories.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with Have I Been Pwned. Only publicly available breach catalog data is collected. This Actor is intended for defensive security, breach awareness, and research, and does not perform lookups of individual people.

# Actor input Schema

## `mode` (type: `string`):

What to fetch from the Have I Been Pwned breach catalog. 'All breaches' lists every breach. 'By domain' returns only breaches tied to a domain. 'Single breach' fetches one breach by its name.

## `domain` (type: `string`):

Only used when Mode is 'Breaches by domain'. A domain to filter breaches by, for example 'adobe.com'. Leave empty for other modes.

## `breachName` (type: `string`):

Only used when Mode is 'Single breach by name'. The exact breach Name as used by Have I Been Pwned, for example 'Adobe' or 'LinkedIn'. Leave empty for other modes.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "mode": "all",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/hibp-breaches-catalog-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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/hibp-breaches-catalog-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 '{
  "maxItems": 10
}' |
apify call parseforge/hibp-breaches-catalog-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Have I Been Pwned Breaches Catalog Scraper",
        "description": "Pull the entire Have I Been Pwned breach catalog with company logos, breach dates, account counts, and the categories of data exposed like email addresses, passwords, and IP addresses. Filter by domain or fetch one breach by name. Built for breach awareness and security research.",
        "version": "0.1",
        "x-build-id": "mQflcESXM94xm0Xfk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~hibp-breaches-catalog-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-hibp-breaches-catalog-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/parseforge~hibp-breaches-catalog-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-hibp-breaches-catalog-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/parseforge~hibp-breaches-catalog-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-hibp-breaches-catalog-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "all",
                            "domain",
                            "breach"
                        ],
                        "type": "string",
                        "description": "What to fetch from the Have I Been Pwned breach catalog. 'All breaches' lists every breach. 'By domain' returns only breaches tied to a domain. 'Single breach' fetches one breach by its name.",
                        "default": "all"
                    },
                    "domain": {
                        "title": "Domain",
                        "type": "string",
                        "description": "Only used when Mode is 'Breaches by domain'. A domain to filter breaches by, for example 'adobe.com'. Leave empty for other modes."
                    },
                    "breachName": {
                        "title": "Breach name",
                        "type": "string",
                        "description": "Only used when Mode is 'Single breach by name'. The exact breach Name as used by Have I Been Pwned, for example 'Adobe' or 'LinkedIn'. Leave empty for other modes."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
