# Transfermarkt Scraper - Football Players and Transfer Values (`parseforge/transfermarkt-scraper`) Actor

Scrape Transfermarkt player profiles, market values, transfer history, and club squad data. Extract football statistics, contract details, and agent information.

- **URL**: https://apify.com/parseforge/transfermarkt-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other, News, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## ⚽ Transfermarkt Player Market Values Scraper

> 🚀 **Export soccer player market values, clubs, leagues, and contract details from Transfermarkt in seconds.** No coding required - just click Run.

> 🕒 **Last updated:** 2026-05-21 · **📊 13 fields** per record · **25 players/page, paginated** · **Worldwide coverage**

The **Transfermarkt Scraper** extracts real-time soccer player market valuations from [Transfermarkt.com](https://www.transfermarkt.com), the world's leading football data platform. Every record includes a player photo, market value in euros, position, age, nationality, club, league, and contract expiry date - all scraped live at runtime.

The dataset covers the world's most valuable players by default. Filter by league code (Premier League, Bundesliga, LaLiga, Serie A, Ligue 1, and more) and sort by market value or age.

**Coverage:** All professional leagues worldwide. Top 25 players per page, paginated up to your `maxItems` limit. Each player profile is visited to capture contract expiry and league name. Dual-national players show all nationalities.

| Who uses it | Why |
|---|---|
| Football analysts | Track market value trends by league or position |
| Fantasy football managers | Identify undervalued players by age and contract status |
| Sports journalists | Verify transfer valuations instantly |
| Data scientists | Build transfer market prediction models |
| Club scouts | Screen players by value, age, and contract status |
| Betting researchers | Cross-reference player value with performance data |

### 📋 What the Transfermarkt Scraper does

- Fetches the most-valuable-players leaderboard or filters by league code
- Extracts full player records: photo, name, position, age, nationality, club, league, market value, contract expiry
- Visits each player profile page to pull contract expiry and exact league name
- Handles dual nationals (e.g., "France, Cameroon" for Kylian Mbappe)
- Converts market values to raw numeric EUR figures (e.g. €200.00m → 200000000)
- Paginates automatically until your `maxItems` limit is reached
- Exports to CSV, JSON, Excel, or XML via Apify datasets

> 💡 **Why it matters:** Transfermarkt market values are the industry standard reference for player worth. Scouts, journalists, and analysts cite them daily. Now you can download them programmatically in seconds.

### 🎬 Full Demo

🚧 Coming soon - video walkthrough showing a full export to CSV

### ⚙️ Input

| Field | Type | Default | Description |
|---|---|---|---|
| `maxItems` | integer | 10 | Max players to return. Free: 10, Paid: up to 1,000,000 |
| `league` | string | *(empty)* | League code filter (e.g. GB1, ES1, L1, IT1, FR1). Leave empty for worldwide top |
| `sortBy` | select | marketValue | Sort by market value (highest) or age (youngest) |

**Example 1 - Top 50 most valuable players worldwide:**
```json
{
    "maxItems": 50,
    "sortBy": "marketValue"
}
````

**Example 2 - Top 25 youngest valuable Premier League players:**

```json
{
    "maxItems": 25,
    "league": "GB1",
    "sortBy": "age"
}
```

> ⚠️ **Good to Know:** Free plan users are limited to 10 results per run. [Upgrade to paid](https://console.apify.com/sign-up?fpr=vmoqkp) to export thousands of players. Common league codes: `GB1` (Premier League), `ES1` (LaLiga), `L1` (Bundesliga), `IT1` (Serie A), `FR1` (Ligue 1), `NL1` (Eredivisie), `PT1` (Primeira Liga), `TR1` (Super Lig).

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🖼️ `imageUrl` | string | Player portrait photo URL |
| 👤 `name` | string | Player full name |
| 🎯 `position` | string | Playing position (e.g. Centre-Forward, Right Winger) |
| 🎂 `age` | string | Age in years |
| 🌍 `nationality` | string | Nationality (comma-separated for dual nationals) |
| 🏟️ `club` | string | Current club name |
| 🏆 `league` | string | League the club plays in |
| 💰 `marketValue` | string | Market value in EUR (numeric, e.g. 200000000) |
| 💱 `marketValueCurrency` | string | Currency (EUR) |
| 📅 `contractUntil` | string | Contract expiry date (DD/MM/YYYY) |
| 🔗 `url` | string | Transfermarkt player profile URL |
| 🕒 `scrapedAt` | string | ISO timestamp of data collection |
| ❌ `error` | string | Error message if scraping failed |

**Sample records:**

```json
[
    {
        "imageUrl": "https://img.a.transfermarkt.technology/portrait/small/937958-1773173768.jpg?lm=1",
        "name": "Lamine Yamal",
        "position": "Right Winger",
        "age": "18",
        "nationality": "Spain",
        "club": "FC Barcelona",
        "league": "LaLiga",
        "marketValue": "200000000",
        "marketValueCurrency": "EUR",
        "contractUntil": "30/06/2031",
        "url": "https://www.transfermarkt.com/lamine-yamal/profil/spieler/937958",
        "scrapedAt": "2026-05-21T23:53:42.239Z"
    },
    {
        "imageUrl": "https://img.a.transfermarkt.technology/portrait/small/418560-1709108116.png?lm=1",
        "name": "Erling Haaland",
        "position": "Centre-Forward",
        "age": "25",
        "nationality": "Norway",
        "club": "Manchester City",
        "league": "Premier League",
        "marketValue": "200000000",
        "marketValueCurrency": "EUR",
        "contractUntil": "30/06/2034",
        "url": "https://www.transfermarkt.com/erling-haaland/profil/spieler/418560",
        "scrapedAt": "2026-05-21T23:53:42.339Z"
    },
    {
        "imageUrl": "https://img.a.transfermarkt.technology/portrait/small/342229-1682683695.jpg?lm=1",
        "name": "Kylian Mbappe",
        "position": "Centre-Forward",
        "age": "27",
        "nationality": "France, Cameroon",
        "club": "Real Madrid",
        "league": "LaLiga",
        "marketValue": "200000000",
        "marketValueCurrency": "EUR",
        "contractUntil": "30/06/2029",
        "url": "https://www.transfermarkt.com/kylian-mbappe/profil/spieler/342229",
        "scrapedAt": "2026-05-21T23:53:42.408Z"
    }
]
```

### ✨ Why choose this Actor

| Feature | Detail |
|---|---|
| 🔄 Real-time data | Always scraped live - never cached or stale |
| 💰 Numeric market values | Raw integer EUR values, ready for analysis |
| 📅 Contract dates | Contract expiry from each player's profile page |
| 🌍 Multi-nationality | Handles dual and triple nationals correctly |
| 🏆 League filtering | Filter by any league with its 2-3 letter code |
| 📤 Multiple formats | Export to CSV, JSON, Excel, XML, or use via API |
| 🆓 Free tier | 10 players free, no credit card required |

### 📈 How it compares to alternatives

| Feature | This Actor | Manual copy-paste | Competitor scrapers |
|---|---|---|---|
| Numeric market values | Yes | No | Varies |
| Contract expiry date | Yes | Tedious | Rarely |
| League filter | Yes | Manual search | Sometimes |
| Pagination | Automatic | Manual | Sometimes |
| Free tier | 10 players | Unlimited | Usually none |
| Export formats | CSV/JSON/Excel/XML | None | Limited |

### 🚀 How to use

1. [Create a free account](https://console.apify.com/sign-up?fpr=vmoqkp) on Apify (includes $5 credit)
2. Open the [Transfermarkt Scraper](https://apify.com/parseforge/transfermarkt-scraper)
3. Set `maxItems` (10 free, paid plans up to 1,000,000)
4. Optionally set a `league` code (e.g. `GB1` for Premier League)
5. Click **Run**
6. Download results as CSV, JSON, or Excel

### 💼 Business use cases

#### Transfer market analysis

Track how player values shift before and after transfer windows. Export weekly snapshots, join on player name, and chart value trajectories for any league or position group.

#### Contract expiry scouting

Filter for players with contracts expiring within 12 months - the classic free-agent hunting ground. Combine `contractUntil` filtering with market value to find high-value soon-to-be free agents.

#### Fantasy football and betting research

Pull the youngest high-value players by league (use `sortBy: "age"`) to identify breakout candidates before they appear on mainstream radar. Cross-reference with performance APIs.

#### Media and journalism

Instantly verify the reported market value of any player in transfer rumors. Export the full top-100 for league comparison articles with one API call.

### 🔌 Automating Transfermarkt Scraper

Connect this actor to your workflows:

- **Make (formerly Integromat)** - schedule weekly exports, push to Google Sheets
- **Zapier** - trigger on run completion, send player data to Slack or Airtable
- **Apify Scheduler** - run automatically every Monday morning before transfer windows
- **REST API** - call from any programming language, CI/CD pipeline, or data warehouse
- **Webhooks** - POST results to your endpoint when a run finishes

### 🌟 Beyond business use cases

#### Academic research

Football economists use Transfermarkt data to study human capital valuation in sport. Export longitudinal datasets to analyze how age, nationality, and league tier correlate with market value.

#### Creative projects

Build a "most valuable XI" generator, a transfer value tracker visualization, or a contract-cliff heatmap by club - all powered by live data.

#### Non-profit and fan communities

Fan-run analytics sites and supporter trusts use market value data to assess club spending efficiency and squad health without expensive data subscriptions.

#### Experimentation

Prototype machine learning models that predict transfer fees from Transfermarkt valuations. The numeric `marketValue` field drops straight into a feature matrix.

### 🤖 Ask an AI assistant about this scraper

You can ask your AI assistant (ChatGPT, Claude, Gemini, etc.):

> "I have a JSON dataset of Transfermarkt player market values with fields: imageUrl, name, position, age, nationality, club, league, marketValue, marketValueCurrency, contractUntil, url, scrapedAt. How do I find the top 10 highest-value players per league?"

The structured output is designed to be immediately usable in AI workflows, spreadsheets, and data pipelines.

### ❓ Frequently Asked Questions

#### 🔍 What is a market value on Transfermarkt?

Transfermarkt community editors assign market values based on player performance, age, contract length, and transfer comparables. These values are the de facto industry standard cited by clubs, journalists, and analysts worldwide.

#### 💶 What currency are market values in?

All values are in EUR and stored as numeric integers. A value of `200000000` means €200 million.

#### 🌐 Does it cover all leagues?

Yes - any league accessible via a Transfermarkt league code. Use `GB1` for Premier League, `ES1` for LaLiga, `L1` for Bundesliga, `IT1` for Serie A, `FR1` for Ligue 1, and so on.

#### 📅 How current is the contract data?

Contract expiry dates are scraped live from each player's individual profile page during every run.

#### 🔄 How often should I run this?

Market values are updated by Transfermarkt editors typically every 2-4 weeks. Run weekly to catch updates, or run before major transfer windows (January and June).

#### 📥 What export formats are available?

CSV, JSON, Excel (XLSX), XML, and JSONL. All via Apify's dataset download page or the REST API.

#### 🆓 How many players can I get for free?

Free plan users get 10 players per run. [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and use the credit to run larger batches.

#### 🔒 Do I need to log in to Transfermarkt?

No. All data is scraped from public pages. No account or login is required.

#### 🏎️ How fast is it?

The scraper visits the listing page and each player's profile page. For 100 players expect approximately 2-4 minutes. For 1,000 players, plan for 20-40 minutes.

#### 🤔 Can I filter by position?

Not directly via input - Transfermarkt's listing page doesn't expose a position filter. Export the full dataset and filter by `position` in your spreadsheet or code.

#### 📊 Can I get historical market values?

This actor returns current market values. For historical trends, run it on a schedule and join datasets by player `url` over time.

#### 🔗 Is the output compatible with other data sources?

Yes. The `url` field links to the player's Transfermarkt profile, and the `name` field can be used to join against other football databases (FBref, WhoScored, Sofascore).

### 🔌 Integrate with any app

Connect your Transfermarkt data to:

**Spreadsheets:** Google Sheets, Excel Online, Airtable\
**Databases:** PostgreSQL, MySQL, MongoDB, BigQuery, Snowflake\
**BI Tools:** Tableau, Power BI, Looker, Metabase\
**Automation:** Make, Zapier, n8n, Pipedream\
**Cloud Storage:** AWS S3, Google Cloud Storage, Azure Blob\
**Data Pipelines:** Airbyte, Fivetran, dbt\
**Messaging:** Slack, Teams, Discord webhooks\
**CRM:** Salesforce, HubSpot (via Zapier)

### 🔗 Recommended Actors

| Actor | Description |
|---|---|
| [OurAirports Global Airport Database Scraper](https://apify.com/parseforge/ourairports-scraper) | Export the full global airport database with IATA codes, coordinates, and type |
| [FINRA BrokerCheck Scraper](https://apify.com/parseforge/finra-brokercheck-scraper) | Look up broker and advisor registration records from FINRA |
| [Copart Public Auction Scraper](https://apify.com/parseforge/copart-public-search-scraper) | Scrape salvage vehicle auction listings from Copart |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for scrapers across sports, finance, real estate, and more.

***

*This actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by Transfermarkt GmbH & Co. KG. All data is publicly available on Transfermarkt.com. Use responsibly and in accordance with Transfermarkt's terms of service.*

# Actor input Schema

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

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

## `league` (type: `string`):

Filter by league code. Leave empty to scrape most valuable players worldwide. Examples: GB1 (Premier League), ES1 (LaLiga), L1 (Bundesliga), IT1 (Serie A), FR1 (Ligue 1).

## `sortBy` (type: `string`):

Sort players by market value (highest first) or by age.

## Actor input object example

```json
{
  "maxItems": 10,
  "sortBy": "marketValue"
}
```

# Actor output Schema

## `imageUrl` (type: `string`):

Player portrait photo URL

## `name` (type: `string`):

Player full name

## `position` (type: `string`):

Player position (e.g. Centre-Forward, Right Winger)

## `age` (type: `string`):

Player age in years

## `nationality` (type: `string`):

Player nationality or nationalities (comma-separated if dual national)

## `club` (type: `string`):

Current club name

## `league` (type: `string`):

League the club plays in

## `marketValue` (type: `string`):

Current market value in euros (numeric string)

## `marketValueCurrency` (type: `string`):

Currency of market value (EUR)

## `contractUntil` (type: `string`):

Contract expiry date (DD/MM/YYYY)

## `url` (type: `string`):

Transfermarkt player profile URL

## `scrapedAt` (type: `string`):

ISO timestamp of when the data was collected

## `error` (type: `string`):

Error message if scraping failed for this player

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/transfermarkt-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parseforge/transfermarkt-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/transfermarkt-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Transfermarkt Scraper - Football Players and Transfer Values",
        "description": "Scrape Transfermarkt player profiles, market values, transfer history, and club squad data. Extract football statistics, contract details, and agent information.",
        "version": "0.1",
        "x-build-id": "frWNDugrorBEmCMcm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~transfermarkt-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-transfermarkt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~transfermarkt-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-transfermarkt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~transfermarkt-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-transfermarkt-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "league": {
                        "title": "League",
                        "type": "string",
                        "description": "Filter by league code. Leave empty to scrape most valuable players worldwide. Examples: GB1 (Premier League), ES1 (LaLiga), L1 (Bundesliga), IT1 (Serie A), FR1 (Ligue 1)."
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "marketValue",
                            "age"
                        ],
                        "type": "string",
                        "description": "Sort players by market value (highest first) or by age.",
                        "default": "marketValue"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
