# NFA BASIC Scraper - Futures Broker & CTA/CPO Registry (`jungle_synthesizer/nfa-basic-broker-crawler`) Actor

Extract US derivatives market participants from NFA BASIC: FCMs, Introducing Brokers, CTAs, CPOs, Swap Dealers, and Associated Persons. Each record includes registration status, disciplinary history, and regulatory actions. For compliance screening, enforcement research, M\&A, and AML.

- **URL**: https://apify.com/jungle\_synthesizer/nfa-basic-broker-crawler.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## NFA BASIC Scraper - Futures Broker & CTA/CPO Registry

Scrapes registrant data from [NFA BASIC](https://www.nfa.futures.org/BasicNet/), the public regulatory database of the National Futures Association. Returns registration status, disciplinary history, and regulatory actions for Futures Commission Merchants, Introducing Brokers, CTAs, CPOs, Swap Dealers, and Associated Persons — 282,000+ registrants in total.

---

### NFA BASIC Scraper Features

- Extracts firm and individual registrant records from the full NFA BASIC dataset
- Returns NFA membership status, CFTC registration types, and regulatory action counts for every record
- Fetches full disciplinary action detail — contributor, reference number, date, outcome, and action description — per registrant
- Fetches complete registration lifecycle history on request
- Filters by membership status, registration type, or "has regulatory actions" flag
- Searches by name fragment or enumerates all registrants alphabetically with a blank query
- Pure API scraping — no browser required, no proxy needed, no authentication

---

### Who Uses NFA BASIC Data?

- **Compliance teams** — Run registration checks on counterparties, verify FCM/IB status, screen for disciplinary history before onboarding
- **Enforcement attorneys** — Pull the full regulatory action index for a firm or individual as background for CFTC reparations or NFA arbitration proceedings
- **M&A due diligence teams** — Screen acquisition targets in the derivatives space for NFA membership status and pending enforcement actions
- **AML and KYC analysts** — Check whether an entity holds current derivatives registrations and whether they carry enforcement history
- **Fintech and compliance SaaS builders** — Integrate NFA registration data into onboarding workflows without paying for a third-party compliance API
- **Researchers** — Study enforcement patterns across the US derivatives industry using the complete historical action dataset

---

### How NFA BASIC Scraper Works

1. You provide a search type (firm or individual), an optional name fragment, and optional filters. Leave the name blank to enumerate all registrants.
2. The scraper pages through NFA's search API in batches of 50, collecting registration status and metadata for each result.
3. If disciplinary detail is enabled (the default), it calls a second endpoint per record to fetch the full regulatory action index.
4. Records are returned as structured JSON. The `regulatory_actions` field is a JSON string you can parse; `regulatory_actions_count` is already an integer at the top level.

---

### Input

```json
{
  "searchType": "firm",
  "searchQuery": "Goldman Sachs",
  "membershipStatusFilter": "",
  "regTypeFilter": "",
  "hasRegulatoryActions": false,
  "includeDisciplinaryDetail": true,
  "includeRegistrationHistory": false,
  "maxItems": 10
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `searchType` | string | `firm` | `firm` for FCMs, IBs, CTAs, CPOs, Swap Dealers. `individual` for Associated Persons. |
| `searchQuery` | string | `""` | Name fragment to search. Empty string enumerates all registrants alphabetically. |
| `membershipStatusFilter` | string | `""` | Filter by membership status: `NFA Member Approved`, `Not an NFA Member`, or blank for all. |
| `regTypeFilter` | string | `""` | Filter by registration type (e.g. `Futures Commission Merchant`). Blank for all. |
| `hasRegulatoryActions` | boolean | `false` | When true, only return registrants with at least one regulatory action on record. |
| `includeDisciplinaryDetail` | boolean | `true` | Fetch full regulatory action detail per registrant. Adds one API call per record. |
| `includeRegistrationHistory` | boolean | `false` | Fetch full registration lifecycle history per registrant. |
| `maxItems` | integer | `10` | Maximum number of records to return. |

**Example — enumerate all individuals with regulatory actions:**

```json
{
  "searchType": "individual",
  "searchQuery": "",
  "hasRegulatoryActions": true,
  "includeDisciplinaryDetail": true,
  "maxItems": 500
}
```

***

### NFA BASIC Scraper Output Fields

```json
{
  "nfa_id": "0002014",
  "entity_type": "firm",
  "name": "GOLDMAN SACHS & CO LLC",
  "location": "NEW YORK, NY",
  "nfa_membership_status": "NFA Member Approved",
  "registration_types": "Futures Commission Merchant, Swap Dealer",
  "has_regulatory_actions": true,
  "regulatory_actions_count": 86,
  "regulatory_actions": "[{\"contributor\":\"NFA\",\"reference\":\"22BCC00003\",\"effective_date\":\"04/15/2022\",\"actions\":\"• GENERAL CONDUCT\",\"outcome\":\"• FINE $2,500,000\"}]",
  "registration_history": null,
  "profile_url": "https://www.nfa.futures.org/BasicNet/firm.aspx?nfaId=0002014",
  "scraped_at": "2026-05-06T18:41:09.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `nfa_id` | string | NFA registration ID, 7-digit zero-padded (e.g. `0002014`) |
| `entity_type` | string | `firm` or `individual` |
| `name` | string | Registrant name |
| `location` | string | City and state (e.g. `NEW YORK, NY`). Firms only — blank for individuals. |
| `nfa_membership_status` | string | NFA membership status (`NFA Member Approved`, `Not an NFA Member`, etc.) |
| `registration_types` | string | Comma-separated CFTC registration types: FCM, IB, CTA, CPO, Swap Dealer, etc. |
| `has_regulatory_actions` | boolean | Whether the registrant has any regulatory actions on record |
| `regulatory_actions_count` | number | Count of regulatory actions on record |
| `regulatory_actions` | string | Regulatory actions as a JSON string. `null` if `includeDisciplinaryDetail` is false. Each action: `contributor`, `reference`, `effective_date`, `actions`, `outcome`. |
| `registration_history` | string | Registration lifecycle events as a JSON string. `null` if `includeRegistrationHistory` is false. Each event: `category`, `description`, `effective_date`. |
| `profile_url` | string | URL to the NFA BASIC profile page |
| `scraped_at` | string | ISO timestamp when this record was scraped |

***

### 🔍 FAQ

#### How do I scrape NFA BASIC?

NFA BASIC Scraper handles it. Set `searchType`, optionally provide a `searchQuery` or leave it blank to get everything, configure filters, and run. It pages through the registry and returns structured JSON for each registrant.

#### What data can I get from NFA BASIC?

NFA BASIC Scraper returns registration status, CFTC registration types, NFA membership status, and regulatory action counts for every registrant. With `includeDisciplinaryDetail: true`, you also get the full action index — reference numbers, dates, action types, and outcomes. With `includeRegistrationHistory: true`, you get the complete registration lifecycle.

#### How much does NFA BASIC Scraper cost to run?

NFA BASIC Scraper costs $0.10 per run plus $0.04 per record. A Goldman Sachs search returning 5 firms with disciplinary detail costs $0.30. The full 282K-record dataset costs around $11,300 — which is cheaper than most compliance data subscriptions, depending on your vendor.

#### Does NFA BASIC Scraper need proxies?

No. NFA BASIC is a public regulatory site with no bot protection. Standard datacenter IPs work fine. Leave `proxyConfiguration` at the default.

#### Can I enumerate the entire NFA BASIC database?

Yes. Set `searchQuery` to an empty string and `maxItems` to however many you need. NFA BASIC Scraper pages through all 73,000+ firms or 208,000+ Associated Persons alphabetically, stopping at your limit.

#### Why does `regulatory_actions` come back as a string?

Apify datasets handle nested arrays as strings in certain output configurations. Parse the field with `JSON.parse()` in your downstream code. The `regulatory_actions_count` integer is available at the top level if you only need the count.

***

### Need More Features?

Need a specific registration type filter, additional detail endpoints, or a bulk full-dataset export mode? [File an issue](https://console.apify.com/actors/hawmSnYrcaTt13IXl/issues) or get in touch.

### Why Use NFA BASIC Scraper?

- **No authentication required** — NFA BASIC is fully public, and the scraper hits the same API the official site uses. No session management, no credentials.
- **Disciplinary detail included** — Returns the full action record per registrant: contributor, reference number, date, action type, and outcome text, ready to parse.
- **Clean structured output** — Consistent JSON with stable field names across firms and individuals, so you spend less time normalizing and more time using it.

# Actor input Schema

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

Please describe how you plan to use the data extracted by this crawler.

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

Provide any feedback or suggestions for improvements.

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

Provide your email address so we can get in touch with you.

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

Whether to search for firms or individuals.

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

Name fragment to search. Leave blank to enumerate all registrants alphabetically.

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

Filter by NFA membership status. Leave blank for all.

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

Filter by registration type (e.g. 'Futures Commission Merchant', 'Commodity Trading Advisor'). Leave blank for all.

## `hasRegulatoryActions` (type: `boolean`):

When true, only return registrants with regulatory actions on record.

## `includeDisciplinaryDetail` (type: `boolean`):

Fetch full regulatory action index per registrant. Adds one API call per record.

## `includeRegistrationHistory` (type: `boolean`):

Fetch full registration history and lifecycle per registrant. Adds API calls per record.

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

Maximum number of registrant records to return.

## `proxyConfiguration` (type: `object`):

Proxy settings. Leave as default (no proxy) for most uses.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "searchType": "firm",
  "includeDisciplinaryDetail": true,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "searchType": "firm",
    "searchQuery": "",
    "membershipStatusFilter": "",
    "regTypeFilter": "",
    "hasRegulatoryActions": false,
    "includeDisciplinaryDetail": true,
    "includeRegistrationHistory": false,
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/nfa-basic-broker-crawler").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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "searchType": "firm",
    "searchQuery": "",
    "membershipStatusFilter": "",
    "regTypeFilter": "",
    "hasRegulatoryActions": False,
    "includeDisciplinaryDetail": True,
    "includeRegistrationHistory": False,
    "maxItems": 10,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/nfa-basic-broker-crawler").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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "searchType": "firm",
  "searchQuery": "",
  "membershipStatusFilter": "",
  "regTypeFilter": "",
  "hasRegulatoryActions": false,
  "includeDisciplinaryDetail": true,
  "includeRegistrationHistory": false,
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call jungle_synthesizer/nfa-basic-broker-crawler --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jungle_synthesizer/nfa-basic-broker-crawler",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NFA BASIC Scraper - Futures Broker & CTA/CPO Registry",
        "description": "Extract US derivatives market participants from NFA BASIC: FCMs, Introducing Brokers, CTAs, CPOs, Swap Dealers, and Associated Persons. Each record includes registration status, disciplinary history, and regulatory actions. For compliance screening, enforcement research, M&A, and AML.",
        "version": "1.0",
        "x-build-id": "gp5bpqlE7iyrovh8F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~nfa-basic-broker-crawler/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-nfa-basic-broker-crawler",
                "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/jungle_synthesizer~nfa-basic-broker-crawler/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-nfa-basic-broker-crawler",
                "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/jungle_synthesizer~nfa-basic-broker-crawler/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-nfa-basic-broker-crawler",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "sp_intended_usage",
                    "sp_improvement_suggestions"
                ],
                "properties": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "searchType": {
                        "title": "Search Type",
                        "enum": [
                            "firm",
                            "individual"
                        ],
                        "type": "string",
                        "description": "Whether to search for firms or individuals."
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Name fragment to search. Leave blank to enumerate all registrants alphabetically."
                    },
                    "membershipStatusFilter": {
                        "title": "Membership Status Filter",
                        "enum": [
                            "",
                            "NFA Member Approved",
                            "Not an NFA Member"
                        ],
                        "type": "string",
                        "description": "Filter by NFA membership status. Leave blank for all."
                    },
                    "regTypeFilter": {
                        "title": "Registration Type Filter",
                        "type": "string",
                        "description": "Filter by registration type (e.g. 'Futures Commission Merchant', 'Commodity Trading Advisor'). Leave blank for all."
                    },
                    "hasRegulatoryActions": {
                        "title": "Has Regulatory Actions Only",
                        "type": "boolean",
                        "description": "When true, only return registrants with regulatory actions on record."
                    },
                    "includeDisciplinaryDetail": {
                        "title": "Include Disciplinary Action Detail",
                        "type": "boolean",
                        "description": "Fetch full regulatory action index per registrant. Adds one API call per record."
                    },
                    "includeRegistrationHistory": {
                        "title": "Include Registration History",
                        "type": "boolean",
                        "description": "Fetch full registration history and lifecycle per registrant. Adds API calls per record."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "type": "integer",
                        "description": "Maximum number of registrant records to return."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Leave as default (no proxy) for most uses."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
