# Kroger Scraper: Product Prices, Stock & Search (`getascraper/kroger-scraper`) Actor

Search Kroger.com by keyword and store to get live product data. Extract price, unit price, stock level, brand, size, and images per store location. Built for price-comparison apps, grocery deal trackers, and CPG brand monitoring. No login required.

- **URL**: https://apify.com/getascraper/kroger-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.30 / 1,000 products

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Kroger Scraper: Product Prices, Stock & Search

<table width="100%">
<tr>
<td colspan="4" style="padding:14px 18px;background:#F0F4FA;border-top:3px solid #003DA5;border-left:1px solid #C7D6EC;border-right:1px solid #C7D6EC;border-radius:8px 8px 0 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Two ways to watch Kroger.com, pick the one that matches your job.</span> <span style="font-size:15px;color:#57534E">Pull the full catalog once, or get pinged only when something changes.</span>
</td>
</tr>
<tr>
<td colspan="4" style="padding:10px 14px;background:#003DA5;border-left:1px solid #C7D6EC;border-right:1px solid #C7D6EC">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">KROGER SUITE</span>
<span style="color:#CFE0F5;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Product search and price monitoring for Kroger.com</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border-left:1px solid #C7D6EC;border-bottom:1px solid #C7D6EC;vertical-align:top;width:50%;background:#F0F4FA;border-radius:0 0 0 8px">
<span style="white-space:nowrap"><span style="color:#003DA5;text-decoration:none;font-weight:700;font-size:13px">🛒 Kroger Scraper</span></span><br>
<span style="color:#003DA5;font-size:11px;font-weight:700">&#10148; You are here</span>
</td>
<td style="padding:10px 12px;border-left:1px solid #C7D6EC;border-bottom:1px solid #C7D6EC;vertical-align:top;width:50%;background:#FFFFFF;border-radius:0 0 8px 0">
<span style="white-space:nowrap"><a href="https://apify.com/getascraper/kroger-price-monitor" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">🔔 Kroger Price Monitor</a></span><br>
<span style="color:#57534E;font-size:11px">Get a row back only when a price or stock status changes</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F0F4FA;border:1px solid #C7D6EC;border-top:4px solid #003DA5;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Kroger prices and stock, by store, in minutes</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Search any keyword on Kroger.com and get real price, unit price, and stock level for every matching product, scoped to the exact store you choose.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D6EC;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#002d7a">🏪 Store-level accuracy</span><br>
<span style="font-size:12px;color:#57534E">Prices and stock tied to one real Kroger store, not a national average</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D6EC;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#002d7a">💵 Real unit pricing</span><br>
<span style="font-size:12px;color:#57534E">Price per ounce or per count, the same numbers Kroger shows shoppers</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D6EC;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#002d7a">📦 Live stock status</span><br>
<span style="font-size:12px;color:#57534E">See what is actually on the shelf before you plan around it</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #C7D6EC;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#002d7a">🥗 Full product detail</span><br>
<span style="font-size:12px;color:#57534E">Brand, size, dietary tags, and images land in the same row</span>
</td>
</tr>
</table>

### 🔍 What does Kroger Scraper do?

Kroger Scraper searches [Kroger.com](https://www.kroger.com) for any keyword, from "milk" to a specific brand name, and returns a clean row for every matching product. Each row carries the price, the unit price, the current stock level, the brand, the package size, and the product image, all scoped to the Kroger store location you pick.

Kroger prices and stock change store by store and day by day, so a single national price list is never accurate enough for real decisions. This Actor pulls live numbers straight from the store you choose, run on demand or on a schedule through the Apify platform.

Need to track changes over time instead of a one-off pull? Pair this with [Kroger Price Monitor](https://apify.com/getascraper/kroger-price-monitor), which watches the same keywords and store and returns a row only when a price or stock status actually changes.

### 🧑‍💼 Why use Kroger Scraper?

**CPG brands and agencies** track how their products are priced and stocked across Kroger stores, without opening a browser tab for every location.

**Grocery price comparison tools** pull live Kroger prices to show shoppers where to save, store by store.

**Market researchers** watch category prices over time to measure grocery inflation with real numbers, not survey estimates.

**Price intelligence platforms** add Kroger, one of the largest US grocery chains, to a wider retail monitoring feed.

Kroger.com is protected by strong bot defenses, so most scraping tools either fail outright or fall back to slow, unreliable browser automation. This Actor handles that layer for you and hands back a ready-to-use dataset.

### 🚀 How to use Kroger Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0F4FA;border:1px solid #C7D6EC;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#003DA5;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Pick your store</span><br>
<span style="font-size:12px;color:#57534E">Enter the Kroger store ID for the location you want to track.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F4FA;border:1px solid #C7D6EC;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#003DA5;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Add your keywords</span><br>
<span style="font-size:12px;color:#57534E">List the products or categories you want priced.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F4FA;border:1px solid #C7D6EC;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#003DA5;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get a clean table</span><br>
<span style="font-size:12px;color:#57534E">Price, stock, and product detail land in your dataset, ready to export.</span>
</td>
</tr>
</table>

1. Open Kroger Scraper on the Apify platform and click **Try for free** or **Start**.
2. Find your store's ID from the [Kroger store locator](https://www.krogerstorelocator.com/) or by picking a store on kroger.com and checking the page URL. Paste it into **Store location ID**.
3. Add one or more search terms, such as "eggs" or "cocoa pebbles", under **Search terms**.
4. Set a **Max items** limit if you want to cap the run, or leave it unlimited.
5. Click **Start** and download your results as JSON, CSV, or Excel once the run finishes.

You can also schedule this Actor to run daily or weekly, so your price and stock data stays current without any manual work.

### ⚙️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| Search terms | array of strings | Yes | Keywords to search on Kroger.com, one search per keyword. |
| Store location ID | string | No | The Kroger store ID to price and check stock against. Find it via the Kroger store locator or from the URL after picking a store on kroger.com. |
| Max items | integer | No | Maximum number of products to return across all search terms. Set to 0 for unlimited. |
| Proxy configuration | object | No | Proxy used to reach Kroger.com. Residential is the default and recommended setting. |

### 📤 Output

Every run produces one row per matching product. Example:

```json
{
  "productId": "00011110401014",
  "title": "Kroger® Vitamin D Whole Milk Gallon",
  "brand": "Kroger",
  "category": "Dairy",
  "price": 3.39,
  "priceFormatted": "$3.39",
  "unitPrice": "$0.03/fl oz",
  "inStock": true,
  "stockLevel": "HIGH",
  "size": "1 gal",
  "dietaryInfo": ["Vegetarian", "Kosher", "Pescatarian"],
  "image": "https://www.kroger.com/product/images/xlarge/back/0001111040101",
  "sellerName": "Kroger",
  "storeLocationId": "01600803",
  "upc": "00011110401014",
  "query": "milk",
  "scrapedAt": "2026-07-08T06:19:39.364Z"
}
````

You can download the dataset in JSON, CSV, Excel, HTML, or XML from the Apify platform, or pull it through the API into your own pipeline.

### 📋 Data table

| Field | Type | Description |
|---|---|---|
| title | string | Product name as shown on Kroger.com. |
| brand | string | Brand name. |
| category | string | Department or category, such as Dairy or Bakery. |
| price | number | Numeric regular price in USD. |
| priceFormatted | string | Display-formatted price, such as "$3.39". |
| unitPrice | string | Price per unit, such as "$0.03/fl oz". |
| inStock | boolean | Whether the product is currently in stock at the chosen store. |
| stockLevel | string | Inventory level label, such as HIGH, LOW, or OUT\_OF\_STOCK. |
| size | string | Package size, such as "1 gal" or "11 oz". |
| dietaryInfo | array | Dietary tags, such as Vegetarian, Gluten Free, or Kosher. |
| image | string | Product image URL. |
| sellerName | string | Seller of record, usually Kroger. |
| storeLocationId | string | Store location ID this price and stock reading applies to. |
| upc | string | UPC or GTIN-14 barcode. |
| query | string | The search keyword that produced this row. |
| scrapedAt | string | Timestamp of when the item was collected. |

Fields that are not available for a given product are left out of that row rather than filled with a placeholder, so every value in your dataset is real.

### 💰 Pricing

Kroger Scraper is pay per result. You only pay for the products actually returned, and an empty run costs nothing. There is no subscription and no minimum spend.

### ⭐ Enjoying Kroger Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0F4FA;border:1px solid #C7D6EC;border-left:5px solid #003DA5;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this Actor is saving you hours of manual price checks, tell us about it.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other CPG teams and researchers find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#003DA5;border:1px solid #C7D6EC;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/kroger-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips for better runs

- Use specific search terms, such as "whole wheat bread" instead of "bread", to keep results tightly matched to what you need.
- Set a Max items limit for exploratory runs, then remove it once you know the volume of results a keyword returns.
- Schedule the Actor to run daily or weekly to build a price and stock history over time.
- If you track multiple stores, run the Actor once per store location ID, either as separate tasks or a schedule.

### ❓ FAQ

**Does this Actor work for any Kroger store location?**
Yes. Prices and stock are store-specific on Kroger.com, so you provide the store location ID for the store you want to track. You can run the Actor separately for as many stores as you need.

**Why do some rows have missing fields, like stock level?**
Kroger does not return every field for every product. Rather than guess or fill in a placeholder, this Actor leaves those fields out of the row so your data stays accurate.

**Can I search for a whole category instead of one keyword?**
Yes, broader terms like "cereal" or "yogurt" work the same way as specific product names and return every matching result.

**Is this legal?**
This Actor only reads public product listings that are visible to any shopper on Kroger.com. It does not access accounts, place orders, or collect personal data. Review Kroger's terms of service if you plan to use the data commercially at scale.

Found an issue or want a feature added? Open a ticket from the Issues tab on this Actor's page, or reach out for a custom version built around your exact workflow.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search for on Kroger.com, e.g. "milk", "eggs", "cocoa pebbles". One search is run per keyword.

## `storeLocationId` (type: `string`):

The Kroger store ID to price and check stock against (prices and inventory are store-specific). Find yours from the Kroger store locator (krogerstorelocator.com) or by selecting a store on kroger.com and inspecting the resulting URL/cookie for the numeric store ID. Defaults to a store used during actor testing.

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

Maximum number of products to return across all search terms. Set to 0 for unlimited (all matching results for every search term).

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

Proxy used to reach Kroger.com. Kroger runs Akamai Bot Manager. Cloud testing showed Apify's datacenter proxy pool gets blocked on essentially every request, while US Residential proxy reliably gets through, so Residential is the default here.

## Actor input object example

```json
{
  "searchTerms": [
    "milk",
    "eggs"
  ],
  "storeLocationId": "02100537",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchTerms": [
        "milk",
        "eggs"
    ],
    "storeLocationId": "02100537",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/kroger-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 = {
    "searchTerms": [
        "milk",
        "eggs",
    ],
    "storeLocationId": "02100537",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/kroger-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 '{
  "searchTerms": [
    "milk",
    "eggs"
  ],
  "storeLocationId": "02100537",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call getascraper/kroger-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kroger Scraper: Product Prices, Stock & Search",
        "description": "Search Kroger.com by keyword and store to get live product data. Extract price, unit price, stock level, brand, size, and images per store location. Built for price-comparison apps, grocery deal trackers, and CPG brand monitoring. No login required.",
        "version": "0.1",
        "x-build-id": "1AnhsQ1kMNtKuFok2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~kroger-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-kroger-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/getascraper~kroger-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-kroger-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/getascraper~kroger-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-kroger-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": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Keywords to search for on Kroger.com, e.g. \"milk\", \"eggs\", \"cocoa pebbles\". One search is run per keyword.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "storeLocationId": {
                        "title": "Store location ID",
                        "type": "string",
                        "description": "The Kroger store ID to price and check stock against (prices and inventory are store-specific). Find yours from the Kroger store locator (krogerstorelocator.com) or by selecting a store on kroger.com and inspecting the resulting URL/cookie for the numeric store ID. Defaults to a store used during actor testing.",
                        "default": "02100537"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of products to return across all search terms. Set to 0 for unlimited (all matching results for every search term).",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach Kroger.com. Kroger runs Akamai Bot Manager. Cloud testing showed Apify's datacenter proxy pool gets blocked on essentially every request, while US Residential proxy reliably gets through, so Residential is the default here.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
