# Open Food Facts Scraper (`solidcode/openfoodfacts-scraper`) Actor

\[💰 $7 / 1K] Extract food product data from Open Food Facts — nutrition, ingredients, allergens, Nutri-Score, Eco-Score, and images. Search by keyword, filter by category, brand, country, label, or grade, or look up products by barcode.

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

## Pricing

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

## Open Food Facts Scraper

Pull structured food-product data from Open Food Facts at scale — nutrition facts, ingredients, allergens, Nutri-Score, Eco-Score, NOVA processing group, dietary flags, and product images for millions of packaged foods worldwide. Search by keyword, narrow by category, brand, country, label, or Nutri-Score, or look up exact products by barcode. Built for nutrition-app builders, dietitians, and CPG market researchers who need a clean, structured product-and-nutrition dataset without building and maintaining their own scraper.

### Why This Scraper?

- **Over 3 million food products** — the world's largest open food database, searchable by keyword across product names and brands, with server-side pagination up to any volume you set.
- **Complete Nutri-Score, Eco-Score, and NOVA classification** — every row carries the A–E Nutri-Score nutritional grade, the A–E Eco-Score environmental grade, and the 1–4 NOVA food-processing group.
- **Full nutriments object** — per-100g and per-serving energy, fat, saturated fat, sugars, salt, proteins, fiber, and more, exactly as Open Food Facts records them.
- **Allergen tags and complete ingredient lists** — detected allergens as a clean array plus the full ingredients text for every product.
- **Three diet-analysis flags** — vegan, vegetarian, and palm-oil status returned as yes / no / maybe / unknown, derived from ingredient analysis.
- **Eight certified-label filters** — narrow to Organic, Vegan, Vegetarian, Gluten-free, Fair-Trade, No palm oil, Kosher, or Halal, applied by Open Food Facts directly so you never pay for non-matching rows.
- **Direct barcode lookup** — paste product URLs or bare barcodes (e.g. `3017620422003`) and get exact-match records back, fetched in parallel.
- **Three product images per record** — front, nutrition-facts panel, and ingredients-panel image URLs.
- **Six sort orders** — popularity, product name, newest, recently edited, best Nutri-Score, or best Eco-Score.

### Use Cases

**Nutrition & Diet Apps**
- Power calorie- and macro-tracking apps with per-100g nutriments
- Build allergen-aware meal planners using the allergens array
- Filter to vegan, vegetarian, or gluten-free products for diet-specific catalogs
- Surface Nutri-Score grades to help users compare healthier options

**CPG & Market Research**
- Benchmark a brand's portfolio Nutri-Score against competitors
- Map product assortments by category and country
- Track NOVA processing levels across a product segment
- Analyze packaging and quantity formats within a category

**Retail & E-commerce**
- Enrich product catalogs with nutrition facts, ingredients, and images
- Fill missing barcodes with canonical product data
- Add Eco-Score and label badges to storefront listings
- Standardize product names and brand fields across suppliers

**Health & Research**
- Study nutritional trends across regions and categories
- Build datasets for public-health nutrition studies
- Compare ingredient and additive prevalence across brands
- Track reformulation over time using added and last-edited dates

**Compliance & Labeling**
- Verify allergen declarations against ingredient lists
- Audit label claims such as Organic, Fair-Trade, and No palm oil
- Check palm-oil presence across a supply chain
- Cross-reference country availability for market-specific labeling

### Getting Started

#### Simple keyword search

```json
{
    "searchQuery": "chocolate",
    "maxResults": 100
}
````

#### Filtered search

Narrow a category to a single Nutri-Score and certified label:

```json
{
    "searchQuery": "breakfast cereals",
    "category": "Breakfast cereals",
    "nutritionGrade": "a",
    "label": "organic",
    "sortBy": "best_nutriscore",
    "maxResults": 200
}
```

#### Barcode lookup

Fetch exact products by URL or bare barcode:

```json
{
    "productUrls": [
        "https://world.openfoodfacts.org/product/3017620422003",
        "5449000000996"
    ]
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchQuery` | string | `"chocolate"` | Word or phrase to search across product names and brands. Leave blank to browse by the filters below instead. |
| `productUrls` | array | `[]` | Open Food Facts product page URLs or bare barcodes (e.g. `3017620422003`). When set, these products are fetched directly and the search term and filters are ignored. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `category` | string | `""` | Only include products in this category (e.g. "Breakfast cereals", "Sodas", "Snacks"). Leave blank for any category. |
| `brand` | string | `""` | Only include products from this brand (e.g. "Nestlé", "Coca-Cola", "Alpro"). Leave blank for any brand. |
| `country` | string | `""` | Only include products sold in this country (e.g. "France", "United States", "Germany"). Leave blank for any country. |
| `label` | select | (any) | Only include products carrying this label: Organic, Vegan, Vegetarian, Gluten-free, Fair-Trade, No palm oil, Kosher, or Halal. |
| `nutritionGrade` | select | (any) | Only include products with this Nutri-Score grade: A (healthiest) through E (least healthy). |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | select | `Popularity (most scanned)` | Result order: Popularity, Product name (A–Z), Newest first, Recently edited, Best Nutri-Score first, or Best Eco-Score first. |
| `maxResults` | integer | `100` | Hard cap on the total number of products to collect. Increase for bigger runs, or set to 0 for no cap. Ignored when specific product URLs or barcodes are provided. |

### Output

Each product is one flat row. Here's a representative result:

```json
{
    "barcode": "3017620422003",
    "productName": "Nutella",
    "brands": "Ferrero",
    "categories": "Spreads, Sweet spreads, Hazelnut spreads, Chocolate spreads",
    "quantity": "400 g",
    "packaging": "Glass jar, Plastic lid",
    "countries": "France, Germany, United States",
    "labels": "No gluten, Palm oil",
    "ingredientsText": "Sugar, palm oil, hazelnuts 13%, skimmed milk powder 8.7%, fat-reduced cocoa 7.4%...",
    "allergens": ["milk", "nuts", "soybeans"],
    "nutritionGrade": "e",
    "novaGroup": 4,
    "ecoScoreGrade": "d",
    "nutriments": {
        "energy-kcal_100g": 539,
        "fat_100g": 30.9,
        "saturated-fat_100g": 10.6,
        "sugars_100g": 56.3,
        "salt_100g": 0.107,
        "proteins_100g": 6.3
    },
    "isVegan": "no",
    "isVegetarian": "yes",
    "containsPalmOil": "yes",
    "imageUrl": "https://images.openfoodfacts.org/images/products/301/762/042/2003/front_en.jpg",
    "imageNutritionUrl": "https://images.openfoodfacts.org/images/products/301/762/042/2003/nutrition_en.jpg",
    "imageIngredientsUrl": "https://images.openfoodfacts.org/images/products/301/762/042/2003/ingredients_en.jpg",
    "createdAt": "2015-05-16T09:20:00+00:00",
    "lastModifiedAt": "2026-03-11T14:52:07+00:00",
    "url": "https://world.openfoodfacts.org/product/3017620422003"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `barcode` | string | Product barcode (Open Food Facts product code) |
| `productName` | string | Product name |
| `brands` | string | Comma-separated brand names |
| `categories` | string | Comma-separated product categories |
| `quantity` | string | Net quantity (e.g. "400 g") |
| `packaging` | string | Packaging description |
| `countries` | string | Countries where the product is sold |
| `url` | string | Canonical Open Food Facts product page URL |

#### Nutrition & Ingredients

| Field | Type | Description |
|-------|------|-------------|
| `nutritionGrade` | string | Nutri-Score grade, A (healthiest) to E |
| `novaGroup` | integer | NOVA food-processing group, 1 (unprocessed) to 4 (ultra-processed) |
| `ecoScoreGrade` | string | Eco-Score environmental grade, A to E |
| `nutriments` | object | Per-100g and per-serving nutrient values (energy, fat, sugars, salt, proteins, and more) |
| `ingredientsText` | string | Full ingredients list text |
| `allergens` | array | Detected allergens (e.g. milk, nuts, gluten) |

#### Labels & Diet

| Field | Type | Description |
|-------|------|-------------|
| `labels` | string | Labels and certifications (Organic, Vegan, Fair-Trade, and more) |
| `isVegan` | string | Vegan status: yes / no / maybe / unknown |
| `isVegetarian` | string | Vegetarian status: yes / no / maybe / unknown |
| `containsPalmOil` | string | Palm-oil status: yes / no / maybe / unknown |

#### Images & Metadata

| Field | Type | Description |
|-------|------|-------------|
| `imageUrl` | string | Front product image URL |
| `imageNutritionUrl` | string | Nutrition-facts panel image URL |
| `imageIngredientsUrl` | string | Ingredients panel image URL |
| `createdAt` | string | ISO 8601 timestamp the product was added |
| `lastModifiedAt` | string | ISO 8601 timestamp of the last edit |

### Tips for Best Results

- **Barcode lookup is exact and fastest** — when you already know the products, paste URLs or bare barcodes into `productUrls`; it returns exact matches and skips search entirely.
- **Broaden filters if a combo returns nothing** — stacking category, brand, country, label, and Nutri-Score narrows results fast. If you get zero rows, drop the tightest filter or check spelling.
- **Sort by "Recently edited" for the freshest data** — Open Food Facts is community-maintained, so recently edited products tend to have the most complete nutrition and label fields.
- **Combine a keyword with filters** — `searchQuery` plus a category and Nutri-Score is the sharpest way to find, for example, healthier options in a single aisle.
- **Use the label filter for diet catalogs** — filtering to Vegan, Gluten-free, or Organic returns only matching products, so you never sift through or pay for irrelevant rows.
- **Start small, then scale** — run with `maxResults` at 50–100 first to confirm the fields match your needs, then raise the cap for a full pull.
- **Expect data gaps on niche products** — community coverage is deepest on popular items; some rare products may have empty nutrition or image fields, which is a genuine gap in the source rather than a missed extraction.

### Pricing

**From $7 per 1,000 results** — undercuts comparable food-product scrapers while returning a richer, fully structured record. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.84 | $0.79 | $0.75 | $0.70 |
| 1,000 | $8.40 | $7.90 | $7.45 | $7.00 |
| 10,000 | $84.00 | $79.00 | $74.50 | $70.00 |
| 100,000 | $840.00 | $790.00 | $745.00 | $700.00 |

A "result" is any product row in the output dataset. Platform fees depend on your Apify plan and are additional.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects data from Open Food Facts, an open and collaborative food-products database published under the Open Database License (ODbL). That open license makes the data especially friendly for reuse — but you remain responsible for complying with the ODbL's attribution and share-alike terms, along with applicable laws and Open Food Facts' terms of use. Use the data responsibly, credit Open Food Facts where required, and do not present it in a way that misrepresents product safety or nutrition.

# Actor input Schema

## `searchQuery` (type: `string`):

Word or phrase to search for across product names and brands (e.g. 'chocolate', 'greek yogurt', 'oat milk'). Leave blank to browse by the filters below instead.

## `productUrls` (type: `array`):

Paste Open Food Facts product page URLs (e.g. https://world.openfoodfacts.org/product/3017620422003) or bare barcodes (e.g. 3017620422003). When set, these products are fetched directly and the search term and filters are ignored.

## `category` (type: `string`):

Only include products in this category (e.g. 'Breakfast cereals', 'Sodas', 'Snacks'). Leave blank for any category.

## `brand` (type: `string`):

Only include products from this brand (e.g. 'Nestlé', 'Coca-Cola', 'Alpro'). Leave blank for any brand.

## `country` (type: `string`):

Only include products sold in this country (e.g. 'France', 'United States', 'Germany'). Leave blank for any country.

## `label` (type: `string`):

Only include products carrying this label or certification. Leave blank for any.

## `nutritionGrade` (type: `string`):

Only include products with this Nutri-Score grade (A is healthiest, E is least healthy). Leave blank for any grade.

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

Choose the order in which products are collected.

## `maxResults` (type: `integer`):

Hard cap on the total number of products to collect. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper bound of 100,000 still applies to prevent runaway pagination). The actor requests exactly the number of products needed to reach this cap, so you get precisely this many results (not more) when enough matches exist. Ignored when specific product URLs or barcodes are provided.

## Actor input object example

```json
{
  "searchQuery": "chocolate",
  "productUrls": [],
  "sortBy": "popularity",
  "maxResults": 100
}
```

# Actor output Schema

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

Table of products with the most useful fields — name, brands, category, Nutri-Score, and link.

## `details` (type: `string`):

Full per-product rows including ingredients, allergens, nutrition grades, dietary flags, image URLs, and timestamps.

# 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 = {
    "searchQuery": "chocolate",
    "productUrls": [],
    "category": "",
    "brand": "",
    "country": "",
    "sortBy": "popularity",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/openfoodfacts-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 = {
    "searchQuery": "chocolate",
    "productUrls": [],
    "category": "",
    "brand": "",
    "country": "",
    "sortBy": "popularity",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/openfoodfacts-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 '{
  "searchQuery": "chocolate",
  "productUrls": [],
  "category": "",
  "brand": "",
  "country": "",
  "sortBy": "popularity",
  "maxResults": 100
}' |
apify call solidcode/openfoodfacts-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Open Food Facts Scraper",
        "description": "[💰 $7 / 1K] Extract food product data from Open Food Facts — nutrition, ingredients, allergens, Nutri-Score, Eco-Score, and images. Search by keyword, filter by category, brand, country, label, or grade, or look up products by barcode.",
        "version": "1.0",
        "x-build-id": "79W1g7cSRpOGUfYLB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~openfoodfacts-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-openfoodfacts-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/solidcode~openfoodfacts-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-openfoodfacts-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/solidcode~openfoodfacts-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-openfoodfacts-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": {
                    "searchQuery": {
                        "title": "Search Term",
                        "type": "string",
                        "description": "Word or phrase to search for across product names and brands (e.g. 'chocolate', 'greek yogurt', 'oat milk'). Leave blank to browse by the filters below instead."
                    },
                    "productUrls": {
                        "title": "Product URLs or Barcodes",
                        "type": "array",
                        "description": "Paste Open Food Facts product page URLs (e.g. https://world.openfoodfacts.org/product/3017620422003) or bare barcodes (e.g. 3017620422003). When set, these products are fetched directly and the search term and filters are ignored.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "category": {
                        "title": "Category",
                        "type": "string",
                        "description": "Only include products in this category (e.g. 'Breakfast cereals', 'Sodas', 'Snacks'). Leave blank for any category."
                    },
                    "brand": {
                        "title": "Brand",
                        "type": "string",
                        "description": "Only include products from this brand (e.g. 'Nestlé', 'Coca-Cola', 'Alpro'). Leave blank for any brand."
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Only include products sold in this country (e.g. 'France', 'United States', 'Germany'). Leave blank for any country."
                    },
                    "label": {
                        "title": "Label",
                        "enum": [
                            "organic",
                            "vegan",
                            "vegetarian",
                            "gluten-free",
                            "fair-trade",
                            "no-palm-oil",
                            "kosher",
                            "halal"
                        ],
                        "type": "string",
                        "description": "Only include products carrying this label or certification. Leave blank for any."
                    },
                    "nutritionGrade": {
                        "title": "Nutri-Score Grade",
                        "enum": [
                            "a",
                            "b",
                            "c",
                            "d",
                            "e"
                        ],
                        "type": "string",
                        "description": "Only include products with this Nutri-Score grade (A is healthiest, E is least healthy). Leave blank for any grade."
                    },
                    "sortBy": {
                        "title": "Sort Results By",
                        "enum": [
                            "popularity",
                            "product_name",
                            "newest",
                            "recently_edited",
                            "best_nutriscore",
                            "best_ecoscore"
                        ],
                        "type": "string",
                        "description": "Choose the order in which products are collected.",
                        "default": "popularity"
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Hard cap on the total number of products to collect. Default 100 — increase for bigger runs, or set to 0 for no cap (an internal upper bound of 100,000 still applies to prevent runaway pagination). The actor requests exactly the number of products needed to reach this cap, so you get precisely this many results (not more) when enough matches exist. Ignored when specific product URLs or barcodes are provided.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
