# Feodo Tracker C2 Scraper (`parseforge/feodo-tracker-c2-scraper`) Actor

Tap the abuse.ch Feodo Tracker blocklist for live botnet command and control servers tied to Emotet, QakBot, and Dridex. Each row carries IP address, port, online status, ASN, country, and malware family. Built for firewall blocklisting, SOC alert enrichment, and threat hunting.

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

## Pricing

from $6.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)

## 🛡️ Feodo Tracker C2 Scraper

> 🚀 **Pull the live abuse.ch Feodo Tracker botnet C2 blocklist in one run.** Get every command-and-control server with IP, port, online status, ASN, country, and malware family, ready for blocklisting and SOC enrichment.

> 🕒 **Last updated:** 2026-06-04 · **📊 12 fields** per record · Emotet, QakBot, Dridex and more · Global ASN and country coverage

Feodo Tracker is a public threat-intelligence project run by abuse.ch that tracks the command-and-control (C2) infrastructure behind major banking trojans and loaders such as Emotet, QakBot, Dridex, TrickBot, BumbleBee and Pikabot. This Actor fetches the official Feodo Tracker IP blocklist and returns one clean row per C2 server so security teams can ingest fresh indicators of compromise (IOCs) without scraping HTML.

This is a defensive, public-data threat-intelligence tool. Every record comes straight from the abuse.ch public download feed. Use it to feed firewall and SIEM blocklists, enrich alerts in a SOC, hunt for malicious infrastructure, or back research into botnet hosting patterns.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| SOC and blue-team analysts | Blocklist firewalls, proxies, and DNS |
| Threat intelligence teams | Enrich alerts with C2 context |
| Incident responders | Confirm whether an IP is a known C2 |
| Detection engineers | Build and tune IOC detections |
| Security researchers | Study botnet hosting and ASN trends |

### 📋 What the Feodo Tracker C2 Scraper does

- Fetches the official abuse.ch Feodo Tracker IP blocklist (full or recommended).
- Returns one row per C2 server with IP, port, status, ASN, country, and malware family.
- Filters by malware family (for example Emotet or QakBot), online status, and country.
- Caps the number of rows returned so you can pull a quick sample or the whole list.
- Uses only the public download feed, no login, no API key, no images.

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

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `listType` | select | Which feed to fetch. `full` returns all tracked C2 servers, `recommended` returns the curated abuse.ch subset. |
| `malware` | text | Optional malware family filter, for example `QakBot`. Case insensitive, partial match. |
| `status` | select | `any`, `online`, or `offline`. |
| `country` | text | Optional two letter ISO country code, for example `US`. |
| `maxItems` | integer | Maximum rows to return. Free plan is capped at 10. |

Example input, full blocklist sample:

```json
{
  "listType": "full",
  "status": "any",
  "maxItems": 5
}
````

Example input, only online QakBot C2 servers hosted in the US:

```json
{
  "listType": "full",
  "malware": "QakBot",
  "status": "online",
  "country": "US",
  "maxItems": 50
}
```

> ⚠️ **Good to Know:** Feodo Tracker is a focused, high-signal feed. The number of active C2 servers it tracks at any moment is small and changes as botnets are taken down or new infrastructure appears, so a run may return only a handful of rows. The `hostname` field is null when a C2 IP has no reverse DNS (PTR) record, which is common for fresh malicious hosts.

### 📊 Output

Each record has the following fields:

| Field | Description |
|---|---|
| 🌐 `ipAddress` | C2 server IP address |
| 🔌 `port` | C2 communication port |
| 📡 `status` | `online` or `offline` |
| 🦠 `malware` | Malware family tied to this C2 |
| 🏷 `hostname` | Reverse DNS hostname, null when none exists |
| 🔢 `asNumber` | Autonomous System number hosting the IP |
| 🏢 `asName` | Autonomous System name |
| 🌍 `country` | Two letter ISO country code |
| 📅 `firstSeen` | When the C2 was first observed |
| ⏳ `lastOnline` | When the C2 was last seen online |
| 📋 `listType` | Which feed the row came from |
| 🕒 `scrapedAt` | When this Actor fetched the record |
| ❌ `error` | Null on data rows, set only when a run fails |

Three real sample records from a run on 2026-06-04:

```json
{
  "ipAddress": "162.243.103.246",
  "port": 8080,
  "status": "offline",
  "malware": "Emotet",
  "hostname": null,
  "asNumber": 14061,
  "asName": "DIGITALOCEAN-ASN",
  "country": "US",
  "firstSeen": "2022-06-04 21:24:53",
  "lastOnline": "2026-03-07",
  "listType": "full",
  "scrapedAt": "2026-06-04T19:49:37.201Z",
  "error": null
}
```

```json
{
  "ipAddress": "50.16.16.211",
  "port": 443,
  "status": "online",
  "malware": "QakBot",
  "hostname": "ec2-50-16-16-211.compute-1.amazonaws.com",
  "asNumber": 14618,
  "asName": "AMAZON-AES",
  "country": "US",
  "firstSeen": "2025-12-30 13:56:31",
  "lastOnline": "2026-03-12",
  "listType": "full",
  "scrapedAt": "2026-06-04T19:49:37.255Z",
  "error": null
}
```

```json
{
  "ipAddress": "178.62.3.223",
  "port": 443,
  "status": "offline",
  "malware": "QakBot",
  "hostname": "box.nautadb.com",
  "asNumber": 14061,
  "asName": "DIGITALOCEAN-ASN - DigitalOcean, LLC",
  "country": "GB",
  "firstSeen": "2026-02-17 05:41:23",
  "lastOnline": "2026-02-18",
  "listType": "full",
  "scrapedAt": "2026-06-04T19:49:37.310Z",
  "error": null
}
```

### ✨ Why choose this Actor

- Pulls straight from the official abuse.ch Feodo Tracker download, no third-party copy.
- Clean, flat rows that drop into a SIEM, firewall, or threat-intel platform.
- Filter by malware family, status, and country before the data ever leaves the run.
- No API key and no login required for this public feed.
- Honest schema, only fields the source actually returns, no padded always-null columns.

### 📈 How it compares to alternatives

| Approach | Effort | Freshness | Structured output |
|---|---|---|---|
| This Actor | One run | Live feed | Yes, flat rows |
| Manual download and parse | Repeated by hand | Live feed | You build the parser |
| Copy-pasting the website table | Slow and error prone | Stale fast | No |
| Generic web scraper on the HTML page | Brittle setup | Breaks on layout change | Needs cleanup |

### 🚀 How to use

1. Sign in or create a free Apify account using [this sign-up link](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Feodo Tracker C2 Scraper and pick the `full` or `recommended` blocklist.
3. Optionally set a malware family, status, or country filter.
4. Set `maxItems` and click Start.
5. When the run finishes, browse the dataset or pull it through the API into your tools.

### 💼 Business use cases

#### 🔥 Firewall and proxy blocklisting

Feed live C2 IPs into firewall, proxy, and DNS blocklists so endpoints cannot reach known Emotet or QakBot infrastructure.

| Need | How this helps |
|---|---|
| Block outbound C2 traffic | Push fresh IPs to perimeter controls |
| Reduce dwell time | Cut connections to active C2 early |

#### 🧭 SOC alert enrichment

When an alert fires on an outbound connection, check it against the blocklist to confirm whether the destination is a tracked C2.

| Need | How this helps |
|---|---|
| Triage faster | Match IPs to malware family instantly |
| Prioritize alerts | Online C2 hits jump the queue |

#### 🕵️ Threat hunting

Hunt across logs for any host that ever talked to an IP on the list, even after the C2 has gone offline.

| Need | How this helps |
|---|---|
| Find missed infections | Pivot on historical C2 IPs |
| Map campaigns | Group by malware family and ASN |

#### 📊 Infrastructure and ASN analysis

Study which hosting providers and countries repeatedly carry C2 servers to inform risk scoring and provider policy.

| Need | How this helps |
|---|---|
| Score hosting risk | Aggregate by `asName` and `country` |
| Brief stakeholders | Back claims with real counts |

### 🔌 Automating Feodo Tracker C2 Scraper

Connect runs to the rest of your stack:

- **Make** and **Zapier**: trigger a run on a schedule and route new C2 IPs to a webhook.
- **Slack**: post fresh online C2 servers to a security channel.
- **Airbyte**: load the dataset into your data warehouse for trend analysis.
- **GitHub**: commit periodic snapshots of the blocklist to a repo for change tracking.
- **Google Drive**: archive each run for an auditable history of the feed.

### 🌟 Beyond business use cases

- **Research**: study botnet hosting patterns, ASN abuse, and takedown timelines.
- **Personal**: block known C2 IPs on a home network or personal firewall.
- **Non-profit**: help small organizations without a security budget harden their perimeter.
- **Experimentation**: build and test detection rules against a real IOC feed.

### 🤖 Ask an AI assistant

Paste a run output into your assistant of choice and ask for analysis:

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

Example prompt: "Group these C2 servers by malware family and country, and tell me which ASNs host the most online C2s."

### ❓ Frequently Asked Questions

**Is this legal and safe to use?**
Yes. Feodo Tracker publishes this blocklist publicly for defensive use. This Actor only reads that public feed and returns it in a structured form.

**Do I need an abuse.ch API key?**
No. The Feodo Tracker IP blocklist downloads used here are public and keyless. No login or token is required.

**What is the difference between the full and recommended lists?**
The full list contains every C2 server Feodo Tracker is tracking. The recommended list is the curated subset abuse.ch advises for active blocking with a low false-positive risk.

**Why did my run return only a few rows?**
Feodo Tracker is a focused, high-signal feed. The set of active C2 servers is small and shifts as botnets are taken down, so a run often returns a handful of rows rather than thousands.

**Why is the hostname field sometimes null?**
Many C2 IPs have no reverse DNS (PTR) record, especially freshly deployed malicious hosts. When there is no hostname, the field is null rather than guessed.

**What does online versus offline mean?**
Online means abuse.ch recently saw the C2 responding. Offline means the C2 was seen before but is not currently responding, for example after a sinkhole or takedown.

**Which malware families are covered?**
Whatever Feodo Tracker is currently tracking, which has included Emotet, QakBot, Dridex, TrickBot, Heodo, BumbleBee, and Pikabot among others. Use the malware filter to narrow to one family.

**How fresh is the data?**
Each run fetches the blocklist live at run time, so the data is as current as the abuse.ch feed itself.

**Can I filter by country?**
Yes. Pass a two letter ISO country code such as `US` or `GB` to keep only C2 servers hosted there.

**How many rows can I get on the free plan?**
Free runs are capped at 10 rows. A paid plan raises the cap so you can pull the entire list.

**Can I schedule this to run automatically?**
Yes. Use Apify Schedules to run it hourly or daily and route new indicators to your tools through integrations or the API.

**Does this replace a full threat-intel platform?**
No. It is a clean source of one specific, high-quality IOC feed that complements your existing tooling rather than replacing it.

### 🔌 Integrate with any app

Every run stores results in an Apify dataset you can pull through the REST API, the JavaScript and Python clients, or any of the no-code integrations above. Wire the output into a SIEM, a firewall management tool, a data warehouse, or a notification channel.

### 🔗 Recommended Actors

- [URLhaus Malware URLs Scraper](https://apify.com/parseforge/urlhaus-malware-urls-scraper). Pull the abuse.ch URLhaus feed of malware distribution URLs.
- [Vulnerability Security Intel Scraper](https://apify.com/parseforge/vulnerability-security-intel-scraper). Collect structured vulnerability and security intelligence.
- [GitHub Security Advisories Scraper](https://apify.com/parseforge/github-security-advisories-scraper). Track CVE-backed advisories across open source packages.
- [IP Geolocation Scraper](https://apify.com/parseforge/ipapi-geolocation-scraper). Enrich any IP with country, ASN, and network details.
- [RIPEstat Scraper](https://apify.com/parseforge/ripestat-scraper). Query RIPE network and routing data for ASNs and prefixes.

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

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

> **⚠️ Disclaimer:** This is an independent tool and is not affiliated with abuse.ch or the Feodo Tracker project. Only publicly available data is collected, and it is provided for defensive security and research purposes.

# Actor input Schema

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

Which abuse.ch Feodo Tracker feed to fetch. 'Full' returns every tracked botnet C2 server. 'Recommended' returns the curated subset abuse.ch suggests for active blocking.

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

Optional. Keep only C2 servers tied to this malware family, for example 'Emotet', 'QakBot', or 'Dridex'. Case insensitive, partial match. Leave empty to return every family.

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

Filter by C2 server status. 'Online' returns servers seen responding recently. 'Offline' returns sinkholed or dead C2s. 'Any' returns both.

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

Optional. Keep only C2 servers hosted in this country, given as a two letter ISO code, for example 'US', 'GB', or 'RU'. Leave empty for all countries.

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

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

## Actor input object example

```json
{
  "listType": "full",
  "status": "any",
  "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/feodo-tracker-c2-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/feodo-tracker-c2-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/feodo-tracker-c2-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Feodo Tracker C2 Scraper",
        "description": "Tap the abuse.ch Feodo Tracker blocklist for live botnet command and control servers tied to Emotet, QakBot, and Dridex. Each row carries IP address, port, online status, ASN, country, and malware family. Built for firewall blocklisting, SOC alert enrichment, and threat hunting.",
        "version": "0.1",
        "x-build-id": "zrrv8VRZ4rPbiz4No"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~feodo-tracker-c2-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-feodo-tracker-c2-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~feodo-tracker-c2-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-feodo-tracker-c2-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~feodo-tracker-c2-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-feodo-tracker-c2-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": {
                    "listType": {
                        "title": "Blocklist",
                        "enum": [
                            "full",
                            "recommended"
                        ],
                        "type": "string",
                        "description": "Which abuse.ch Feodo Tracker feed to fetch. 'Full' returns every tracked botnet C2 server. 'Recommended' returns the curated subset abuse.ch suggests for active blocking.",
                        "default": "full"
                    },
                    "malware": {
                        "title": "Malware family",
                        "type": "string",
                        "description": "Optional. Keep only C2 servers tied to this malware family, for example 'Emotet', 'QakBot', or 'Dridex'. Case insensitive, partial match. Leave empty to return every family."
                    },
                    "status": {
                        "title": "Status",
                        "enum": [
                            "any",
                            "online",
                            "offline"
                        ],
                        "type": "string",
                        "description": "Filter by C2 server status. 'Online' returns servers seen responding recently. 'Offline' returns sinkholed or dead C2s. 'Any' returns both.",
                        "default": "any"
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Optional. Keep only C2 servers hosted in this country, given as a two letter ISO code, for example 'US', 'GB', or 'RU'. Leave empty for all countries."
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
