# Homebrew Formulae and Casks Scraper (`parseforge/homebrew-formulae-scraper`) Actor

Pull Homebrew formulae and casks from formulae.brew.sh in one run. Each record carries the package name, description, license, homepage, stable and head versions, dependencies, bottle download URLs, and install counts. Handy for registry mirrors, dependency audits, and package dashboards.

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

## Pricing

from $6.11 / 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)

## 🍺 Homebrew Formulae and Casks Scraper

> 🚀 **Export the Homebrew package catalog in one run.** Pull formulae and casks straight from the official formulae.brew.sh API, with versions, dependencies, bottle URLs, and real install counts.

> 🕒 **Last updated:** 2026-06-08 · **📊 Up to 24 fields** per record · 2 catalogs (formulae + casks) · live data from formulae.brew.sh

Turn the Homebrew package index into clean, structured records you can drop into a registry mirror, a dependency dashboard, or an internal package catalog. Pick formulae (command line tools and libraries) or casks (macOS desktop apps), name the exact packages you want, and get one tidy record per package with versions, dependencies, license, homepage, and install analytics.

Coverage is the complete public Homebrew catalog as formulae.brew.sh publishes it. Roughly 7,700 casks and a comparable set of formulae, each with its current stable version, dependency graph, download URLs, and 30, 90, and 365 day install counts. Leave the names list empty to walk the full catalog from the top, or pass exact tokens like `wget`, `node`, and `git` to fetch only what you need.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Platform and DevOps engineers | Mirror or audit the package registry |
| Security and compliance teams | Track licenses and dependency trees |
| Data engineers and analysts | Build package popularity dashboards |
| Tool and IDE developers | Seed a package search index |

### 📋 What the Homebrew Formulae and Casks Scraper does

This Actor calls the public formulae.brew.sh API and returns one clean record per package for the catalog you choose:

- **Formulae** — name, description, license, homepage, stable and head versions, runtime and build dependencies, conflicts, source URL, bottle download links per platform, and install counts.
- **Casks** — token, app name, description, homepage, version, installer URL and checksum, bundled app names, cask conflicts, auto update flag, and install counts.

You pick the package type, list the exact tokens you want (or leave it empty to take packages from the top of the catalog), and set how many records come back. Every record carries a `scrapedAt` timestamp.

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

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `type` | select | Which catalog to read. One of `formula` or `cask`. Defaults to `formula`. |
| `names` | array | Exact formula or cask tokens to fetch, for example `wget`, `node`, `git`. Leave empty to take packages from the top of the full catalog. |
| `maxItems` | integer | How many records to return. Free plan is capped at 10. |

**Example 1 — specific formulae**
```json
{
    "type": "formula",
    "names": ["wget", "node", "git", "ffmpeg"],
    "maxItems": 10
}
````

**Example 2 — a sample of casks from the top of the catalog**

```json
{
    "type": "cask",
    "names": [],
    "maxItems": 50
}
```

> ⚠️ **Good to Know:** Tokens are case sensitive lowercase, exactly as Homebrew lists them (`openssl@3`, `python@3.12`, `google-chrome`). When the `names` list is empty the Actor reads the full catalog file (a large list) and takes the first packages in alphabetical order, so it leads with tokens like `a2ps` and `a52dec`. Provide explicit names when you want particular packages.

### 📊 Output

Each record for the **formula** type looks like this:

| Field | Description |
|---|---|
| 📦 `name` | Formula token |
| 🏷 `type` | Always `formula` for this catalog |
| 🪪 `fullName` | Fully qualified name including tap |
| 🚰 `tap` | Source tap, usually `homebrew/core` |
| 📝 `description` | Short package description |
| ⚖️ `license` | SPDX license string |
| 🔗 `homepage` | Project homepage URL |
| 🔢 `stableVersion` | Current stable version |
| 🧪 `headVersion` | Head version label if available |
| 🔁 `revision` | Homebrew revision number |
| 🍾 `hasBottle` | Whether a prebuilt bottle exists |
| 🔒 `kegOnly` | Whether the formula is keg only |
| ⚠️ `deprecated` | Deprecation flag |
| 🚫 `disabled` | Disabled flag |
| 🧩 `dependencies` | Runtime dependency tokens |
| 🛠 `buildDependencies` | Build only dependency tokens |
| ⚔️ `conflictsWith` | Conflicting formula tokens |
| 📥 `stableUrl` | Source tarball URL for the stable version |
| 📈 `installs30d` | Installs in the last 30 days |
| 📈 `installs90d` | Installs in the last 90 days |
| 📈 `installs365d` | Installs in the last 365 days |
| 🗂 `bottles` | Per platform bottle download URLs and checksums |
| 🕒 `scrapedAt` | Collection timestamp |
| ❌ `error` | Null on success |

**Real sample — formula**

```json
{
    "name": "wget",
    "type": "formula",
    "fullName": "wget",
    "tap": "homebrew/core",
    "description": "Internet file retriever",
    "license": "GPL-3.0-or-later",
    "homepage": "https://www.gnu.org/software/wget/",
    "stableVersion": "1.25.0",
    "headVersion": "HEAD",
    "revision": 0,
    "hasBottle": true,
    "kegOnly": false,
    "deprecated": false,
    "disabled": false,
    "dependencies": ["libidn2", "openssl@3", "gettext", "libunistring"],
    "buildDependencies": ["pkgconf"],
    "conflictsWith": [],
    "stableUrl": "https://ftpmirror.gnu.org/gnu/wget/wget-1.25.0.tar.gz",
    "installs30d": 22849,
    "installs90d": 75787,
    "installs365d": 388965,
    "bottles": [
        {
            "platform": "arm64_tahoe",
            "url": "https://ghcr.io/v2/homebrew/core/wget/blobs/sha256:03be72d23a113a3273245b3e071667b611ea5d81dab6f52e995a84420d0ed734",
            "sha256": "03be72d23a113a3273245b3e071667b611ea5d81dab6f52e995a84420d0ed734"
        }
    ],
    "scrapedAt": "2026-06-08T17:52:08.529Z",
    "error": null
}
```

**Real sample — formula (node)**

```json
{
    "name": "node",
    "type": "formula",
    "fullName": "node",
    "tap": "homebrew/core",
    "description": "Open-source, cross-platform JavaScript runtime environment",
    "license": "MIT",
    "homepage": "https://nodejs.org/",
    "stableVersion": "26.0.0",
    "headVersion": "HEAD",
    "revision": 0,
    "hasBottle": true,
    "kegOnly": false,
    "deprecated": false,
    "disabled": false,
    "dependencies": ["ada-url", "brotli", "c-ares", "icu4c@78", "libuv", "openssl@3", "sqlite", "zstd"],
    "buildDependencies": ["pkgconf", "python@3.14"],
    "conflictsWith": [],
    "stableUrl": "https://nodejs.org/dist/v26.0.0/node-v26.0.0.tar.xz",
    "installs30d": 219091,
    "installs90d": 874576,
    "installs365d": 3056699,
    "scrapedAt": "2026-06-08T17:52:08.530Z",
    "error": null
}
```

**Real sample — cask (firefox)**

```json
{
    "name": "firefox",
    "type": "cask",
    "fullName": "firefox",
    "tap": "homebrew/cask",
    "title": "Mozilla Firefox",
    "names": ["Mozilla Firefox"],
    "description": "Web browser",
    "homepage": "https://www.mozilla.org/firefox/",
    "stableVersion": "151.0.3",
    "autoUpdates": true,
    "deprecated": false,
    "disabled": false,
    "url": "https://download-installer.cdn.mozilla.net/pub/firefox/releases/151.0.3/mac/en-US/Firefox%20151.0.3.dmg",
    "sha256": "60d5cb29412b161c76ecc58f3f8a960cd0048081cf84c6fe91579f1957564277",
    "appNames": ["Firefox.app"],
    "conflictsWithCasks": ["firefox@beta", "firefox@cn", "firefox@esr"],
    "installs30d": 17327,
    "installs90d": 51674,
    "installs365d": 206054,
    "scrapedAt": "2026-06-08T17:37:28.372Z",
    "error": null
}
```

### ✨ Why choose this Actor

- One clean record per package, with consistent field names for both formulae and casks.
- Dependency and build dependency lists come fully expanded as token arrays, not bare strings.
- Bottle download URLs and checksums for every platform Homebrew ships.
- Real 30, 90, and 365 day install counts straight from the official analytics.
- No Homebrew install, no key, and no login required.

### 📈 How it compares to alternatives

| Approach | Effort | Structured fields | Install analytics | Maintenance |
|---|---|---|---|---|
| This Actor | One run | Yes | Yes | None on your side |
| Parsing `brew info` output by hand | Hours | Inconsistent | Manual | Constant |
| Writing your own API client | Days | Depends | Manual | You own the upkeep |

### 🚀 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 Homebrew Formulae and Casks Scraper.
3. Choose a `type` (formula or cask).
4. Add the package tokens you want under `names`, or leave it empty to read from the top of the catalog, then set `maxItems`.
5. Click **Start** and grab your results when the run finishes.

### 💼 Business use cases

#### Platform and DevOps

| Goal | How this helps |
|---|---|
| Mirror the package registry | Pull versions, source URLs, and bottle links |
| Pin reproducible toolchains | Snapshot exact stable versions and revisions |

#### Security and compliance

| Goal | How this helps |
|---|---|
| Audit open source licenses | Read the `license` field across packages |
| Map dependency trees | Use `dependencies` and `buildDependencies` |

#### Analytics and research

| Goal | How this helps |
|---|---|
| Track package popularity | Compare `installs30d`, `installs90d`, `installs365d` |
| Study ecosystem trends | Snapshot the catalog on a schedule |

#### Tooling and developer experience

| Goal | How this helps |
|---|---|
| Power a package search index | Seed it with names, descriptions, and homepages |
| Surface deprecations | Filter on the `deprecated` and `disabled` flags |

### 🔌 Automating Homebrew Formulae and Casks Scraper

Connect runs to the tools you already use:

- **Make** and **Zapier** to trigger runs and route records into sheets or databases.
- **Slack** to post a summary when a run finishes.
- **Airbyte** to load results into a warehouse.
- **GitHub** Actions to schedule periodic catalog snapshots.
- **Google Drive** to archive each run's output.

### 🌟 Beyond business use cases

- **Research:** study how an open source package ecosystem grows over time.
- **Personal:** build a personal cheat sheet of the tools you install.
- **Non-profit:** keep a community package mirror current.
- **Experimentation:** prototype a package explorer without writing a client.

### 🤖 Ask an AI assistant

Paste your results into [ChatGPT](https://chat.openai.com), [Claude](https://claude.ai), [Perplexity](https://www.perplexity.ai), or [Microsoft Copilot](https://copilot.microsoft.com) and ask it to rank packages by installs, group formulae by license, or flag deprecated dependencies.

### ❓ Frequently Asked Questions

**Do I need Homebrew installed?**
No. The Actor reads the public formulae.brew.sh API, which needs no local install.

**Do I need an API key?**
No key is required. The Actor sends a descriptive User-Agent, as the API asks clients to do.

**What is the difference between formulae and casks?**
Formulae are command line tools and libraries built from source or bottles. Casks are macOS desktop applications distributed as prebuilt installers.

**How do I fetch specific packages?**
Set `type`, then list exact tokens under `names`, for example `wget`, `openssl@3`, or `google-chrome`. Tokens are lowercase and case sensitive.

**What happens if I leave names empty?**
The Actor reads the full catalog file and takes packages from the top, in alphabetical order, up to your `maxItems`.

**Are install counts real?**
Yes. They come from the `analytics.install` data the API publishes, covering 30, 90, and 365 day windows.

**Are dependencies included?**
Yes. Formulae return runtime `dependencies` and `buildDependencies` as token arrays, plus any `conflictsWith` entries.

**Can I get bottle download links?**
Yes. Each formula includes a `bottles` array with a per platform URL and sha256 checksum.

**What if a token does not exist?**
That package gets a record with an `error` message instead of data, and the run continues with the rest.

**How fresh is the data?**
Each run pulls live from formulae.brew.sh, so it reflects the catalog at run time.

### 🔌 Integrate with any app

Results are available through the Apify API, so you can pull them into any app, database, or workflow you already run.

### 🔗 Recommended Actors

- [Have I Been Pwned Breaches Catalog Scraper](https://apify.com/parseforge)
- [Brawlify Brawl Stars Database Scraper](https://apify.com/parseforge)
- More developer and reference data Actors in the [ParseForge collection](https://apify.com/parseforge)

> 💡 **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 Homebrew. Only publicly available data is collected.

# Actor input Schema

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

Which Homebrew catalog to read. 'Formulae' are command line packages and libraries. 'Casks' are macOS desktop applications.

## `names` (type: `array`):

Exact formula or cask tokens to fetch, for example 'wget', 'node', 'git' for formulae or 'firefox', 'google-chrome' for casks. Leave empty to take the first packages from the full catalog instead.

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

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

## Actor input object example

```json
{
  "type": "formula",
  "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/homebrew-formulae-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/homebrew-formulae-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/homebrew-formulae-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Homebrew Formulae and Casks Scraper",
        "description": "Pull Homebrew formulae and casks from formulae.brew.sh in one run. Each record carries the package name, description, license, homepage, stable and head versions, dependencies, bottle download URLs, and install counts. Handy for registry mirrors, dependency audits, and package dashboards.",
        "version": "0.1",
        "x-build-id": "oFuvbpe7FagBdhbgD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~homebrew-formulae-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-homebrew-formulae-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~homebrew-formulae-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-homebrew-formulae-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~homebrew-formulae-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-homebrew-formulae-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": {
                    "type": {
                        "title": "Package type",
                        "enum": [
                            "formula",
                            "cask"
                        ],
                        "type": "string",
                        "description": "Which Homebrew catalog to read. 'Formulae' are command line packages and libraries. 'Casks' are macOS desktop applications.",
                        "default": "formula"
                    },
                    "names": {
                        "title": "Package names",
                        "type": "array",
                        "description": "Exact formula or cask tokens to fetch, for example 'wget', 'node', 'git' for formulae or 'firefox', 'google-chrome' for casks. Leave empty to take the first packages from the full catalog instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
