# Wine-Searcher – Wine Prices, Scores, Offers & LWIN (`abotapi/wine-searcher-scraper`) Actor

Look up wines on Wine-Searcher by name, URL, or LWIN code. Returns 30+ fields including critic scores, prices, grape, region, appellation, producer, label image, user ratings, food pairing, live offer counts, cheapest merchant offer, and optional critic review breakdown.

- **URL**: https://apify.com/abotapi/wine-searcher-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 wine 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

## Wine-Searcher Scraper: Scores, Prices & Popularity

Look up any wine on Wine-Searcher and get a clean, structured record back. Give the actor a list of wine names, Wine-Searcher links, or LWIN codes and it returns critic scores, average and market prices, grape, region, appellation, producer, label image, user ratings and live offer counts as JSON or CSV. Built for merchants, collectors, sommeliers and market analysts who need Wine-Searcher data in a spreadsheet or pipeline instead of a browser tab.

### Why this scraper

- Three input styles in one actor: wine names, Wine-Searcher URLs, or LWIN codes (LWIN7 / 11 / 16 / 18), with automatic detection so you can mix them.
- Richer output than a plain price lookup: 30+ fields per wine, including user ratings, food pairing, region and origin, that other tools drop.
- Cheapest live offer with the merchant name when you enable offer extraction, plus the total number of offers worldwide.
- Optional per-critic review breakdown (reviewer name and score) when you enable review collection.
- Looks up several wines in parallel for faster runs on long lists.
- Pay only for wines actually found. Not-found and unavailable items are flagged separately and do not count.
- Currency context follows the proxy country (France / EUR by default), so prices match the market you care about.
- Optional one-click export of every result into Notion, Linear, Airtable or Apify through MCP connectors.

### Data you get

> Sample shape, values are illustrative placeholders, not from a live listing.

| Field | Example |
|---|---|
| `wineName` | `2015 Sample Wine, Pomerol, France` |
| `vintage` | `2015` |
| `appellation` | `Pomerol, France` |
| `region` | `Pomerol` |
| `grapeVariety` | `Merlot` |
| `style` | `Red - Savoury and Classic` |
| `producer` | `Sample Producer` |
| `description` | `Short producer / wine description text.` |
| `score` | `97` |
| `scoreBestRating` | `100` |
| `criticReviewsCount` | `20` |
| `criticReviews` | `[{ "author": "Sample Critic", "score": 95, "bestRating": 100, "tastingNote": "..." }]` |
| `avgPrice` | `5076` |
| `avgPriceCurrency` | `EUR` |
| `cheapestPriceAmount` | `3400.00` |
| `cheapestPriceCurrency` | `EUR` |
| `cheapestPriceMerchant` | `Sample Merchant` |
| `cheapestPriceMerchantUrl` | `https://www.example.com/wine/0000` |
| `bottlesPerUnit` | `1` |
| `offers` | `[{ "price": 3400.0, "priceCurrency": "EUR", "merchant": "Sample Merchant", "merchantUrl": "...", "unitDescription": "Bottle (750ml)", "bottlesPerUnit": 1, "availability": "InStock" }]` |
| `offersCount` | `13` |
| `labelImageUrl` | `https://www.wine-searcher.com/images/labels/00/00/000000000.jpg` |
| `wineSearcherUrl` | `https://www.wine-searcher.com/find/sample/2015` |
| `searchLocation` | `France` |
| `scrapedAt` | `2026-01-01T00:00:00.000Z` |

The full record, including the complete `offers` array (every merchant, price and link) and the `criticReviews` breakdown with tasting notes, is always kept in the Apify dataset.

### How to use

Look up by wine name (auto-detected):

```json
{
  "inputType": "auto",
  "wineNames": ["Petrus 2015", "Dom Perignon 2013"],
  "maxItems": 20
}
````

Look up by LWIN code:

```json
{
  "inputType": "lwins",
  "lwins": ["11316442021", "11084042019"]
}
```

Look up by Wine-Searcher URL, fastest mode (no offer extraction):

```json
{
  "inputType": "urls",
  "urls": ["https://www.wine-searcher.com/find/sassicaia/2019"],
  "fetchOffers": false
}
```

Pin a different currency market (United Kingdom / GBP):

```json
{
  "inputType": "auto",
  "wineNames": ["Sassicaia 2019"],
  "proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GB" }
}
```

### Send results into your apps (MCP connectors)

Optionally pipe every result into the tools you already use, no code required:

1. Authorize a connector under Apify, Settings, API & Integrations (Notion, Linear, Airtable or Apify).
2. Select it in the `mcpConnectors` input. For Notion, also set `notionParentPageUrl`.
3. Run the actor. Results are written to the connector after the dataset is saved.

The connector receives a condensed, human-readable summary per wine (a title plus the key fields). The complete record always stays in the Apify dataset. Leaving `mcpConnectors` empty skips this entirely and never changes the dataset output.

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `inputType` | string | `auto` | `auto`, `wineNames`, `urls`, or `lwins`. Auto-detect routes each item by its shape. |
| `wineNames` | array | (none) | Wine names, ideally with vintage year. Up to 1000. |
| `urls` | array | (none) | Wine-Searcher find URLs. Up to 1000. |
| `lwins` | array | (none) | LWIN codes (7 / 11 / 16 / 18 digit). Up to 1000. |
| `fetchOffers` | boolean | `true` | Also extract the cheapest offer, the full offers list and popularity. Slightly slower per wine. |
| `fetchReviews` | boolean | `false` | Also collect the per-critic review breakdown (reviewer name and score). |
| `concurrency` | integer | `3` | How many wines to look up in parallel within one session (1 to 6). Higher is faster but uses more memory. |
| `maxItems` | integer | `20` | The single cap: process at most this many wines. `0` means no limit. |
| `proxy` | object | Residential FR | Residential proxy required. Country sets the price-currency context. |
| `mcpConnectors` | array | (none) | Optional MCP connectors to export results to. |
| `notionParentPageUrl` | string | (none) | Parent Notion page for the Notion export. |
| `maxNotifyListings` | integer | `50` | Cap on items written to each connector per run. |

### Output example

> Sample shape, values are illustrative placeholders, not from a live listing.

```json
{
  "inputValue": "Petrus 2015",
  "inputType": "wineNames",
  "wineSearcherUrl": "https://www.wine-searcher.com/find/sample/2015",
  "wineName": "2015 Sample Wine, Pomerol, France",
  "vintage": 2015,
  "appellation": "Pomerol, France",
  "region": "Pomerol",
  "grapeVariety": "Merlot",
  "style": "Red - Savoury and Classic",
  "producer": "Sample Producer",
  "description": "Short producer / wine description text.",
  "score": 97,
  "scoreBestRating": 100,
  "criticReviewsCount": 20,
  "criticReviews": [
    { "author": "Sample Critic", "score": 95, "bestRating": 100, "tastingNote": "Tasted: Jan 2018. ..." }
  ],
  "avgPrice": 5076,
  "avgPriceCurrency": "EUR",
  "cheapestPriceAmount": 3400.0,
  "cheapestPriceCurrency": "EUR",
  "cheapestPriceMerchant": "Sample Merchant",
  "cheapestPriceMerchantUrl": "https://www.example.com/wine/0000",
  "bottlesPerUnit": 1,
  "offers": [
    { "price": 3400.0, "priceCurrency": "EUR", "merchant": "Sample Merchant", "merchantUrl": "https://www.example.com/wine/0000", "unitDescription": "Bottle (750ml)", "bottlesPerUnit": 1, "availability": "InStock" }
  ],
  "offersCount": 13,
  "labelImageUrl": "https://www.wine-searcher.com/images/labels/00/00/000000000.jpg",
  "searchLocation": "France",
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}
```

### Plan requirement

Wine-Searcher only accepts residential connections, so this actor needs Apify Residential proxy (Starter plan or higher). On a free plan without residential access the run will return no data. The default pins France for EUR pricing; change the proxy country to switch the price-currency market. Critic scores, prices and the full offers list are always included; the per-critic review breakdown with tasting notes is included when you enable review collection.

# Actor input Schema

## `inputType` (type: `string`):

How the items below are formatted. 'Auto-detect' inspects each item and routes it automatically (a wine-searcher.com URL, an all-digit LWIN code, or otherwise a wine name).

## `wineNames` (type: `array`):

Full wine names, ideally with vintage year, e.g. 'Domaine Leflaive Puligny-Montrachet Les Pucelles 2020'. Up to 1000 items.

## `urls` (type: `array`):

Direct wine-searcher.com/find/... links. Up to 1000 items.

## `lwins` (type: `array`):

Liv-ex Wine Identification Numbers (LWIN7, LWIN11, LWIN16, LWIN18), numeric or string. Up to 1000 items.

## `fetchOffers` (type: `boolean`):

When on, the actor also extracts the cheapest merchant offer (price + merchant), the full offers list and the popularity rank. Adds a little time per wine. Turn off for a faster, cheaper run that still returns scores, average price, grape, region and the offer count.

## `fetchReviews` (type: `boolean`):

When on, the actor also collects the per-critic review breakdown (reviewer name and score) for each wine. Each review captured is one enriched data item.

## `concurrency` (type: `integer`):

How many wines to look up at the same time within one session. Higher is faster but uses more memory; 3 is a good balance.

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

The single cap on this run: process at most this many wines from your list. Set to 0 for no limit (process the whole list). Keeps a first run cheap and predictable.

## `proxy` (type: `object`):

Residential proxy is required. The country also determines which regional currency the average price is shown in (default France / EUR).

## `mcpConnectors` (type: `array`):

Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify → Settings → API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "inputType": "auto",
  "wineNames": [
    "Domaine Leflaive Puligny-Montrachet Les Pucelles 2020",
    "Petrus 2015"
  ],
  "urls": [
    "https://www.wine-searcher.com/find/petrus/2015"
  ],
  "lwins": [
    "11316442021",
    "11084042019",
    "1131644"
  ],
  "fetchOffers": true,
  "fetchReviews": false,
  "concurrency": 3,
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

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

No description

# 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 = {
    "wineNames": [
        "Domaine Leflaive Puligny-Montrachet Les Pucelles 2020",
        "Petrus 2015"
    ],
    "urls": [
        "https://www.wine-searcher.com/find/petrus/2015"
    ],
    "lwins": [
        "11316442021",
        "11084042019",
        "1131644"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "FR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/wine-searcher-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 = {
    "wineNames": [
        "Domaine Leflaive Puligny-Montrachet Les Pucelles 2020",
        "Petrus 2015",
    ],
    "urls": ["https://www.wine-searcher.com/find/petrus/2015"],
    "lwins": [
        "11316442021",
        "11084042019",
        "1131644",
    ],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "FR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/wine-searcher-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 '{
  "wineNames": [
    "Domaine Leflaive Puligny-Montrachet Les Pucelles 2020",
    "Petrus 2015"
  ],
  "urls": [
    "https://www.wine-searcher.com/find/petrus/2015"
  ],
  "lwins": [
    "11316442021",
    "11084042019",
    "1131644"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}' |
apify call abotapi/wine-searcher-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wine-Searcher – Wine Prices, Scores, Offers & LWIN",
        "description": "Look up wines on Wine-Searcher by name, URL, or LWIN code. Returns 30+ fields including critic scores, prices, grape, region, appellation, producer, label image, user ratings, food pairing, live offer counts, cheapest merchant offer, and optional critic review breakdown.",
        "version": "1.0",
        "x-build-id": "QQanP0h5Fl9hvVeud"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~wine-searcher-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-wine-searcher-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/abotapi~wine-searcher-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-wine-searcher-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/abotapi~wine-searcher-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-wine-searcher-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",
                "required": [
                    "inputType"
                ],
                "properties": {
                    "inputType": {
                        "title": "Input type",
                        "enum": [
                            "auto",
                            "wineNames",
                            "urls",
                            "lwins"
                        ],
                        "type": "string",
                        "description": "How the items below are formatted. 'Auto-detect' inspects each item and routes it automatically (a wine-searcher.com URL, an all-digit LWIN code, or otherwise a wine name).",
                        "default": "auto"
                    },
                    "wineNames": {
                        "title": "Wine names",
                        "type": "array",
                        "description": "Full wine names, ideally with vintage year, e.g. 'Domaine Leflaive Puligny-Montrachet Les Pucelles 2020'. Up to 1000 items.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "Wine-Searcher URLs",
                        "type": "array",
                        "description": "Direct wine-searcher.com/find/... links. Up to 1000 items.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "lwins": {
                        "title": "LWIN codes",
                        "type": "array",
                        "description": "Liv-ex Wine Identification Numbers (LWIN7, LWIN11, LWIN16, LWIN18), numeric or string. Up to 1000 items.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchOffers": {
                        "title": "Fetch merchant offers and popularity",
                        "type": "boolean",
                        "description": "When on, the actor also extracts the cheapest merchant offer (price + merchant), the full offers list and the popularity rank. Adds a little time per wine. Turn off for a faster, cheaper run that still returns scores, average price, grape, region and the offer count.",
                        "default": true
                    },
                    "fetchReviews": {
                        "title": "Fetch critic reviews",
                        "type": "boolean",
                        "description": "When on, the actor also collects the per-critic review breakdown (reviewer name and score) for each wine. Each review captured is one enriched data item.",
                        "default": false
                    },
                    "concurrency": {
                        "title": "Parallel lookups",
                        "minimum": 1,
                        "maximum": 6,
                        "type": "integer",
                        "description": "How many wines to look up at the same time within one session. Higher is faster but uses more memory; 3 is a good balance.",
                        "default": 3
                    },
                    "maxItems": {
                        "title": "Max wines",
                        "minimum": 0,
                        "type": "integer",
                        "description": "The single cap on this run: process at most this many wines from your list. Set to 0 for no limit (process the whole list). Keeps a first run cheap and predictable.",
                        "default": 20
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is required. The country also determines which regional currency the average price is shown in (default France / EUR).",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "FR"
                        }
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify → Settings → API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
