# Sensor.Community Air Quality Sensor Scraper (`parseforge/sensor-community-air-scraper`) Actor

Tap into the Sensor.Community citizen network for live open air readings worldwide. Pull sensor ID, model, location with latitude and longitude, country, PM10, PM2.5, temperature, humidity, and pressure. Filter by country or sensor model for air quality studies and mapping.

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

## Pricing

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

## 🌍 Sensor.Community Air Quality Sensor Scraper

> 🚀 **Export the live Sensor.Community network in seconds.** Pull thousands of citizen air sensor readings from a single snapshot covering 70+ countries.

> 🕒 **Last updated:** 2026-06-08 · **📊 Up to 25 fields** per record · live and hourly windows · global coverage

Turn the Sensor.Community open network into clean, structured measurements you can map, chart, or load into a database. Each run reads a public snapshot of the whole network and returns one record per sensor measurement, with the sensor model, its location, and every reading flattened into named fields like PM10, PM2.5, temperature, humidity, and pressure.

Coverage is the full live network as Sensor.Community publishes it: tens of thousands of measurements in every snapshot, from particulate sensors like the SDS011 to climate sensors like the BME280, spread across more than 70 countries. You can keep the whole world or narrow down to one country or one sensor model.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Air quality researchers | Build a worldwide snapshot of PM10 and PM2.5 |
| Civic tech and open data groups | Power a local air map or dashboard |
| Data scientists and students | Source a clean training and analysis set |
| Environmental journalists | Spot pollution spikes across a region |

### 📋 What the Sensor.Community Air Scraper does

This Actor calls the public Sensor.Community data feed and returns one clean record per measurement:

- **Identity** — measurement id, sensor id, sensor model, and manufacturer.
- **Location** — latitude, longitude, altitude, country, and an indoor flag.
- **Readings** — particulate values P1 (PM10) and P2 (PM2.5), plus temperature, humidity, pressure, noise, CO2, and radiation where the sensor reports them.

Different sensor models report different readings, so fields outside a sensor's scope come back null. A raw `values` map is also included so no reported value type is ever lost. Every record carries a `scrapedAt` timestamp.

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

### ⚙️ Input

| Field | Type | Description |
|---|---|---|
| `mode` | select | Which snapshot to read. `live` returns measurements from the last 5 minutes. `1h` returns the rolling one hour average per sensor. Defaults to `live`. |
| `maxItems` | integer | How many records to return. Free plan is capped at 10. |
| `country` | select | Optional. Keep only sensors in one country, for example `DE` or `US`. Leave blank for worldwide. |
| `sensorType` | select | Optional. Keep only one sensor model, for example `SDS011` or `BME280`. Leave blank for all models. |

**Example 1 — particulate sensors in Germany**
```json
{
    "mode": "live",
    "country": "DE",
    "sensorType": "SDS011",
    "maxItems": 100
}
````

**Example 2 — hourly averages worldwide**

```json
{
    "mode": "1h",
    "maxItems": 500
}
```

> ⚠️ **Good to Know:** Each snapshot is a single global file with tens of thousands of measurements. Country and sensor model filters are applied after the snapshot is fetched, so a very specific filter may return fewer rows than your `maxItems` setting.

### 📊 Output

Each measurement record looks like this:

| Field | Description |
|---|---|
| 🆔 `id` | Measurement ID for this reading |
| 🛰 `sensorId` | Sensor ID in the network |
| 🔧 `sensorType` | Sensor model name (SDS011, BME280, etc.) |
| 🏭 `sensorManufacturer` | Sensor manufacturer |
| 📍 `locationId` | Location ID in the network |
| 🧭 `latitude` | Latitude of the sensor |
| 🧭 `longitude` | Longitude of the sensor |
| ⛰ `altitude` | Altitude in meters |
| 🌍 `country` | Two letter country code |
| 🏠 `indoor` | Whether the sensor is indoors |
| 🕒 `timestamp` | When the measurement was taken |
| 🌫 `P1` | PM10 particulate value |
| 🌫 `P2` | PM2.5 particulate value |
| 🌫 `P0` | PM1 particulate value |
| 🌫 `P4` | PM4 particulate value |
| 🌡 `temperature` | Temperature in Celsius |
| 💧 `humidity` | Relative humidity percent |
| 🧭 `pressure` | Air pressure in Pascals |
| 🧭 `pressureAtSealevel` | Pressure adjusted to sea level |
| 🔊 `noiseLAeq` | Average noise level |
| 🔊 `noiseLAmax` | Peak noise level |
| 🔊 `noiseLAmin` | Minimum noise level |
| 🟢 `co2` | CO2 in parts per million |
| ☢️ `radiationMSI` | Radiation reading |
| 🗂 `values` | Raw map of every reported value type |
| 🕒 `scrapedAt` | Collection timestamp |
| ❌ `error` | Null on success |

**Real sample — SDS011 particulate sensor**

```json
{
    "id": 29598135627,
    "sensorId": 146,
    "sensorType": "SDS011",
    "sensorManufacturer": "Nova Fitness",
    "locationId": 45999,
    "latitude": 48.808,
    "longitude": 9.182,
    "altitude": 310.1,
    "country": "DE",
    "indoor": false,
    "timestamp": "2026-06-08 17:35:24",
    "P1": 1.1,
    "P2": 0.84,
    "P0": null,
    "P4": null,
    "temperature": null,
    "humidity": null,
    "pressure": null,
    "pressureAtSealevel": null,
    "noiseLAeq": null,
    "noiseLAmax": null,
    "noiseLAmin": null,
    "co2": null,
    "radiationMSI": null,
    "values": { "P1": 1.1, "P2": 0.84 },
    "scrapedAt": "2026-06-08T17:36:29.652Z",
    "error": null
}
```

**Real sample — BME280 climate sensor**

```json
{
    "id": 29598108762,
    "sensorId": 141,
    "sensorType": "BME280",
    "sensorManufacturer": "Bosch",
    "locationId": 65,
    "latitude": 48.778,
    "longitude": 9.16,
    "altitude": 282.5,
    "country": "DE",
    "indoor": false,
    "timestamp": "2026-06-08 17:32:11",
    "P1": null,
    "P2": null,
    "P0": null,
    "P4": null,
    "temperature": 17.76,
    "humidity": 100,
    "pressure": 98626.97,
    "pressureAtSealevel": 101942.66,
    "noiseLAeq": null,
    "noiseLAmax": null,
    "noiseLAmin": null,
    "co2": null,
    "radiationMSI": null,
    "values": {
        "humidity": 100,
        "pressure": 98626.97,
        "temperature": 17.76,
        "pressure_at_sealevel": 101942.66
    },
    "scrapedAt": "2026-06-08T17:34:34.854Z",
    "error": null
}
```

**Real sample — first SDS011 in the run**

```json
{
    "id": 29598128374,
    "sensorId": 140,
    "sensorType": "SDS011",
    "sensorManufacturer": "Nova Fitness",
    "locationId": 65,
    "latitude": 48.778,
    "longitude": 9.16,
    "altitude": 282.5,
    "country": "DE",
    "indoor": false,
    "timestamp": "2026-06-08 17:34:37",
    "P1": 0,
    "P2": 0,
    "P0": null,
    "P4": null,
    "temperature": null,
    "humidity": null,
    "pressure": null,
    "pressureAtSealevel": null,
    "noiseLAeq": null,
    "noiseLAmax": null,
    "noiseLAmin": null,
    "co2": null,
    "radiationMSI": null,
    "values": { "P1": 0, "P2": 0 },
    "scrapedAt": "2026-06-08T17:36:29.588Z",
    "error": null
}
```

### ✨ Why choose this Actor

- One clean record per measurement, with readings flattened into named fields.
- The raw `values` map keeps every reported value type, so nothing is dropped.
- Whole network in one snapshot, or filter to one country or one sensor model.
- No account, no key, and no login required.
- Stable field names that map cleanly onto a database schema.

### 📈 How it compares to alternatives

| Approach | Effort | Structured fields | Flattened readings | Maintenance |
|---|---|---|---|---|
| This Actor | One run | Yes | Yes | None on your side |
| Parsing the raw feed yourself | Hours | Manual | Manual | You own the upkeep |
| Copying values by hand | Tedious | Inconsistent | Manual | Constant |

### 🚀 How to use

1. Create a free Apify account using [this sign-up link](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the Sensor.Community Air Quality Sensor Scraper.
3. Pick a `mode` (`live` or `1h`).
4. Optionally set a `country` and a `sensorType`, then set `maxItems`.
5. Click **Start** and grab your results when the run finishes.

### 💼 Business use cases

#### Air quality monitoring

| Goal | How this helps |
|---|---|
| Track PM10 and PM2.5 across a region | Filter by country and read P1 and P2 |
| Compare indoor and outdoor sensors | Use the indoor flag and location fields |

#### Open data and civic tech

| Goal | How this helps |
|---|---|
| Power a public air map | Use latitude, longitude, and readings per sensor |
| Refresh a dashboard on a schedule | Re-run the live snapshot at any cadence |

#### Research and analytics

| Goal | How this helps |
|---|---|
| Build an analysis dataset | Pull a full snapshot with consistent field names |
| Study sensor coverage by country | Group records by country and sensor model |

#### Climate and weather

| Goal | How this helps |
|---|---|
| Collect temperature and humidity | Filter to BME280 and read climate fields |
| Track local pressure trends | Use pressure and pressureAtSealevel |

### 🔌 Automating Sensor.Community Air Scraper

Connect runs to the tools you already use:

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

### 🌟 Beyond business use cases

- **Research:** study how air quality varies by location and time.
- **Personal:** check sensors near your home and build a tracker.
- **Non-profit:** power a community clean air resource.
- **Experimentation:** prototype an air data app without writing a scraper.

### 🤖 Ask an AI assistant

Paste your results into [ChatGPT](https://chat.openai.com), [Claude](https://claude.ai), [Perplexity](https://www.perplexity.ai), or [Microsoft Copilot](https://copilot.microsoft.com) and ask it to rank locations by PM2.5, group sensors by country, or chart pressure across a region.

### ❓ Frequently Asked Questions

**Do I need a Sensor.Community account?**
No. The Actor reads the public data feed, which needs no login.

**Do I need an API key?**
No key is required.

**What is the difference between live and hourly?**
Live returns measurements from the last 5 minutes. Hourly returns a rolling one hour average per sensor.

**Why are some reading fields null?**
Each sensor model reports only certain values. A particulate sensor returns P1 and P2 but not temperature, so unrelated fields are null. The raw `values` map shows exactly what each sensor reported.

**What do P1 and P2 mean?**
P1 is PM10 and P2 is PM2.5, the two common particulate matter readings.

**Can I filter to one country?**
Yes. Set the `country` input to a two letter code such as `DE` or `US`.

**Can I filter to one sensor model?**
Yes. Set the `sensorType` input, for example `SDS011` or `BME280`.

**How many measurements are in a snapshot?**
Each snapshot typically holds tens of thousands of measurements across the whole network.

**How fresh is the data?**
Each run pulls the current public snapshot, so it reflects the network at run time.

**Can I schedule this?**
Yes. Use Apify Schedules to snapshot the network on any cadence.

### 🔌 Integrate with any app

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

### 🔗 Recommended Actors

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

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

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

> **⚠️ Disclaimer:** independent tool, not affiliated with Sensor.Community. Only publicly available data is collected.

# Actor input Schema

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

Which Sensor.Community snapshot to read. 'Live' returns every measurement reported in the last 5 minutes. 'Hourly average' returns the rolling 1 hour average per sensor.

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

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

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

Optional. Keep only measurements from sensors in this country. Leave as 'Any country' to return readings worldwide.

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

Optional. Keep only measurements from this sensor model, for example SDS011 for particulate matter or BME280 for temperature, humidity, and pressure. Leave as 'Any sensor type' for all models.

## Actor input object example

```json
{
  "mode": "live",
  "maxItems": 10,
  "country": "",
  "sensorType": ""
}
```

# 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/sensor-community-air-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/sensor-community-air-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/sensor-community-air-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sensor.Community Air Quality Sensor Scraper",
        "description": "Tap into the Sensor.Community citizen network for live open air readings worldwide. Pull sensor ID, model, location with latitude and longitude, country, PM10, PM2.5, temperature, humidity, and pressure. Filter by country or sensor model for air quality studies and mapping.",
        "version": "0.1",
        "x-build-id": "POV9XLRGck5f0sBvI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~sensor-community-air-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-sensor-community-air-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~sensor-community-air-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-sensor-community-air-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~sensor-community-air-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-sensor-community-air-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Data window",
                        "enum": [
                            "live",
                            "1h"
                        ],
                        "type": "string",
                        "description": "Which Sensor.Community snapshot to read. 'Live' returns every measurement reported in the last 5 minutes. 'Hourly average' returns the rolling 1 hour average per sensor.",
                        "default": "live"
                    },
                    "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"
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "",
                            "DE",
                            "AT",
                            "CH",
                            "NL",
                            "BE",
                            "LU",
                            "FR",
                            "GB",
                            "IE",
                            "ES",
                            "PT",
                            "IT",
                            "PL",
                            "CZ",
                            "SK",
                            "HU",
                            "RO",
                            "BG",
                            "RS",
                            "HR",
                            "SI",
                            "BA",
                            "MK",
                            "AL",
                            "ME",
                            "GR",
                            "SE",
                            "NO",
                            "DK",
                            "FI",
                            "IS",
                            "EE",
                            "LV",
                            "LT",
                            "UA",
                            "BY",
                            "MD",
                            "RU",
                            "TR",
                            "CY",
                            "MT",
                            "US",
                            "CA",
                            "MX",
                            "BR",
                            "AR",
                            "CL",
                            "AU",
                            "NZ",
                            "JP",
                            "CN",
                            "TH",
                            "VN",
                            "PH",
                            "ID",
                            "NP",
                            "PK",
                            "KZ",
                            "GE",
                            "AM",
                            "AZ",
                            "IL",
                            "MA",
                            "ZA"
                        ],
                        "type": "string",
                        "description": "Optional. Keep only measurements from sensors in this country. Leave as 'Any country' to return readings worldwide.",
                        "default": ""
                    },
                    "sensorType": {
                        "title": "Sensor type",
                        "enum": [
                            "",
                            "SDS011",
                            "SDS021",
                            "BME280",
                            "BMP280",
                            "BMP180",
                            "DHT22",
                            "HTU21D",
                            "SHT30",
                            "SHT31",
                            "SHT35",
                            "SHT11",
                            "SHT15",
                            "SCD30",
                            "PPD42NS",
                            "PMS1003",
                            "PMS3003",
                            "PMS5003",
                            "PMS6003",
                            "PMS7003",
                            "SPS30",
                            "SEN5x",
                            "NextPM",
                            "HPM",
                            "NO2-A43F",
                            "DNMS (Laerm)",
                            "DS18B20",
                            "DS18S20",
                            "GPS-NEO-6M",
                            "Radiation SBM-19",
                            "Radiation SBM-20",
                            "Radiation Si22G"
                        ],
                        "type": "string",
                        "description": "Optional. Keep only measurements from this sensor model, for example SDS011 for particulate matter or BME280 for temperature, humidity, and pressure. Leave as 'Any sensor type' for all models.",
                        "default": ""
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
