# Jula PL Scraper - Polish Tools, DIY, Car & Garden (`studio-amba/jula-pl-scraper`) Actor

Scrape products, prices, ratings, and reviews from Jula.pl, Poland's tools, DIY, car and garden retailer. Supports search queries and category browsing with Cloudflare bypass. No login required.

- **URL**: https://apify.com/studio-amba/jula-pl-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

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

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Jula PL Scraper

Extract product data, prices, ratings, reviews, and stock information from jula.pl -- Poland's popular retailer for tools, outdoor equipment, car accessories, and garden supplies. Powered by Jula's internal REST API for fast, structured data extraction.

### What is Jula PL Scraper?

Jula is a Swedish retail chain that has built a strong presence in Poland for affordable tools, automotive accessories, outdoor gear, and garden equipment. Founded in 1979, Jula operates over 100 stores across Sweden, Norway, and Poland, with a growing store network and a large online catalogue on jula.pl. Their product range spans from professional-grade power tools to camping gear, car care products, and seasonal outdoor equipment.

This scraper uses Jula's internal REST API -- the same API that powers the jula.pl website and mobile app -- to extract structured product data at speed. It first passes the site's Cloudflare protection with a real browser session, then reads the JSON API directly. Here is what teams use it for:

- **Polish tool price intelligence** -- Compare Jula's aggressive pricing on tools against Castorama, Leroy Merlin, OBI, and Bricomarche in Poland. Jula frequently runs deep discounts on power tools and hand tools
- **Cross-border tool comparison** -- Match the same Makita, DeWalt, or Bosch products across Jula (Poland), Castorama, and Leroy Merlin using product IDs or brand names to find where tools are cheapest
- **Automotive accessories tracking** -- Jula's car care and automotive section is one of the largest in its stores. Track prices on motor oil, car batteries, winter accessories, and workshop equipment
- **Seasonal outdoor gear monitoring** -- Monitor pricing cycles on garden equipment (spring), camping gear (summer), snow tools (autumn), and Christmas lighting (winter)
- **Discount and clearance hunting** -- The API provides exact discount amounts and percentages, making it easy to filter for the best deals programmatically

### What data does Jula PL Scraper extract?

Each product includes these fields when available:

- 🏷️ **Product name** -- Full title including subtitle
- 🏢 **Brand** -- Manufacturer name
- 💰 **Price** -- Current price in PLN (including VAT)
- 🔖 **Original price** -- Pre-discount price
- 💸 **Discount** -- Percentage saved (e.g., `"-22%"`)
- 🔢 **SKU** -- Jula product number
- 🆔 **Product ID** -- Internal Jula identifier
- 📦 **In stock** -- Available online and/or in store
- ⭐ **Rating** -- Customer rating score
- 💬 **Review count** -- Number of customer reviews
- 🖼️ **Image URL** -- Main product photo
- 🖼️ **Image URLs** -- All product images
- 📝 **Description** -- Short product description
- 🔧 **Specs** -- Product highlights and variant information
- 📂 **Category** -- Full category path (e.g., "Narzedzia i maszyny > Elektronarzedzia i maszyny > Wiertarki")
- 🌐 **Language** -- Always `"pl"` (Polish)

### How to scrape Jula data

#### Search by keyword

```json
{
    "searchQuery": "narzędzia",
    "maxResults": 100
}
````

Good Polish search terms: `"narzędzia"` (tools), `"wkrętarka"` (screwdriver/drill), `"wiertarka"` (drill), `"piła łańcuchowa"` (chainsaw), `"kompresor"` (compressor), `"olej silnikowy"` (motor oil), `"bagażnik dachowy"` (roof rack), `"grill"`, `"kosiarka"` (mower).

#### Scrape a category

```json
{
    "categoryUrl": "https://www.jula.pl/catalog/narzedzia-i-maszyny/elektronarzedzia-i-maszyny/",
    "maxResults": 500
}
```

#### Get popular products (no input)

If you provide neither search query nor category URL, the scraper falls back to a default search so an empty input `{}` still returns data -- useful for a quick overview of trending items.

#### Input reference

| Field | Type | Description |
|-------|------|-------------|
| `searchQuery` | String | Polish keyword (e.g., `"narzędzia"`, `"wkrętarka"`) |
| `categoryUrl` | String | Jula.pl category page URL |
| `maxResults` | Integer | Product limit (default: 100, max: 50,000) |
| `proxyConfiguration` | Object | Proxy settings -- residential PL proxy recommended (Cloudflare) |

**Tip:** Jula.pl has Cloudflare protection on its website. The scraper bootstraps a real browser session to pass the challenge, captures the API subscription key, then reads the JSON API directly. For reliable runs, use a Polish residential proxy. The scraper automatically falls back to DOM and JSON-LD extraction if the API path is unavailable.

### Output

```json
[
    {
        "name": "Wkrętarka udarowa 850 W Meec Tools",
        "brand": "Meec Tools",
        "price": 299,
        "currency": "PLN",
        "originalPrice": 379,
        "discount": "-21%",
        "sku": "012-600",
        "productId": "65432",
        "inStock": true,
        "rating": 4.3,
        "reviewCount": 178,
        "imageUrl": "https://www.jula.pl/globalassets/products/012-600/012-600-main.jpg",
        "imageUrls": [
            "https://www.jula.pl/globalassets/products/012-600/012-600-main.jpg",
            "https://www.jula.pl/globalassets/products/012-600/012-600-side.jpg"
        ],
        "description": "Mocna wkrętarka udarowa z silnikiem 850 W. Uchwyt SDS-plus, 0-900/0-3000 obr/min.",
        "specs": {
            "Variant": "850W",
            "Highlights": "SDS-plus, uchwyt boczny, ogranicznik głębokości"
        },
        "category": "Narzedzia i maszyny > Elektronarzedzia i maszyny > Wiertarki",
        "categories": ["Narzedzia i maszyny", "Elektronarzedzia i maszyny", "Wiertarki"],
        "language": "pl",
        "url": "https://www.jula.pl/catalog/narzedzia-i-maszyny/elektronarzedzia-i-maszyny/wkretarki/zestaw-narzedzi-012600/",
        "scrapedAt": "2026-07-07T12:30:00.000Z"
    },
    {
        "name": "Piła łańcuchowa 50 cc Stiga SP 510",
        "brand": "Stiga",
        "price": 1099,
        "currency": "PLN",
        "sku": "445-789",
        "productId": "78901",
        "inStock": true,
        "rating": 4.6,
        "reviewCount": 67,
        "imageUrl": "https://www.jula.pl/globalassets/products/445-789/445-789-main.jpg",
        "description": "Profesjonalna piła łańcuchowa z silnikiem 50 cc. Długość prowadnicy 45 cm. System antywibracyjny.",
        "specs": {
            "Highlights": "50 cc, prowadnica 45 cm, antywibracja"
        },
        "category": "Narzedzia i maszyny > Pily lancuchowe",
        "categories": ["Narzedzia i maszyny", "Pily lancuchowe"],
        "language": "pl",
        "url": "https://www.jula.pl/catalog/narzedzia-i-maszyny/pily-lancuchowe/pila-lancuchowa-50cc/",
        "scrapedAt": "2026-07-07T12:30:12.000Z"
    },
    {
        "name": "Olej silnikowy syntetyczny 5W-30 4L",
        "brand": "Shell",
        "price": 149,
        "currency": "PLN",
        "originalPrice": 199,
        "discount": "-25%",
        "sku": "285-123",
        "inStock": true,
        "rating": 4.8,
        "reviewCount": 234,
        "imageUrl": "https://www.jula.pl/globalassets/products/285-123/285-123-main.jpg",
        "description": "Syntetyczny olej silnikowy do nowoczesnych silników benzynowych i diesla. ACEA C3, API SN.",
        "category": "Motoryzacja > Oleje silnikowe",
        "categories": ["Motoryzacja", "Oleje silnikowe"],
        "language": "pl",
        "url": "https://www.jula.pl/catalog/motoryzacja/oleje-silnikowe/olej-syntetyczny-5w30/",
        "scrapedAt": "2026-07-07T12:30:25.000Z"
    }
]
```

Export in **JSON**, **CSV**, **Excel**, **XML**, or **RSS**.

### How much does it cost?

Jula PL Scraper bootstraps a browser session to pass Cloudflare, then reads the internal REST API for the bulk of the work.

| Scenario | Products | Estimated cost |
|----------|----------|----------------|
| Quick search | 100 | ~$0.02 |
| Category browse | 500 | ~$0.08 |
| Large catalog scan | 2,000 | ~$0.30 |
| Full department export | 10,000 | ~$1.50 |

The Apify free tier covers extensive usage. Actual cost depends on proxy and compute usage during the browser bootstrap phase.

### Can I integrate?

Pipe Jula product data into your tools:

- **Webhooks** -- Trigger actions when scraping completes
- **Google Sheets** -- Auto-sync tools and prices to spreadsheets
- **Slack / Microsoft Teams** -- Deal alerts for tracked products
- **Zapier / Make** -- Connect to 5,000+ apps
- **Amazon S3 / Google Cloud** -- Cloud storage for data pipelines
- **PostgreSQL / MySQL** -- Database push
- **API** -- Full programmatic access

### Can I use it as an API?

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("studio-amba/jula-pl-scraper").call(run_input={
    "searchQuery": "narzędzia",
    "maxResults": 200,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} - {item['price']} PLN ({item.get('discount', 'no discount')})")
```

#### JavaScript

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("studio-amba/jula-pl-scraper").call({
    searchQuery: "narzędzia",
    maxResults: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item =>
    console.log(`${item.name} - ${item.price} PLN ${item.discount || ""}`)
);
```

### FAQ

**How does Jula compare to Castorama or Leroy Merlin in Poland?**
Jula focuses more on tools, automotive, and outdoor equipment, while Castorama and Leroy Merlin cover a broader home-improvement range. There is meaningful overlap on power tools and hand tools, making them good candidates for price comparison. Jula is often cheaper on its own-brand tools like Meec Tools and Cocraft.

**Does the scraper capture discount information?**
Yes. The API provides exact save amounts (both including and excluding VAT), and the scraper calculates the discount percentage. Products on sale include both `originalPrice` and `discount` fields.

**Are prices including VAT?**
Yes, all prices are inclusive of Polish VAT (23%). The API also provides ex-VAT prices, but the scraper outputs the consumer price in PLN.

**Can I track products that are out of stock?**
Yes. Out-of-stock products still appear in search and category results. The `inStock` field tells you whether the item is currently sellable online or in store.

**How does the Cloudflare bypass work?**
The scraper opens a real browser session, passes the Cloudflare Turnstile challenge, and captures the API subscription key from the site's own requests. It then reads the JSON API directly. You do not need to provide any credentials.

**Does Jula also operate in Sweden and Norway?**
Yes. This scraper targets jula.pl (Poland) and returns prices in PLN. Separate actors cover the Swedish (jula.se) market.

### Limitations

- All data is in Polish from jula.pl
- Category paths are extracted from URL slugs and converted to readable text -- formatting may not be perfect
- The default-search fallback (no input) returns a limited set determined by Jula's search
- Product highlights (USPs) are stored in the `specs.Highlights` field as a comma-separated string rather than structured attributes
- Cloudflare protection means a residential PL proxy is recommended for reliable runs
- The scraper does not access in-store-only pricing or store-specific stock levels

### Other DIY & hardware scrapers

Build complete Polish and European tool price intelligence:

- [Castorama Scraper](https://apify.com/studio-amba/castorama-scraper) -- France/Poland
- [Leroy Merlin Scraper](https://apify.com/studio-amba/leroymerlin-scraper) -- France
- [Bricomarche Scraper](https://apify.com/studio-amba/bricomarche-scraper) -- France
- [Gamma Scraper](https://apify.com/studio-amba/gamma-scraper) -- Netherlands
- [Brico Scraper](https://apify.com/studio-amba/brico-scraper) -- Belgium
- [Praxis Scraper](https://apify.com/studio-amba/praxis-scraper) -- Netherlands
- [OBI Scraper](https://apify.com/studio-amba/obi-scraper) -- Germany
- [Hornbach Scraper](https://apify.com/studio-amba/hornbach-scraper) -- Germany/Europe
- [Bauhaus Scraper](https://apify.com/studio-amba/bauhaus-scraper) -- Germany/Europe
- [Hubo Scraper](https://apify.com/studio-amba/hubo-scraper) -- Belgium/Netherlands
- [Toom Scraper](https://apify.com/studio-amba/toom-scraper) -- Germany
- [Hagebau Scraper](https://apify.com/studio-amba/hagebau-scraper) -- Germany
- [Byggmax Scraper](https://apify.com/studio-amba/byggmax-scraper) -- Sweden
- [Clas Ohlson Scraper](https://apify.com/studio-amba/clasohlson-scraper) -- Scandinavia
- [K-Rauta Scraper](https://apify.com/studio-amba/krauta-scraper) -- Finland

### Your feedback

We maintain all our scrapers actively. If you run into issues with Jula PL Scraper, have feature requests, or spot missing data, let us know through the actor's Apify Store page or the community forum. We ship fixes fast.

# Actor input Schema

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

Search for products by keyword (e.g., 'narzędzia', 'wkrętarka', 'wiertarka'). Uses Jula's internal search API.

## `categoryUrl` (type: `string`):

A Jula.pl category page URL to scrape. Example: https://www.jula.pl/catalog/narzedzia-i-maszyny/. If both search and category are empty, scrapes popular products.

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

Maximum number of products to return.

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

Proxy settings. Jula.pl has Cloudflare protection — residential proxy recommended for reliable scrapes.

## Actor input object example

```json
{
  "searchQuery": "narzędzia",
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PL"
  }
}
```

# 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": "narzędzia",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "PL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/jula-pl-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": "narzędzia",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "PL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/jula-pl-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": "narzędzia",
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PL"
  }
}' |
apify call studio-amba/jula-pl-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Jula PL Scraper - Polish Tools, DIY, Car & Garden",
        "description": "Scrape products, prices, ratings, and reviews from Jula.pl, Poland's tools, DIY, car and garden retailer. Supports search queries and category browsing with Cloudflare bypass. No login required.",
        "version": "0.1",
        "x-build-id": "40DzpSlijjebaycSO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~jula-pl-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-jula-pl-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/studio-amba~jula-pl-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-jula-pl-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/studio-amba~jula-pl-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-jula-pl-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 Query",
                        "type": "string",
                        "description": "Search for products by keyword (e.g., 'narzędzia', 'wkrętarka', 'wiertarka'). Uses Jula's internal search API."
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "A Jula.pl category page URL to scrape. Example: https://www.jula.pl/catalog/narzedzia-i-maszyny/. If both search and category are empty, scrapes popular products."
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Maximum number of products to return.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Jula.pl has Cloudflare protection — residential proxy recommended for reliable scrapes."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
