# BasketWatch Irish Grocery Data - Aldi|Tesco|SuperValu|Dunnes (`hawkish_gym/basketwatch-irish-grocery-data`) Actor

Weekly product, price, unit price and promotion data for the four major Irish supermarkets. Thin client — fetches from BasketWatch's existing API (so prices are the same weekly snapshot as the BasketWatch dashboard, no scraping happens at run-time).

- **URL**: https://apify.com/hawkish\_gym/basketwatch-irish-grocery-data.md
- **Developed by:** [BasketWatch](https://apify.com/hawkish_gym) (community)
- **Categories:** E-commerce
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

## BasketWatch — Irish Grocery Data

**Every SKU. Every shelf price. Every promotion. Across all four major Irish
supermarkets — Aldi, Tesco, SuperValu and Dunnes Stores — refreshed weekly.**

The only data feed on Apify Store that covers the full Irish grocery
market in one place. **47,514 live SKUs** as of this week — **16,468 of
them currently on promotion** — structured into clean JSON rows, with
promotional pricing, loyalty-card prices, multibuys, was-prices and
offer-validity windows already parsed and ready for analysis.

> #### 🗓️ Refresh schedule
>
> **All four retailers are scraped every Friday morning at 02:00 GMT.**
> Every actor run from that point in the week reads from the latest weekly
> snapshot — the `scrape_date` field on each row tells you exactly when
> the price was captured. Need a faster cadence (daily, twice-weekly,
> on-demand)? See the contact details at the bottom of this page.

### Why this exists

The Irish grocery market is dominated by four retailers running on three
different e-commerce platforms — Aldi's bespoke storefront, Tesco Ireland's
own stack, and the Mercatus platform shared by SuperValu and Dunnes Stores.
Each anti-bots aggressively and emits prices in a different shape. Building
this in-house means:

- 4 separate scrapers, each with its own regex + class-name extraction rules
- Anti-bot bypass infrastructure that survives Cloudflare and JavaScript
  challenges
- Weekly maintenance as each retailer's markup drifts
- Data-quality fixes for the inevitable per-unit-vs-pack-price misreads,
  cents-suffix parse errors, promo-badge collisions, etc.
- Cross-retailer SKU matching by brand + canonical pack size

We've done all of that and packaged it into one Apify actor. You call the
endpoint, you get clean rows.

### What you get

Pick a **retailer** and a **dataset** — get back structured rows you can
load directly into pandas, BigQuery, Excel, your warehouse or pipeline:

| Dataset | What's in each row |
|---|---|
| **products** | SKU id, name, brand, pack size + canonical units, current shelf price, **unit price (€/kg, €/L)**, full category breadcrumb, product URL, first-seen + last-seen dates |
| **promotions** | Only products currently on offer — **offer label** (e.g. *"3 for €5"*, *"SAVE €0.75"*, *"Only €2.50"*), **was-price**, **validity window** (*"13th May - 15th Jun"*), **Tesco Clubcard prices**, **SuperValu Real Rewards** and Dunnes member-only pricing where promoted |
| **new-products** | Products newly listed within a configurable window — range additions / launches |
| **removed** | Products that have dropped off the catalogue — delistings / range cuts |
| **changes** | Week-over-week price movements with delta and % change (compares the latest weekly snapshot to the previous one) |

#### Available data per retailer

Any combination below is valid input to the actor — set `store` and
`dataset` to one of these and you'll get the matching rows:

| `dataset` ↓ &nbsp;&nbsp; `store` → | **Aldi** | **Tesco** | **SuperValu** | **Dunnes** |
|---|:---:|:---:|:---:|:---:|
| `products` | ✓ 2,948 | ✓ 19,057 | ✓ 11,069 | ✓ 14,440 |
| `promotions` | — *(Aldi doesn't publish multibuy promos)* | ✓ 7,089 on offer | ✓ 3,219 on offer | ✓ 6,160 on offer |
| `new-products` | ✓ | ✓ | ✓ | ✓ |
| `removed` | ✓ | ✓ | ✓ | ✓ |
| `changes` | ✓ | ✓ | ✓ | ✓ |

Counts are the **live current** SKU figures (refreshed weekly). `new-products`
/ `removed` row counts depend on the `days_back` window you pass; `changes`
returns however many SKUs moved week-over-week.

Example input:

```json
{ "store": "tesco", "dataset": "promotions", "max_products": 1000 }
````

Returns up to 1,000 Tesco products currently on offer — with Clubcard
prices, was-prices, multibuy labels and offer-validity windows already
parsed. **Search by product name** (e.g. `heinz`, `cadbury`, `kerrygold`)
is supported on the `products` dataset via the `search` input.

### Sample output

Input:

```json
{
  "store": "tesco",
  "dataset": "promotions",
  "max_products": 50
}
```

Output (one row per product on offer):

```json
{
  "id": "tesco:307552934",
  "store": "tesco",
  "name": "Heinz Baked Beans In Tomato Sauce 415G",
  "brand": "Heinz",
  "category_path": "Food Cupboard > Tinned Food > Tinned Beans, Pasta & Pulses",
  "pack_size": "415G",
  "price": 1.49,
  "unit_price": 3.59,
  "unit_basis": "1 KG",
  "offer_text": "Any 3 for £3 Clubcard Price",
  "was_price": 1.85,
  "clubcard_price": 1.00,
  "offer_valid": "13th May - 9th Jun",
  "url": "https://www.tesco.ie/groceries/...",
  "scrape_date": "2026-05-21"
}
```

### Use cases

| Buyer | What they do with it |
|---|---|
| **CPG brand teams** | Track competitor pricing, promo depth and assortment share across all four retailers from a single feed |
| **Retail suppliers** | Monitor own-brand and private-label pressure against your products, weekly |
| **Market research & consultancies** | Continuous Irish grocery price index, cost-of-living tracking, basket analysis |
| **Journalism & data investigations** | Cited, timestamped, reproducible source data for stories on food inflation, shrinkflation, promotional intensity |
| **Public bodies & regulators** | Independent grocery price evidence for consumer protection, competition oversight and official statistics |
| **Academic & policy research** | Household-budget research, food-policy studies, longitudinal price tracking |

### How it works

This actor is a **thin client over a hardened weekly scrape pipeline**.
The four retailers are scraped on a fixed weekly cadence — **every Friday
at 02:00 GMT** — by infrastructure that handles:

- **Mercatus storefront parsing** (SuperValu + Dunnes) with corrected
  `ProductPrice` selectors — no per-unit-price-as-headline misreads
- **Anti-bot bypass** for Cloudflare-fronted endpoints
- **Multipack canonicalisation** — `"4 x 330ml"`, `"12 Pack (330 ml)"` and
  `"2L"` all normalise to comparable units
- **Promo capture** — offer label + was-price + validity window from
  `PromotionLabelBadge` / `ProductWasPrice` / `OfferValidMessage` elements
- **Loyalty-tier pricing** — Tesco Clubcard prices, SuperValu Real Rewards
  pricing, Dunnes member offers
- **Data-quality checks** — week-over-week catalogue-drop detection, per-product
  outlier sweeps, regression-tested parsers

You don't pay for any of that scraping cost on a per-call basis — the
pipeline runs once a week regardless. Each actor run reads from the
already-fetched snapshot, so:

- **Fast**: <2 seconds per page of results (vs 5-15 minutes for a live scrape)
- **Cheap to fulfil**: marginal cost per row is fractions of a cent
- **Consistent**: the same parser fixes and regression-tested extraction
  rules across every call

The `scrape_date` field on every row tells you exactly when each price was
captured.

*Weekly (Friday 02:00 GMT) is the default cadence. **Daily or twice-weekly
snapshots** can be stood up for buyers with a continuous-monitoring use
case (e.g. live inflation tracking, real-time competitive-pricing
dashboards) — the underlying scrape infrastructure already supports it;
gating is on committed demand rather than engineering. Reach out to
**basketwatchireland@gmail.com** if that's you.*

### Pricing

Pay-per-result — only pay for rows you actually receive. Your Apify
subscription tier determines the per-row rate:

| Your Apify plan | Per result | Per 1,000 rows | Full Aldi (2,948) | Full Tesco (19,057) |
|---|--:|--:|--:|--:|
| **Free** (no subscription) | $0.05 | $50.00 | ~$147 | ~$953 |
| **Starter** (Bronze) | $0.01 | $10.00 | ~$29 | ~$191 |
| **Scale** (Silver) | $0.007 | $7.00 | ~$21 | ~$133 |
| **Business** (Gold) | $0.005 | $5.00 | ~$15 | ~$95 |

Plus a flat **$0.05 per run** (Actor start) — waived for the first 5 seconds
of runtime. Platform compute is included; no separate platform charges
on top.

Maximum rows per run is configurable up to **100,000** — enough for a full
multi-retailer pull in a single run if you need it.

Need unlimited API access, bulk historical exports or a direct integration
that bypasses Apify? Email **basketwatchireland@gmail.com**.

### Coverage (live figures, refreshed weekly)

| Retailer | SKUs | On promotion now | Promotional data | Loyalty pricing |
|---|--:|--:|---|---|
| **Aldi** | **2,948** | — | Limited (Aldi doesn't publish multibuy promos) | — |
| **Tesco** | **19,057** | **7,089** | Full incl. multibuys & "Tesco Finest" | **Tesco Clubcard prices** as a dedicated field |
| **SuperValu** | **11,069** | **3,219** | Full incl. "3 for €X" multibuys, was-prices, validity windows | SuperValu **Real Rewards** member pricing captured in offer label |
| **Dunnes Stores** | **14,440** | **6,160** | Full incl. multibuys, was-prices, validity windows | Dunnes member offers captured in offer label |
| **Total** | **47,514** | **16,468** | | |

Every actor run reflects the most recent weekly snapshot. The `scrape_date`
field on each row tells you when that price was captured.

### Limits

- Hard cap of **100,000 rows per run**. Large pulls scale linearly in cost.
- Search filtering currently applies to the **products** dataset only.

### Support & contact

📧 **basketwatchireland@gmail.com**

Email directly for any of the following — typical response within 24 hours:

- **Scraper issues or data-quality questions** — wrong price, missing
  product, weird pack-size value, suspicious week-over-week jump
- **Commercial enquiries** — custom scraping solutions, additional Irish
  retailers, scraping for other markets (UK, NI, EU), bespoke integrations
- **Higher-cadence pulls** — daily / twice-weekly / on-demand snapshots
- **Bulk historical exports** — multi-year price history, full back-catalogue
- **Direct API access** — integrate against the BasketWatch API directly
  (skipping Apify) for unlimited pulls and lower marginal cost

You can also use Apify's **Contact maintainer** button on this listing —
it routes to the same inbox.

***

*BasketWatch is not affiliated with Aldi Ireland, Tesco Ireland, Musgrave
SuperValu or Dunnes Stores. Data is collected from publicly available
sources for lawful market research and price comparison purposes.*

# Actor input Schema

## `store` (type: `string`):

Which Irish supermarket to pull data from.

## `dataset` (type: `string`):

What kind of data to pull.

- **products** — full product catalogue: SKU, name, brand, pack size, current price, unit price, category.
- **promotions** — only products currently on offer (multibuy, clubcard, savings, was-prices). SuperValu / Tesco / Dunnes only.
- **new-products** — products newly listed within the lookback window.
- **removed** — products that have dropped off the catalogue within the lookback window.
- **changes** — price moves between the latest weekly snapshot and the previous one (delta + % change).

## `max_products` (type: `integer`):

Hard cap on dataset size. 500 is plenty to evaluate the data; a single retailer's full catalogue runs 3,000-20,000 rows. Set higher (up to 100,000) for full multi-store pulls. Pay-per-result pricing means cost scales linearly with this number — check the cost estimate before starting.

## `search` (type: `string`):

Case-insensitive substring match on the product name. Example: 'heinz' returns only Heinz products. Only applied when dataset = 'products'.

## `days_back` (type: `integer`):

Only used for 'new-products' and 'removed'. How many days back to look from today. Since scrapes run weekly, a value of 7 captures everything since the last snapshot; 14 captures the prior two weeks, etc.

## Actor input object example

```json
{
  "store": "aldi",
  "dataset": "products",
  "max_products": 500,
  "days_back": 7
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("hawkish_gym/basketwatch-irish-grocery-data").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("hawkish_gym/basketwatch-irish-grocery-data").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 '{}' |
apify call hawkish_gym/basketwatch-irish-grocery-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=hawkish_gym/basketwatch-irish-grocery-data",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BasketWatch Irish Grocery Data - Aldi|Tesco|SuperValu|Dunnes",
        "description": "Weekly product, price, unit price and promotion data for the four major Irish supermarkets. Thin client — fetches from BasketWatch's existing API (so prices are the same weekly snapshot as the BasketWatch dashboard, no scraping happens at run-time).",
        "version": "0.4",
        "x-build-id": "XRQqgKHlO18ev1XnN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/hawkish_gym~basketwatch-irish-grocery-data/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-hawkish_gym-basketwatch-irish-grocery-data",
                "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/hawkish_gym~basketwatch-irish-grocery-data/runs": {
            "post": {
                "operationId": "runs-sync-hawkish_gym-basketwatch-irish-grocery-data",
                "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/hawkish_gym~basketwatch-irish-grocery-data/run-sync": {
            "post": {
                "operationId": "run-sync-hawkish_gym-basketwatch-irish-grocery-data",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "store",
                    "dataset"
                ],
                "properties": {
                    "store": {
                        "title": "Retailer",
                        "enum": [
                            "aldi",
                            "tesco",
                            "supervalu",
                            "dunnes"
                        ],
                        "type": "string",
                        "description": "Which Irish supermarket to pull data from.",
                        "default": "aldi"
                    },
                    "dataset": {
                        "title": "Dataset",
                        "enum": [
                            "products",
                            "promotions",
                            "new-products",
                            "removed",
                            "changes"
                        ],
                        "type": "string",
                        "description": "What kind of data to pull.\n\n- **products** — full product catalogue: SKU, name, brand, pack size, current price, unit price, category.\n- **promotions** — only products currently on offer (multibuy, clubcard, savings, was-prices). SuperValu / Tesco / Dunnes only.\n- **new-products** — products newly listed within the lookback window.\n- **removed** — products that have dropped off the catalogue within the lookback window.\n- **changes** — price moves between the latest weekly snapshot and the previous one (delta + % change).",
                        "default": "products"
                    },
                    "max_products": {
                        "title": "Maximum rows to return",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Hard cap on dataset size. 500 is plenty to evaluate the data; a single retailer's full catalogue runs 3,000-20,000 rows. Set higher (up to 100,000) for full multi-store pulls. Pay-per-result pricing means cost scales linearly with this number — check the cost estimate before starting.",
                        "default": 500
                    },
                    "search": {
                        "title": "Filter by product name (optional)",
                        "type": "string",
                        "description": "Case-insensitive substring match on the product name. Example: 'heinz' returns only Heinz products. Only applied when dataset = 'products'."
                    },
                    "days_back": {
                        "title": "Lookback window (days)",
                        "minimum": 1,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Only used for 'new-products' and 'removed'. How many days back to look from today. Since scrapes run weekly, a value of 7 captures everything since the last snapshot; 14 captures the prior two weeks, etc.",
                        "default": 7
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
