# GasBuddy Fuel Prices Scraper (`automation-lab/gasbuddy-fuel-prices-scraper`) Actor

⛽ Extract current station-level cash and credit fuel prices from GasBuddy by ZIP, city, or coordinates.

- **URL**: https://apify.com/automation-lab/gasbuddy-fuel-prices-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** E-commerce
- **Stats:** 1 total users, 1 monthly users, 77.8% runs succeeded, 0 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.
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

## GasBuddy Fuel Prices Scraper

Track current station-level fuel prices from GasBuddy by ZIP code, city, or coordinates. Export cash and credit prices, reporting times, station details, addresses, ratings, and canonical GasBuddy links as structured data.

Use the scraper for recurring local price monitoring, fleet fueling analysis, competitive intelligence, and location-based fuel applications. No GasBuddy login or private API key is required.

### What does GasBuddy Fuel Prices Scraper do?

The Actor turns public GasBuddy station searches into a clean Apify dataset.

- ⛽ Search by ZIP/postal code or city
- 🗺️ Search exact latitude and longitude centers
- 💵 Capture cash and credit prices separately
- 🕒 Filter prices by reporting age
- 🏷️ Keep only selected station brands
- 📍 Export normalized station and address fields
- 🔁 Combine multiple locations and remove duplicates
- 📦 Download JSON, CSV, Excel, XML, or RSS

Each row represents one station and the selected fuel grade.

### Who is it for?

#### Fleet and logistics teams

Compare nearby fueling options around depots, delivery zones, and operating corridors.

#### Fuel retailers and analysts

Monitor local competitors, compare cash-credit spreads, and build recurring market snapshots.

#### App and data teams

Feed current station-price records into dashboards, maps, alerts, and internal APIs.

#### Researchers and consumers

Collect reproducible local fuel observations without manually copying GasBuddy search pages.

### Why use this GasBuddy scraper?

Manual GasBuddy searches are useful for one location at a time. This Actor makes the workflow repeatable and exportable.

- Run several local searches in one job
- Schedule hourly or daily monitoring
- Preserve posted timestamps for freshness analysis
- Integrate through the Apify API, webhooks, or MCP
- Deduplicate overlapping searches automatically
- Pay only for run setup and records saved

### What GasBuddy data can you extract?

| Field | Description |
|---|---|
| `stationId` | Stable GasBuddy station identifier |
| `stationName` | Displayed station name |
| `brand` | Station brand when available |
| `fuelGrade` | Selected normalized fuel key |
| `fuelName` | Human-readable fuel name |
| `cashPrice` | Reported cash price |
| `creditPrice` | Reported credit price |
| `cashPostedAt` | Cash-price report timestamp |
| `creditPostedAt` | Credit-price report timestamp |
| `addressLine1` | Street address |
| `city`, `state` | Locality and region |
| `postalCode`, `country` | Postal and country fields when available |
| `rating` | GasBuddy star rating |
| `ratingsCount` | Number of station ratings |
| `stationUrl` | Canonical GasBuddy station URL |
| `sourceQuery` | Input location that produced the row |
| `scrapedAt` | UTC extraction timestamp |

Optional values remain `null` rather than being invented.

### Supported fuel grades

Choose one grade per run:

- Regular gas
- Mid-grade gas
- Premium gas
- Diesel
- E85
- Unleaded 88

Run separate scheduled tasks when you need independent datasets for several grades.

### How to scrape GasBuddy fuel prices

1. Open the Actor input page.
2. Add one or more ZIP codes or city/state searches.
3. Optionally add latitude/longitude centers.
4. Select a fuel grade.
5. Set a small result limit for your first run.
6. Optionally set freshness and brand filters.
7. Click **Start**.
8. Open the dataset to preview or export the records.

A first test with ZIP `11507` and three results normally finishes within a few minutes.

### Input

Example search input:

```json
{
  "searchQueries": ["11507", "Boston, MA"],
  "fuelGrade": "regular_gas",
  "maxResults": 10,
  "maxPriceAgeHours": 24,
  "brands": [],
  "proxyTier": "AUTO"
}
````

Coordinate input:

```json
{
  "coordinates": [
    {
      "latitude": 40.741,
      "longitude": -73.998,
      "label": "Manhattan route stop"
    }
  ],
  "fuelGrade": "diesel",
  "maxResults": 20
}
```

At least one text search or coordinate pair is required.

### Input options explained

#### ZIP codes or cities

`searchQueries` accepts multiple strings such as `11507`, `Toronto, ON`, or `Austin, TX`.

#### Coordinates

`coordinates` accepts valid WGS-84 latitude and longitude pairs. A custom label is returned in `sourceQuery`.

#### Maximum stations

`maxResults` applies per input location and accepts 1–500. Start small before increasing coverage.

#### Maximum price age

`maxPriceAgeHours` is applied separately to cash and credit reports. Set `0` to accept any reported age.

#### Brand filters

`brands` uses case-insensitive partial matching. `Shell` keeps names containing Shell; unmatched rows are excluded.

#### Proxy strategy

`AUTO` is recommended. It rotates anonymous residential browser sessions when GasBuddy challenges a request.

### Output example

```json
{
  "stationId": "56437",
  "stationName": "Sunoco",
  "brand": "Sunoco",
  "fuelGrade": "regular_gas",
  "fuelName": "Regular",
  "cashPrice": 3.83,
  "creditPrice": 3.93,
  "cashPostedAt": "2026-07-17T10:21:36.286Z",
  "creditPostedAt": "2026-07-17T10:21:36.301Z",
  "addressLine1": "993 Willis Ave",
  "city": "Albertson",
  "state": "NY",
  "ratingsCount": 46,
  "stationUrl": "https://www.gasbuddy.com/station/56437",
  "sourceQuery": "11507",
  "scrapedAt": "2026-07-18T00:00:00.000Z"
}
```

Prices and timestamps change over time. The example illustrates the output shape, not a guaranteed current price.

### How freshness filtering works

GasBuddy prices are community reported. A station may have a fresh credit price and an older cash price.

With `maxPriceAgeHours: 24`:

- A qualifying cash value is retained
- A qualifying credit value is retained
- A stale side becomes `null`
- The station is omitted when neither side qualifies

This fail-closed behavior prevents stale values from silently passing the filter.

### Brand filtering and deduplication

Brand filters are optional. When provided, a station must match at least one value.

Overlapping location searches can return the same station. The Actor emits each station and selected fuel-grade combination once per run, using the station ID as the stable key.

### How much does it cost to scrape GasBuddy fuel prices?

The Actor uses pay-per-event pricing:

- A small one-time charge covers run and browser setup
- A result event is charged for each station record saved
- Subscription tiers receive automatic per-result discounts

You can see the exact current rate before starting a run. A three-record smoke test is intentionally inexpensive. Residential proxy and browser compute are handled by the Actor rather than billed as a separate setup step in your workflow.

### Scheduling a fuel price monitor

Create an Apify schedule for recurring snapshots:

1. Save a task with stable locations and one fuel grade.
2. Run it hourly, daily, or weekly.
3. Use a webhook when the run succeeds.
4. Send the dataset to your database or automation tool.
5. Compare current values with the previous snapshot.

Keep posted timestamps in your downstream model so unchanged community reports are not mistaken for newly observed prices.

### Integrations

#### Google Sheets

Use the Google Sheets integration to refresh a local competitor-price workbook.

#### Make and Zapier

Trigger a workflow after each run, filter for price changes, and notify operations teams.

#### Webhooks

Send run-completion events to your own service, then fetch the dataset through the API.

#### Snowflake, BigQuery, and databases

Export or stream normalized records into a warehouse for time-series and geographic analysis.

#### Slack and email alerts

Compare a result against a target threshold and send a message when a nearby price changes.

### Use with the Apify API

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/gasbuddy-fuel-prices-scraper').call({
    searchQueries: ['11507'],
    fuelGrade: 'regular_gas',
    maxResults: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/gasbuddy-fuel-prices-scraper").call(run_input={
    "searchQueries": ["11507"],
    "fuelGrade": "regular_gas",
    "maxResults": 5,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~gasbuddy-fuel-prices-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["11507"],"fuelGrade":"regular_gas","maxResults":5}'
```

### Use with Apify MCP

Connect the Actor to AI assistants through Apify MCP:

`https://mcp.apify.com?tools=automation-lab/gasbuddy-fuel-prices-scraper`

#### Claude Code setup

```bash
claude mcp add --transport http apify-gasbuddy "https://mcp.apify.com?tools=automation-lab/gasbuddy-fuel-prices-scraper"
```

#### Claude Desktop, Cursor, and VS Code setup

Add this server to the MCP configuration used by Claude Desktop, Cursor, or VS Code:

```json
{
  "mcpServers": {
    "apify-gasbuddy": {
      "url": "https://mcp.apify.com?tools=automation-lab/gasbuddy-fuel-prices-scraper"
    }
  }
}
```

Restart the client after saving the configuration.

Example prompts:

- “Find current regular cash and credit prices near ZIP 11507.”
- “Collect diesel prices around these depot coordinates and return CSV-ready rows.”
- “Compare Shell and BP prices reported in the past 24 hours around Boston.”

Use the same tool URL in Claude Code, Claude Desktop, or another MCP-compatible client.

### Tips for reliable runs

- Begin with one location and 3–5 results
- Use `AUTO` proxy strategy unless troubleshooting
- Avoid overlapping locations when duplicates are not useful
- Use posted timestamps for data-quality rules
- Schedule moderate intervals instead of repeatedly polling
- Run separate tasks for different fuel grades
- Keep brand filters broad enough to match displayed station names

### Troubleshooting

#### Why did the run return no records?

The source may have no positive price for the selected grade, freshness may be too strict, or a brand filter may exclude every station. Retry with `maxPriceAgeHours: 0` and no brands.

#### Why is one price `null`?

Cash and credit reports are independent. GasBuddy may expose only one payment type, or one side may fail your freshness filter.

#### Why did a location fail while another succeeded?

Each location is processed independently. GasBuddy can temporarily challenge a browser session. Successful locations are preserved, while a complete extraction failure exits non-zero.

#### Why are fewer rows returned than `maxResults`?

The limit is a ceiling, not a promise. Stations without a positive selected-fuel price, stale stations, brand mismatches, and duplicates are omitted.

### Data quality and limitations

GasBuddy relies on public community reports. Prices can change between a report and a visit, and some stations omit a cash or credit value. Coverage varies by location and fuel grade.

The Actor reports source values and timestamps without claiming that a price is guaranteed at the pump. Validate critical purchasing decisions with the station.

### Is it legal to scrape GasBuddy?

This Actor accesses public station-search information without logging into a user account. Your use must comply with applicable laws, GasBuddy terms, and privacy obligations.

Do not use the output for harassment, deception, discriminatory decisions, or unlawful profiling. Collect only the volume needed for your legitimate workflow and respect source capacity.

### Related scrapers

Combine local station prices with other public energy or commerce data from the [automation-lab Actor portfolio](https://apify.com/automation-lab):

- Use country-level fuel market data when station detail is unnecessary
- Use mapping and business-directory Actors for broader location enrichment
- Use monitoring workflows to compare scheduled snapshots

Choose this Actor when the required unit is an individual GasBuddy station with current cash or credit prices.

### FAQ

#### Does it require a GasBuddy account?

No. It uses anonymous public station-search surfaces.

#### Can it return several locations?

Yes. Add multiple search strings, coordinates, or both.

#### Can it monitor both regular and diesel in one row?

One run selects one fuel grade. Create separate tasks when independent grade datasets are needed.

#### Does it support Canada?

GasBuddy public city, postal-code, and coordinate searches can cover supported US and Canadian locations. Availability depends on the source.

#### Are duplicate stations charged twice?

Overlapping searches are deduplicated by station ID and selected fuel grade before output.

#### Can I export to CSV or Excel?

Yes. Use the dataset export controls or API format parameters.

#### Is there a hard result guarantee?

No. `maxResults` is a maximum. The source and your filters determine the natural record count.

### Start with a small search

Use the prefilled ZIP and a five-station limit to validate the output. Then add production locations, freshness rules, schedules, and integrations after confirming the fields fit your workflow.

# Actor input Schema

## `searchQueries` (type: `array`):

Enter ZIP/postal codes or city and state names, one per row.

## `coordinates` (type: `array`):

Add latitude/longitude centers when exact geographic monitoring is needed.

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

Select the GasBuddy fuel product to return for each station.

## `maxResults` (type: `integer`):

Stop after this many unique station-price records for each location.

## `maxPriceAgeHours` (type: `integer`):

Keep only cash or credit prices posted within this many hours. Use 0 to accept any posted age.

## `brands` (type: `array`):

Optionally keep station brands containing any value, for example Costco, Shell, or BP.

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

AUTO rotates anonymous residential browser sessions when GasBuddy challenges a request.

## Actor input object example

```json
{
  "searchQueries": [
    "11507"
  ],
  "coordinates": [],
  "fuelGrade": "regular_gas",
  "maxResults": 5,
  "maxPriceAgeHours": 0,
  "brands": [],
  "proxyTier": "AUTO"
}
```

# Actor output Schema

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

GasBuddy station prices with fuel grade, location, brand, and report timestamps.

# 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 = {
    "searchQueries": [
        "11507"
    ],
    "fuelGrade": "regular_gas",
    "maxResults": 5,
    "maxPriceAgeHours": 0,
    "proxyTier": "AUTO"
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/gasbuddy-fuel-prices-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 = {
    "searchQueries": ["11507"],
    "fuelGrade": "regular_gas",
    "maxResults": 5,
    "maxPriceAgeHours": 0,
    "proxyTier": "AUTO",
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/gasbuddy-fuel-prices-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 '{
  "searchQueries": [
    "11507"
  ],
  "fuelGrade": "regular_gas",
  "maxResults": 5,
  "maxPriceAgeHours": 0,
  "proxyTier": "AUTO"
}' |
apify call automation-lab/gasbuddy-fuel-prices-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/gasbuddy-fuel-prices-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GasBuddy Fuel Prices Scraper",
        "description": "⛽ Extract current station-level cash and credit fuel prices from GasBuddy by ZIP, city, or coordinates.",
        "version": "0.1",
        "x-build-id": "aItAbaR8B0snchCLA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~gasbuddy-fuel-prices-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-gasbuddy-fuel-prices-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/automation-lab~gasbuddy-fuel-prices-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-gasbuddy-fuel-prices-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/automation-lab~gasbuddy-fuel-prices-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-gasbuddy-fuel-prices-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": {
                    "searchQueries": {
                        "title": "📍 ZIP codes or cities",
                        "type": "array",
                        "description": "Enter ZIP/postal codes or city and state names, one per row.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "coordinates": {
                        "title": "🗺️ Coordinates",
                        "type": "array",
                        "description": "Add latitude/longitude centers when exact geographic monitoring is needed.",
                        "items": {
                            "type": "object",
                            "required": [
                                "latitude",
                                "longitude"
                            ],
                            "properties": {
                                "latitude": {
                                    "title": "Latitude",
                                    "description": "Enter a WGS-84 latitude from -90 to 90.",
                                    "type": "number",
                                    "minimum": -90,
                                    "maximum": 90
                                },
                                "longitude": {
                                    "title": "Longitude",
                                    "description": "Enter a WGS-84 longitude from -180 to 180.",
                                    "type": "number",
                                    "minimum": -180,
                                    "maximum": 180
                                },
                                "label": {
                                    "title": "Source label",
                                    "description": "Optionally name this coordinate search in output records.",
                                    "type": "string"
                                }
                            }
                        },
                        "default": []
                    },
                    "fuelGrade": {
                        "title": "⛽ Fuel grade",
                        "enum": [
                            "regular_gas",
                            "midgrade_gas",
                            "premium_gas",
                            "diesel",
                            "e85",
                            "unl88"
                        ],
                        "type": "string",
                        "description": "Select the GasBuddy fuel product to return for each station.",
                        "default": "regular_gas"
                    },
                    "maxResults": {
                        "title": "Maximum stations per location",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Stop after this many unique station-price records for each location.",
                        "default": 20
                    },
                    "maxPriceAgeHours": {
                        "title": "Maximum price age (hours)",
                        "minimum": 0,
                        "maximum": 720,
                        "type": "integer",
                        "description": "Keep only cash or credit prices posted within this many hours. Use 0 to accept any posted age.",
                        "default": 0
                    },
                    "brands": {
                        "title": "Brand filters",
                        "type": "array",
                        "description": "Optionally keep station brands containing any value, for example Costco, Shell, or BP.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyTier": {
                        "title": "🌐 Proxy strategy",
                        "enum": [
                            "AUTO",
                            "DATACENTER",
                            "RESIDENTIAL"
                        ],
                        "type": "string",
                        "description": "AUTO rotates anonymous residential browser sessions when GasBuddy challenges a request.",
                        "default": "AUTO"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
