# FAA Drone Airspace Checker - Batch LAANC & No-Fly Verdicts (`malonestar/faa-drone-airspace-checker`) Actor

Batch-check lat/lon points against official FAA UAS airspace data: LAANC grid ceilings, prohibited areas, national-defense TFRs, special use airspace, NSUFR and stadium TFRs. One verdict row per point (PROHIBITED to UNCONTROLLED). Built for drone ops, insurers and AI agents via MCP.

- **URL**: https://apify.com/malonestar/faa-drone-airspace-checker.md
- **Developed by:** [Kyle Maloney](https://apify.com/malonestar) (community)
- **Categories:** Developer tools, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## FAA Drone Airspace Checker — Batch LAANC & No-Fly Verdicts

Batch-check any list of **lat/lon points** against the FAA's official UAS airspace GIS
services and get **one clear verdict row per point**: LAANC grid ceiling, every
intersecting prohibited/restricted area, and a conservative `flight_category`
(`PROHIBITED` → `UNCONTROLLED_CHECK_LOCAL`). No API keys, no scraping — this reads the
same FAA Aeronautical Information Services ArcGIS layers that power the official UAS
Data Delivery System.

**Seven FAA layers checked per point (all live):**

| Layer | What it catches | Severity |
|---|---|---|
| `laanc_grid` | UAS Facility Map LAANC grid ceilings (0–400 ft) | drives ceiling |
| `prohibited_areas` | P-areas (e.g. P-56 over the White House/National Mall) | PROHIBITED |
| `national_defense_tfr` | National Defense Airspace TFR areas | PROHIBITED |
| `special_use_airspace` | Restricted areas (R-xxxx), MOAs, Alert & Warning areas | R = RESTRICTED, others ADVISORY |
| `part_time_nsufr` | Part-time National Security UAS Flight Restrictions (14 CFR 99.7) | RESTRICTED |
| `stadiums` | Stadium game-day TFRs — flags any point within **3 NM** of a listed stadium | ADVISORY |
| `recreational_flyer_sites` | FAA-recognized fixed flying sites | ADVISORY |

> **Disclaimer — read this.** Output is advisory data derived from FAA public GIS
> services. It is **not** an FAA authorization, LAANC approval, or legal clearance, and
> layers may lag reality (event TFRs, NOTAMs, and DC FRZ/SFRA specifics are not fully
> covered). Always confirm with an approved LAANC provider / FAA B4UFLY and current
> NOTAMs before flying. Every result row carries a `disclaimer` field.

### Who uses this

- **Drone service providers & operators** — pre-qualify a week of job sites in one run:
  which sites are auto-authorizable via LAANC (and to what ceiling), which need a manual
  waiver, and which are hard no-fly.
- **Drone insurance underwriters & risk teams** — score the airspace risk of insured
  operation locations in batch; a `CONTROLLED_LAANC_0` or `PROHIBITED` verdict is a very
  different risk than rural Class G.
- **AI agents (flagship MCP use)** — a grounding primitive for any flight-planning,
  compliance, or real-estate/roof-inspection agent: feed coordinates, get a structured
  verdict to reason over before recommending a flight.
- **Drone software builders** — enrich mission-planning or fleet-ops tools without
  standing up your own GIS stack.

### Example input

```json
{
  "points": [
    { "lat": 39.86, "lon": -104.67, "label": "Job site near Denver Intl" },
    "38.8977,-77.0365",
    { "lat": 38.9072, "lon": -101.05, "label": "Rural tower inspection" }
  ],
  "layers": ["laanc_grid", "prohibited_areas", "national_defense_tfr", "special_use_airspace", "part_time_nsufr", "stadiums", "recreational_flyer_sites"],
  "maxPoints": 500
}
````

Points may be `{lat, lon, label?}` objects (`latitude`/`longitude` aliases accepted) or
`"lat,lon"` strings. `layers` defaults to all seven. One bad point never kills the run —
it is skipped (unparseable) or emitted with `flight_category: "ERROR"` (all queries failed).

### Output fields (one row per checked point)

| Field | Meaning |
|---|---|
| `label`, `lat`, `lon` | Your point, echoed back |
| `flight_category` | `PROHIBITED` | `RESTRICTED` | `CONTROLLED_LAANC_0` | `CONTROLLED_LAANC` | `UNCONTROLLED_CHECK_LOCAL` | `ERROR` |
| `max_laanc_ceiling_ft` | **Min** ceiling of intersecting LAANC grid cells — the max altitude eligible for auto-authorization. `0` = controlled airspace with **no** auto-auth. `null` = outside the grid |
| `laanc_grids_hit` | Number of UAS Facility Map cells intersecting the point |
| `nearest_airport`, `nearest_airport_name`, `airspace_class`, `laanc_enabled` | Controlling facility for the lowest-ceiling cell (e.g. `KDEN`, Class `B`) |
| `restriction_count`, `restrictions[]` | Every intersecting restriction: `{ layer, type, severity, name, details }`, sorted most-severe-first (altitude band, times of use, POC schedule where available) |
| `layer_errors[]` | Any FAA layer that failed for this point (isolated — other layers still count) |
| `checked_at`, `disclaimer` | ISO timestamp + advisory-data disclaimer |

#### Verdict logic (conservative)

1. Any intersecting **prohibited area or national-defense TFR** → `PROHIBITED`.
2. Else any **restricted SUA (R-xxxx) or NSUFR** → `RESTRICTED`.
3. Else inside the LAANC grid with **ceiling 0** → `CONTROLLED_LAANC_0` (manual FAA
   authorization required; no LAANC auto-auth).
4. Else inside the grid with ceiling > 0 → `CONTROLLED_LAANC` (auto-auth possible up to
   `max_laanc_ceiling_ft`).
5. Else → `UNCONTROLLED_CHECK_LOCAL` (likely Class G; still check NOTAMs and local rules).

Stadium (3 NM) and recreational-site hits are attached as `ADVISORY` restrictions — they
never soften a harsher verdict.

### Use as an MCP tool (flagship use case)

This actor is built to be a **pre-flight grounding primitive for AI agents** via
[mcp.apify.com](https://mcp.apify.com). The input is a plain points array and the output
is one flat, fully-described row per point, so agents like Claude, Cursor, or custom
LangChain/CrewAI stacks can chain it with zero glue code:

1. Agent geocodes an address (any geocoding tool).
2. Agent calls **faa-drone-airspace-checker** with the coordinates.
3. Agent reads `flight_category` + `max_laanc_ceiling_ft` and tells the user whether a
   drone flight is plausible, needs LAANC, needs a waiver, or is a no-go — with the
   named airspace (`P-56`, `R-4808N`, …) as the citation.

Typical agent prompt: *"Can I fly a drone at 123 Main St, Denver? Check the airspace
first."*

### Pricing

Pay-per-event: you are charged **per checked point** (one dataset row each). Batch 500
sites in a single run; no subscription, no key management.

### FAQ

**Is this legal clearance to fly?** No. It is advisory data from FAA public GIS layers.
Get authorization via a LAANC provider (Aloft, AirHub, Avision, …) or FAA DroneZone, and
check NOTAMs/B4UFLY before flight.

**Why did my point return `CONTROLLED_LAANC_0`?** It sits in a UAS Facility Map grid
cell with a 0-ft ceiling (typically right over a runway approach). LAANC auto-approval
is unavailable there; you would need a manual FAA authorization/waiver.

**`max_laanc_ceiling_ft` is null — does that mean I can fly?** It means the point is
outside the UAS Facility Map grids, which usually indicates uncontrolled (Class G)
airspace. Part 107 rules still apply (400 ft AGL, visual line of sight), and
TFRs/NOTAMs can still restrict it — hence `UNCONTROLLED_CHECK_LOCAL`.

**Does it cover event TFRs, the DC FRZ, or full-time DoD NSUFR boundaries?** Not yet.
Pop-up event/VIP TFRs are NOTAM-driven and not in these GIS layers. The DC area is
partially covered (P-56 + SFRA rings via SUA). The FAA org only publishes a dated
full-time DoD NSUFR service, so v1 wires the stable part-time NSUFR service; the
full-time layer is scaffolded for a future version.

**Are stadium hits real TFRs?** The stadium layer flags points within 3 NM of listed
venues. The TFR (surface–3,000 ft AGL) is only active around scheduled MLB / NFL /
NCAA Division 1 football / major motor-speedway events — that's why it's ADVISORY.

**Can I check points outside the US?** No — FAA data covers US airspace (incl. AK, HI,
and territories where mapped). Non-US points return `UNCONTROLLED_CHECK_LOCAL` with no
grid data; don't rely on that.

**How current is the data?** Layers are maintained by FAA Aeronautical Information
Services and queried live on every run. The UAS Facility Map itself is updated on the
FAA's 56-day chart cycle.

# Actor input Schema

## `points` (type: `array`):

Locations to check, in WGS84 decimal degrees. Each item is either an object like {"lat": 39.86, "lon": -104.67, "label": "Site A"} (label optional; latitude/longitude aliases accepted) or a "lat,lon" string like "39.86,-104.67". One result row is produced per point.

## `layers` (type: `array`):

Which FAA airspace layers to check each point against. Defaults to all seven. laanc\_grid = UAS Facility Map LAANC ceilings; prohibited\_areas = P-areas like P-56; national\_defense\_tfr = national defense airspace TFRs; special\_use\_airspace = Restricted/MOA/Alert/Warning areas; part\_time\_nsufr = part-time national security UAS flight restrictions; stadiums = stadium game-day TFR proximity (3 NM); recreational\_flyer\_sites = FAA-recognized fixed flying sites.

## `maxPoints` (type: `integer`):

Safety cap on the number of points checked (and billed) in one run. Points beyond the cap are skipped with a warning.

## Actor input object example

```json
{
  "points": [
    {
      "lat": 39.86,
      "lon": -104.67,
      "label": "Near Denver Intl (KDEN) - LAANC 0 grid"
    },
    {
      "lat": 38.9072,
      "lon": -101.05,
      "label": "Rural western Kansas"
    }
  ],
  "layers": [
    "laanc_grid",
    "prohibited_areas",
    "national_defense_tfr",
    "special_use_airspace",
    "part_time_nsufr",
    "stadiums",
    "recreational_flyer_sites"
  ],
  "maxPoints": 500
}
```

# Actor output Schema

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

The default dataset.

# 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 = {
    "points": [
        {
            "lat": 39.86,
            "lon": -104.67,
            "label": "Near Denver Intl (KDEN) - LAANC 0 grid"
        },
        {
            "lat": 38.9072,
            "lon": -101.05,
            "label": "Rural western Kansas"
        }
    ],
    "layers": [
        "laanc_grid",
        "prohibited_areas",
        "national_defense_tfr",
        "special_use_airspace",
        "part_time_nsufr",
        "stadiums",
        "recreational_flyer_sites"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("malonestar/faa-drone-airspace-checker").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 = {
    "points": [
        {
            "lat": 39.86,
            "lon": -104.67,
            "label": "Near Denver Intl (KDEN) - LAANC 0 grid",
        },
        {
            "lat": 38.9072,
            "lon": -101.05,
            "label": "Rural western Kansas",
        },
    ],
    "layers": [
        "laanc_grid",
        "prohibited_areas",
        "national_defense_tfr",
        "special_use_airspace",
        "part_time_nsufr",
        "stadiums",
        "recreational_flyer_sites",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("malonestar/faa-drone-airspace-checker").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 '{
  "points": [
    {
      "lat": 39.86,
      "lon": -104.67,
      "label": "Near Denver Intl (KDEN) - LAANC 0 grid"
    },
    {
      "lat": 38.9072,
      "lon": -101.05,
      "label": "Rural western Kansas"
    }
  ],
  "layers": [
    "laanc_grid",
    "prohibited_areas",
    "national_defense_tfr",
    "special_use_airspace",
    "part_time_nsufr",
    "stadiums",
    "recreational_flyer_sites"
  ]
}' |
apify call malonestar/faa-drone-airspace-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=malonestar/faa-drone-airspace-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "FAA Drone Airspace Checker - Batch LAANC & No-Fly Verdicts",
        "description": "Batch-check lat/lon points against official FAA UAS airspace data: LAANC grid ceilings, prohibited areas, national-defense TFRs, special use airspace, NSUFR and stadium TFRs. One verdict row per point (PROHIBITED to UNCONTROLLED). Built for drone ops, insurers and AI agents via MCP.",
        "version": "1.0",
        "x-build-id": "0uX8fodBOlPcqGmdK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/malonestar~faa-drone-airspace-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-malonestar-faa-drone-airspace-checker",
                "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/malonestar~faa-drone-airspace-checker/runs": {
            "post": {
                "operationId": "runs-sync-malonestar-faa-drone-airspace-checker",
                "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/malonestar~faa-drone-airspace-checker/run-sync": {
            "post": {
                "operationId": "run-sync-malonestar-faa-drone-airspace-checker",
                "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": [
                    "points"
                ],
                "properties": {
                    "points": {
                        "title": "Points to check (lat/lon)",
                        "type": "array",
                        "description": "Locations to check, in WGS84 decimal degrees. Each item is either an object like {\"lat\": 39.86, \"lon\": -104.67, \"label\": \"Site A\"} (label optional; latitude/longitude aliases accepted) or a \"lat,lon\" string like \"39.86,-104.67\". One result row is produced per point."
                    },
                    "layers": {
                        "title": "FAA layers to check",
                        "type": "array",
                        "description": "Which FAA airspace layers to check each point against. Defaults to all seven. laanc_grid = UAS Facility Map LAANC ceilings; prohibited_areas = P-areas like P-56; national_defense_tfr = national defense airspace TFRs; special_use_airspace = Restricted/MOA/Alert/Warning areas; part_time_nsufr = part-time national security UAS flight restrictions; stadiums = stadium game-day TFR proximity (3 NM); recreational_flyer_sites = FAA-recognized fixed flying sites.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "laanc_grid",
                                "prohibited_areas",
                                "national_defense_tfr",
                                "special_use_airspace",
                                "part_time_nsufr",
                                "stadiums",
                                "recreational_flyer_sites"
                            ],
                            "enumTitles": [
                                "LAANC grid ceilings (UAS Facility Map)",
                                "Prohibited Areas (P-56 etc.)",
                                "National Defense Airspace TFRs",
                                "Special Use Airspace (Restricted/MOA/Alert/Warning)",
                                "Part-time National Security UAS Flight Restrictions",
                                "Stadium TFR proximity (3 NM)",
                                "Recreational Flyer Fixed Sites"
                            ]
                        }
                    },
                    "maxPoints": {
                        "title": "Max points per run",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Safety cap on the number of points checked (and billed) in one run. Points beyond the cap are skipped with a warning.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
