# Sports Odds Scraper: DraftKings, FanDuel, Pinnacle Arbitrage (`scrapemint/sports-odds-movement-tracker`) Actor

Track live sports betting odds across 40+ sportsbooks (DraftKings, FanDuel, Pinnacle, Bet365). Filter by sport, region, market. Detect arbitrage and best price edges. Returns deduped JSON with moneyline, spread, and total lines.

- **URL**: https://apify.com/scrapemint/sports-odds-movement-tracker.md
- **Developed by:** [Kennedy Mutisya](https://apify.com/scrapemint) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Sports Odds Scraper: Live Lines from DraftKings, FanDuel, Pinnacle, Bet365

Track live sports betting odds across 40+ sportsbooks. Pull moneyline (h2h), spread, and over/under lines for NFL, NBA, MLB, NHL, EPL, UFC, and more. Built in arbitrage detection and best price edge vs the consensus median. Deduped across runs. Powered by The Odds API. Pay per item.

**Searches this actor ranks for:** sports odds API, betting odds scraper, line movement tracker, sports arbitrage finder, DraftKings odds feed, FanDuel API, Pinnacle odds, sportsbook comparison, NFL odds scraper.

---

### How it works in 30 seconds

```mermaid
flowchart LR
    A[Sport + region] --> B[The Odds API]
    B --> C[Best price<br/>per outcome]
    C --> D[Arb check +<br/>edge vs median]
    D --> E[Deduped JSON<br/>one row per event]
````

Pick a sport. Pick regions. Get every sportsbook's line per event, the best price per outcome, and an arb flag if a risk free bet exists.

***

### Who this sports odds scraper is for

| You are a... | You use this to... |
|---|---|
| **Sharp bettor** | Shop lines across 40+ books in one JSON call. Bet the best price every time. |
| **Arbitrage trader** | Scan for risk free two way arbs. Actor flags them and computes profit %. |
| **Line shopper** | Alert when any book moves more than X% off the consensus median. |
| **Sports media** | Power an odds widget or matchup page with a live API, no deal with each book. |
| **Model builder** | Back test your NFL or NBA model against Pinnacle (sharp) and DraftKings (square) in one feed. |

***

### How to scrape sports odds

```mermaid
flowchart TD
    A[Sport keys in] --> B[Odds API per sport]
    B --> C[Best price per side<br/>arb detection]
    C --> D[Push to dataset<br/>dedupe by event + market]
```

1. Pass sport keys (`americanfootball_nfl`, `basketball_nba`, `soccer_epl`).
2. Actor calls `api.the-odds-api.com/v4/sports/{sport}/odds` with your regions and markets.
3. Best price per outcome is computed. Arb = sum of implied probabilities below 1.
4. Matches push to the dataset with every book's line and the best price winner.

Schedule every 60 seconds for live line movement (set `dedupe: false`). One request per sport per run.

***

### Quick start

**NFL moneyline across US books:**

```json
{
  "apiKey": "YOUR_ODDS_API_KEY",
  "sports": ["americanfootball_nfl"],
  "regions": ["us"],
  "markets": ["h2h"]
}
```

**Arbitrage scan across NBA and MLB:**

```json
{
  "apiKey": "YOUR_ODDS_API_KEY",
  "sports": ["basketball_nba", "baseball_mlb"],
  "regions": ["us", "uk"],
  "markets": ["h2h"],
  "arbOnly": true,
  "minArbPct": 0.5
}
```

**Soft lines on EPL spreads:**

```json
{
  "apiKey": "YOUR_ODDS_API_KEY",
  "sports": ["soccer_epl"],
  "regions": ["uk", "eu"],
  "markets": ["spreads"],
  "minBestEdgePct": 3
}
```

From the command line:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~sports-odds-movement-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apiKey":"KEY","sports":["americanfootball_nfl"],"markets":["h2h"]}'
```

***

### Sport keys cheat sheet

| Sport | Key |
|---|---|
| **NFL** | `americanfootball_nfl` |
| **NBA** | `basketball_nba` |
| **MLB** | `baseball_mlb` |
| **NHL** | `icehockey_nhl` |
| **EPL** | `soccer_epl` |
| **UFC / MMA** | `mma_mixed_martial_arts` |
| **NCAAF** | `americanfootball_ncaaf` |
| **NCAAB** | `basketball_ncaab` |

Full list at `the-odds-api.com/sports-odds-data/sports-apis.html`.

***

### Sports odds scraper vs the alternatives

| | OddsPortal | Action Network Pro | **This actor** |
|---|---|---|---|
| Pricing | Free, manual | $10 to $80 / mo | Pay per item, first 50 free |
| Books covered | 80+ UI only | 15 to 30 | 40+ |
| Arbitrage flag | Manual math | Premium tier | Built in |
| JSON output | No | No | Yes |
| Schedule | N/A | Their UI | Every 60 seconds |
| Webhook | No | No | Any URL |

***

### Sample output

```json
{
  "eventId": "abc123",
  "sportKey": "americanfootball_nfl",
  "commenceTime": "2026-04-21T23:00:00Z",
  "homeTeam": "Kansas City Chiefs",
  "awayTeam": "Las Vegas Raiders",
  "marketKey": "h2h",
  "marketLabel": "Moneyline",
  "bookCount": 8,
  "bestPrices": {
    "Kansas City Chiefs": { "bookmaker": "pinnacle", "price": -285, "decimal": 1.351 },
    "Las Vegas Raiders": { "bookmaker": "fanduel", "price": 255, "decimal": 3.550 }
  },
  "bestEdgePct": 2.14,
  "arbitrage": { "exists": false, "profitPct": -1.89, "sumImpliedProb": 1.019 }
}
```

Every field drops into a line shopper, a Sheet, a Slack channel, or a model backtester.

***

### Pricing

First 50 items per run are free. After that you pay per extracted event + market row. A 200 row snapshot lands well under $1. Bring your own free key from The Odds API (500 requests per month included).

***

### FAQ

**Do I need a sports odds API key?**
Yes. Get a free one at `the-odds-api.com`. The free tier gives 500 requests per month. This actor uses 1 request per sport per run.

**How does arbitrage detection work?**
For each event the actor picks the best price on every outcome, converts to decimal, computes 1 / decimal as implied probability, and sums. If the sum is below 1, a risk free bet exists. Returns the profit %.

**How often can I poll for line movement?**
As often as your Odds API quota allows. Every 60 seconds per sport is common for live. Set `dedupe: false` so every snapshot lands with a timestamp.

**Which bookmakers are covered?**
US: DraftKings, FanDuel, BetMGM, Caesars, Pinnacle, PointsBet, BetRivers, WilliamHill US, SuperBook. UK: Bet365, William Hill, Ladbrokes, Betfair, Betway. EU and AU also covered.

**Does it dedupe across runs?**
Yes. Event + market keys are stored under `SEEN_IDS`. Turn off for line movement tracking where you want every snapshot.

**Is scraping sports odds allowed?**
Yes when you use The Odds API, which aggregates bookmaker data under license. This actor never scrapes a sportsbook directly.

***

### Related Scrapemint actors

- **Polymarket Market Monitor** for prediction market odds on politics, crypto, sports
- **SEC Form 4 Insider Trading Tracker** for every insider buy and sell
- **SEC 8-K Event Tracker** for earnings, exec changes, and M\&A filings
- **GitHub Issue Monitor** for devtool category mentions and bug reports
- **Stack Overflow Lead Monitor** for dev question tracking by tag
- **Hacker News Scraper** for stories and comments by keyword
- **Reddit Lead Monitor** for subreddit and brand mention tracking

Stack these to cover every public financial, prediction, and betting surface one desk touches.

# Actor input Schema

## `apiKey` (type: `string`):

Free API key from the-odds-api.com. The free tier gives 500 requests per month. This actor makes 1 request per sport per run. Required.

## `sports` (type: `array`):

Sport keys to pull odds for. Examples: americanfootball\_nfl, americanfootball\_ncaaf, basketball\_nba, baseball\_mlb, icehockey\_nhl, soccer\_epl, soccer\_uefa\_champs\_league, mma\_mixed\_martial\_arts, boxing\_boxing, tennis\_atp\_french\_open. Full list at the-odds-api.com/sports-odds-data/sports-apis.html.

## `regions` (type: `array`):

Which sportsbook regions to query. us = DraftKings, FanDuel, BetMGM, Caesars, Pinnacle. uk = Bet365, William Hill, Ladbrokes. eu = Unibet, Betway. au = Sportsbet, TAB.

## `markets` (type: `array`):

Which markets to pull per event. h2h = moneyline, spreads = point spread, totals = over / under, outrights = futures. Each additional market consumes one request credit per sport.

## `bookmakers` (type: `array`):

Only include these bookmakers. Examples: draftkings, fanduel, betmgm, pinnacle, bet365, caesars, williamhill\_us, pointsbetus, betfair\_ex, betonlineag. Leave empty to include every bookmaker in the selected regions.

## `oddsFormat` (type: `string`):

American (+250, -150) is standard in the US. Decimal (3.50, 1.67) is standard outside the US. Arbitrage and edge math work the same either way.

## `arbOnly` (type: `boolean`):

Turn on to only return events where a risk free bet is available (sum of implied probabilities across best prices is below 1).

## `minArbPct` (type: `number`):

Only return events with an arbitrage profit percentage at or above this. Set to 0 to disable. Typical actionable arbs are 0.5% to 3%.

## `minBestEdgePct` (type: `number`):

Only return events where the best price on any outcome is at least this many percent better than the median price across books. Useful for finding soft lines without requiring a full arb.

## `maxItemsPerSport` (type: `integer`):

Per sport cap on event + market rows pushed. Each event can generate one row per market (h2h, spreads, totals).

## `maxItemsTotal` (type: `integer`):

Hard cap on rows pushed to the dataset per run. Controls total cost.

## `dedupe` (type: `boolean`):

Skip event + market keys pushed on previous runs. Stored in the key value store under SEEN\_IDS. Turn off for line movement tracking so every snapshot lands.

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

Apify proxy settings. The Odds API is public and rate limited per key, not per IP, so proxy is rarely needed.

## Actor input object example

```json
{
  "sports": [
    "americanfootball_nfl"
  ],
  "regions": [
    "us"
  ],
  "markets": [
    "h2h"
  ],
  "bookmakers": [],
  "oddsFormat": "american",
  "arbOnly": false,
  "minArbPct": 0,
  "minBestEdgePct": 0,
  "maxItemsPerSport": 100,
  "maxItemsTotal": 200,
  "dedupe": true
}
```

# 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 = {
    "sports": [
        "americanfootball_nfl"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/sports-odds-movement-tracker").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 = { "sports": ["americanfootball_nfl"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/sports-odds-movement-tracker").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 '{
  "sports": [
    "americanfootball_nfl"
  ]
}' |
apify call scrapemint/sports-odds-movement-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/sports-odds-movement-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sports Odds Scraper: DraftKings, FanDuel, Pinnacle Arbitrage",
        "description": "Track live sports betting odds across 40+ sportsbooks (DraftKings, FanDuel, Pinnacle, Bet365). Filter by sport, region, market. Detect arbitrage and best price edges. Returns deduped JSON with moneyline, spread, and total lines.",
        "version": "0.1",
        "x-build-id": "iyLixEH9Fu2M4INOo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~sports-odds-movement-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-sports-odds-movement-tracker",
                "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/scrapemint~sports-odds-movement-tracker/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-sports-odds-movement-tracker",
                "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/scrapemint~sports-odds-movement-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-sports-odds-movement-tracker",
                "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": {
                    "apiKey": {
                        "title": "The Odds API key",
                        "type": "string",
                        "description": "Free API key from the-odds-api.com. The free tier gives 500 requests per month. This actor makes 1 request per sport per run. Required."
                    },
                    "sports": {
                        "title": "Sport keys",
                        "type": "array",
                        "description": "Sport keys to pull odds for. Examples: americanfootball_nfl, americanfootball_ncaaf, basketball_nba, baseball_mlb, icehockey_nhl, soccer_epl, soccer_uefa_champs_league, mma_mixed_martial_arts, boxing_boxing, tennis_atp_french_open. Full list at the-odds-api.com/sports-odds-data/sports-apis.html.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "regions": {
                        "title": "Regions",
                        "type": "array",
                        "description": "Which sportsbook regions to query. us = DraftKings, FanDuel, BetMGM, Caesars, Pinnacle. uk = Bet365, William Hill, Ladbrokes. eu = Unibet, Betway. au = Sportsbet, TAB.",
                        "default": [
                            "us"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "markets": {
                        "title": "Market types",
                        "type": "array",
                        "description": "Which markets to pull per event. h2h = moneyline, spreads = point spread, totals = over / under, outrights = futures. Each additional market consumes one request credit per sport.",
                        "default": [
                            "h2h"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "bookmakers": {
                        "title": "Bookmaker filter",
                        "type": "array",
                        "description": "Only include these bookmakers. Examples: draftkings, fanduel, betmgm, pinnacle, bet365, caesars, williamhill_us, pointsbetus, betfair_ex, betonlineag. Leave empty to include every bookmaker in the selected regions.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "oddsFormat": {
                        "title": "Odds format",
                        "enum": [
                            "american",
                            "decimal"
                        ],
                        "type": "string",
                        "description": "American (+250, -150) is standard in the US. Decimal (3.50, 1.67) is standard outside the US. Arbitrage and edge math work the same either way.",
                        "default": "american"
                    },
                    "arbOnly": {
                        "title": "Arbitrage only",
                        "type": "boolean",
                        "description": "Turn on to only return events where a risk free bet is available (sum of implied probabilities across best prices is below 1).",
                        "default": false
                    },
                    "minArbPct": {
                        "title": "Minimum arbitrage profit (%)",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "number",
                        "description": "Only return events with an arbitrage profit percentage at or above this. Set to 0 to disable. Typical actionable arbs are 0.5% to 3%.",
                        "default": 0
                    },
                    "minBestEdgePct": {
                        "title": "Minimum best price edge vs median (%)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "number",
                        "description": "Only return events where the best price on any outcome is at least this many percent better than the median price across books. Useful for finding soft lines without requiring a full arb.",
                        "default": 0
                    },
                    "maxItemsPerSport": {
                        "title": "Max items per sport",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Per sport cap on event + market rows pushed. Each event can generate one row per market (h2h, spreads, totals).",
                        "default": 100
                    },
                    "maxItemsTotal": {
                        "title": "Maximum items per run",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Hard cap on rows pushed to the dataset per run. Controls total cost.",
                        "default": 200
                    },
                    "dedupe": {
                        "title": "Deduplicate across runs",
                        "type": "boolean",
                        "description": "Skip event + market keys pushed on previous runs. Stored in the key value store under SEEN_IDS. Turn off for line movement tracking so every snapshot lands.",
                        "default": true
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. The Odds API is public and rate limited per key, not per IP, so proxy is rarely needed."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
