# EU Tenders Feed — TED Procurement Search & Alerts (`bikram07/eu-tenders-feed`) Actor

Search and monitor EU public procurement tenders from the official TED API. Filter by CPV codes, countries, keywords, and value. Alert mode dedupes — schedule it and get only NEW tenders. €700B+/year market. $1 per 1,000 records, normalized JSON output.

- **URL**: https://apify.com/bikram07/eu-tenders-feed.md
- **Developed by:** [Bikram](https://apify.com/bikram07) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 tender records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## EU Tenders Feed — TED Procurement Search & Alerts (CPV, Country, Keywords)

Search and monitor **EU public procurement data** without parsing XML or building your own TED integration. This Actor wraps the **official TED API** (Tenders Electronic Daily — the EU's public procurement journal at ted.europa.eu, where European public tenders above EU thresholds are published) and turns it into a clean, normalized **EU tenders API**: filter by CPV code, buyer country, keywords, publication window and contract value, and get back flat JSON records ready for spreadsheets, CRMs, dashboards or AI agents.

Turn on **alert mode** and run it on an Apify Schedule to get a daily feed of **only the tenders you haven't seen yet** — tender alerts without a SaaS subscription.

### Features

- **Official source** — queries the public TED Search API (`POST https://api.ted.europa.eu/v3/notices/search`), the same data behind ted.europa.eu. No scraping, no stale mirrors.
- **Simple filters, expert query underneath** — CPV codes, buyer countries (2- or 3-letter ISO codes), full-text keywords, publication window (`7d`, `30d`, or an absolute date) and minimum EUR value are compiled into a TED expert query for you.
- **Normalized output** — TED returns multilingual nested structures; this Actor flattens each notice into one tidy record with stable field names (`noticeId`, `title`, `buyerName`, `valueEur`, `deadlineDate`, …). Fields TED doesn't provide are `null` — never guessed.
- **Tender alerts (dedupe built in)** — alert mode remembers which notice IDs it already output for your exact filter combination and emits only new ones. Schedule it daily and pipe new tenders to email, Slack or your pipeline.
- **Fair pay-per-event pricing** — $1 per 1,000 tender records. You pay only for records actually written to the dataset: runs that deliver nothing are never charged, and skipped duplicates are free.
- **MCP-ready** — callable as a tool from Claude, Cursor, or any MCP client via Apify's MCP server.

### Input example

```json
{
    "keywords": "software development",
    "cpvCodes": ["72000000"],
    "countries": ["DE", "FR"],
    "publishedSince": "7d",
    "maxRecords": 100,
    "alertMode": false,
    "minValue": 100000
}
````

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | string | none | Full-text phrase matched against the whole notice (TED `FT` field) |
| `cpvCodes` | array | none | CPV codes, e.g. `72000000` (IT services), `45000000` (construction works) |
| `countries` | array | none | Buyer country ISO codes — `DE` or `DEU` both accepted |
| `publishedSince` | string | `7d` | Lookback window (`7d`, `30d`) or absolute date (`2026-06-01`) |
| `maxRecords` | integer | `100` | Max records to output per run (1–5000) |
| `alertMode` | boolean | `false` | Output only notices not seen in previous runs with the same filters |
| `minValue` | integer | none | Minimum contract value in EUR (matches EUR-denominated values only — see FAQ) |

At least one of `keywords`, `cpvCodes` or `countries` is required.

### Output example

Each notice becomes one dataset item. This is a real record returned by the TED API during development (June 2026):

```json
{
    "noticeId": "402921-2026",
    "title": "Germany – Programming services of application software – Beschaffung einer KI-Plattform",
    "buyerName": "Hamburgische Investitions- und Förderbank (IFB)",
    "buyerCountry": "DEU",
    "cpvCodes": ["72212000"],
    "valueEur": null,
    "publicationDate": "2026-06-12",
    "deadlineDate": null,
    "procedureType": "neg-w-call",
    "tedUrl": "https://ted.europa.eu/en/notice/-/detail/402921-2026",
    "description": "Die IFB Hamburg möchte mit der Einführung einer KI-Plattform auf Basis von Large Language Models (LLM) die Potenziale dieser innovativen Technologie nutzen…"
}
```

Field notes:

- `noticeId` is TED's publication number — open the notice at `https://ted.europa.eu/en/notice/-/detail/<noticeId>`.
- `title`, `buyerName` and `description` prefer the English variant when TED provides one, otherwise the first available language.
- `valueEur` is the notice's awarded total value, or its estimated value when no award value exists — **only when stated in EUR**. Values published in other currencies are not converted (no made-up exchange rates) and yield `null`.
- `deadlineDate` is the earliest tender-receipt deadline across the notice's lots; `null` for notice types without one (e.g. award notices).
- `description` is truncated to 500 characters; the full text is on the TED notice page.

### Tender alerts: alert mode + Apify Schedules

1. Set your filters (e.g. `cpvCodes: ["72000000"]`, `countries: ["DE"]`) and `alertMode: true`.
2. Create an [Apify Schedule](https://docs.apify.com/platform/schedules) that runs the Actor daily.
3. Each run outputs **only notices that previous runs with the same filters haven't output yet** — the dataset of every run is purely "what's new since last time".
4. Add an integration (email, Slack, webhook, Make/Zapier) on the Actor run to deliver the new tenders wherever you work.

How it works: seen notice IDs are stored in a named key-value store (`eu-tenders-seen-<hash>`), one per filter combination — the hash covers `keywords`, `cpvCodes`, `countries` and `minValue`, so changing `publishedSince` or `maxRecords` won't reset your alert history, while changing the actual filters starts a fresh history. IDs are remembered for 400 days. A run that outputs zero new tenders succeeds (that's a normal alert outcome) and charges nothing.

### Pricing — $1 per 1,000 tender records

This Actor uses Apify's **pay-per-event** model with one simple event:

| Event | Price | When it's charged |
|---|---|---|
| `tender-record` | $0.001 | Once per tender record written to the dataset |

That's **$1 per 1,000 tender records**. You are never charged for a record that wasn't written to the dataset: a run that delivers nothing charges nothing, and in alert mode already-seen notices are skipped for free — you pay only for records you actually receive. You can also set a maximum cost per run in Apify Console; the Actor stops gracefully when the limit is reached and does not mark unpushed notices as seen, so they arrive in the next run.

### Use from Claude, Cursor & other AI agents (MCP)

This Actor works as a tool over the [Model Context Protocol](https://mcp.apify.com). Add Apify's MCP server to your client and your agent can search EU tenders on demand:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com/sse?actors=YOUR_USERNAME/eu-tenders-feed",
            "headers": {
                "Authorization": "Bearer YOUR_APIFY_TOKEN"
            }
        }
    }
}
```

Then ask your agent things like: *"Find IT-services tenders published in Germany this week with a value above €500k and summarize the top five"* — the agent calls this Actor, gets normalized tender records back, and works with them directly.

You can also call it from code via the [Apify API](https://docs.apify.com/api/v2):

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~eu-tenders-feed/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"cpvCodes": ["72000000"], "countries": ["DE"], "publishedSince": "7d", "maxRecords": 50}'
```

### Data source & honesty notes

All data comes from the **official, public TED Search API** operated by the Publications Office of the European Union. The Search API is openly accessible for published notices (no API key required). This Actor adds filtering convenience, normalization and alert-mode dedupe on top — it does not modify, enrich or guess any values. Missing fields are `null`. This Actor is not affiliated with or endorsed by the European Union or the Publications Office; TED data is reusable under the EU's open-data policy (check TED's [legal notice](https://ted.europa.eu/en/legal-notice) for reuse conditions).

### FAQ

**How do I get EU tender data via API without registering for an API key?**
TED's Search API is open for published notices, and this Actor handles the request format, expert-query syntax, pagination and field normalization for you. Set your filters, run, and export the dataset as JSON, CSV or Excel — or call the Actor through the Apify API or MCP.

**What are CPV codes and which one should I use?**
CPV (Common Procurement Vocabulary) is the EU's classification for procurement: e.g. `72000000` = IT services, `45000000` = construction works, `33600000` = pharmaceuticals. Searching a parent code also matches its subcategories on TED. The full list is on [SIMAP/EU Vocabularies](https://op.europa.eu/en/web/eu-vocabularies/cpv).

**Why is `valueEur` null on some notices, and how does `minValue` work?**
Many notices simply don't state a value, and TED does not normalize currencies. `valueEur` is filled only when the notice states a value in EUR (awarded total preferred, otherwise the estimate). Consequently `minValue` only matches notices with an EUR-denominated value at or above your threshold — notices priced in SEK, PLN, etc. are excluded when the filter is set, because converting them would mean inventing exchange rates.

**How fresh is the data and how often should I schedule alerts?**
Notices are published on TED on working days (typically by 09:00 CET). A daily schedule with `publishedSince: "7d"` and `alertMode: true` is the sweet spot: the 7-day window safely covers weekends and late indexing, while dedupe guarantees you still only get each notice once.

**Can I monitor several different searches at once?**
Yes — create one Schedule (or Task) per filter combination. Each combination gets its own independent seen-history, so alerts never bleed into each other. Records across all of them are charged at the same flat $1 per 1,000.

### Related searches this Actor answers

TED API · EU tenders API · public procurement data EU · tender alerts · TED Tenders Electronic Daily search · CPV code tender search · EU government contracts feed · procurement notices API Europe

***

Built on the official [TED Search API](https://docs.ted.europa.eu/api/latest/index.html) (Publications Office of the EU). Not affiliated with the European Union.

# Actor input Schema

## `keywords` (type: `string`):

Full-text search phrase matched against the whole notice (title, description, buyer). Example: <b>solar panels</b>. At least one of Keywords, CPV codes or Countries is required.

## `cpvCodes` (type: `array`):

Common Procurement Vocabulary codes to filter by, e.g. <b>72000000</b> (IT services) or <b>45000000</b> (construction). A parent code also matches its subcategories on TED. At least one of Keywords, CPV codes or Countries is required.

## `countries` (type: `array`):

ISO country codes of the buyer's country — 2-letter (<b>DE</b>, <b>FR</b>) or 3-letter (<b>DEU</b>, <b>FRA</b>) both work. At least one of Keywords, CPV codes or Countries is required.

## `publishedSince` (type: `string`):

How far back to search. Relative like <b>7d</b> / <b>30d</b>, or an absolute date <b>YYYY-MM-DD</b>.

## `maxRecords` (type: `integer`):

Maximum number of tender records to output (and charge) in this run. Hard limit: 5000.

## `alertMode` (type: `boolean`):

When enabled, the Actor remembers which notice IDs it has already output for this exact filter combination (in a named key-value store) and outputs <b>only tenders it has not seen before</b>. Run it on an Apify Schedule to get a daily feed of new tenders. Only new notices are charged.

## `minValue` (type: `integer`):

Only return notices whose estimated or awarded value is at least this many EUR. Note: TED does not convert currencies, so this filter only matches notices whose value is denominated in EUR; notices with values in other currencies (or no stated value) are excluded when this filter is set.

## Actor input object example

```json
{
  "keywords": "software development",
  "publishedSince": "7d",
  "maxRecords": 100,
  "alertMode": false
}
```

# 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 = {
    "keywords": "software development"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bikram07/eu-tenders-feed").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 = { "keywords": "software development" }

# Run the Actor and wait for it to finish
run = client.actor("bikram07/eu-tenders-feed").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 '{
  "keywords": "software development"
}' |
apify call bikram07/eu-tenders-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=bikram07/eu-tenders-feed",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Tenders Feed — TED Procurement Search & Alerts",
        "description": "Search and monitor EU public procurement tenders from the official TED API. Filter by CPV codes, countries, keywords, and value. Alert mode dedupes — schedule it and get only NEW tenders. €700B+/year market. $1 per 1,000 records, normalized JSON output.",
        "version": "0.1",
        "x-build-id": "h2YPpeBLBa1cUD7Wq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/bikram07~eu-tenders-feed/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-bikram07-eu-tenders-feed",
                "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/bikram07~eu-tenders-feed/runs": {
            "post": {
                "operationId": "runs-sync-bikram07-eu-tenders-feed",
                "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/bikram07~eu-tenders-feed/run-sync": {
            "post": {
                "operationId": "run-sync-bikram07-eu-tenders-feed",
                "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": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "string",
                        "description": "Full-text search phrase matched against the whole notice (title, description, buyer). Example: <b>solar panels</b>. At least one of Keywords, CPV codes or Countries is required."
                    },
                    "cpvCodes": {
                        "title": "CPV codes",
                        "type": "array",
                        "description": "Common Procurement Vocabulary codes to filter by, e.g. <b>72000000</b> (IT services) or <b>45000000</b> (construction). A parent code also matches its subcategories on TED. At least one of Keywords, CPV codes or Countries is required.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "countries": {
                        "title": "Buyer countries",
                        "type": "array",
                        "description": "ISO country codes of the buyer's country — 2-letter (<b>DE</b>, <b>FR</b>) or 3-letter (<b>DEU</b>, <b>FRA</b>) both work. At least one of Keywords, CPV codes or Countries is required.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "publishedSince": {
                        "title": "Published since",
                        "type": "string",
                        "description": "How far back to search. Relative like <b>7d</b> / <b>30d</b>, or an absolute date <b>YYYY-MM-DD</b>.",
                        "default": "7d"
                    },
                    "maxRecords": {
                        "title": "Max records",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of tender records to output (and charge) in this run. Hard limit: 5000.",
                        "default": 100
                    },
                    "alertMode": {
                        "title": "Alert mode (only new tenders)",
                        "type": "boolean",
                        "description": "When enabled, the Actor remembers which notice IDs it has already output for this exact filter combination (in a named key-value store) and outputs <b>only tenders it has not seen before</b>. Run it on an Apify Schedule to get a daily feed of new tenders. Only new notices are charged.",
                        "default": false
                    },
                    "minValue": {
                        "title": "Minimum contract value (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only return notices whose estimated or awarded value is at least this many EUR. Note: TED does not convert currencies, so this filter only matches notices whose value is denominated in EUR; notices with values in other currencies (or no stated value) are excluded when this filter is set."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
