# Jula Norway Scraper - Tools, DIY, Car & Garden (`studio-amba/jula-no-scraper`) Actor

Scrape products, prices, ratings, and reviews from Jula.no. Norway's popular tools, DIY, car and garden retailer. Supports search queries and category browsing with Cloudflare bypass.

- **URL**: https://apify.com/studio-amba/jula-no-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 Norway Scraper

Extract product data, prices, ratings, reviews, and stock information from jula.no -- Norway'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 Norway Scraper?

Jula is a Swedish-founded retail chain with a strong presence in the Norwegian market for affordable tools, automotive accessories, outdoor gear, and garden equipment. Founded in 1979, Jula operates stores across Norway, Sweden, and Poland. 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.no website and mobile app -- to extract structured product data at speed. It bootstraps a browser session to pass the site's Cloudflare protection, captures the API subscription key, then reads product data directly. Here is what teams use it for:

- **Norwegian tool price intelligence** -- Compare Jula's aggressive pricing on tools against Clas Ohlson, Biltema, and Jernia. Jula frequently runs deep discounts on power tools and hand tools that undercut competitors significantly
- **Cross-border tool comparison** -- Match the same Makita, DeWalt, or Bosch products across Jula Norway, Jula Sweden, and other European hardware retailers 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 Norwegian retail. 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 Norway Scraper extract?

Each product includes these fields when available:

- 🏷️ **Product name** -- Full title including subtitle
- 🏢 **Brand** -- Manufacturer with brand logo info
- 💰 **Price** -- Current price in NOK (including VAT)
- 🔖 **Original price** -- Pre-discount price
- 💸 **Discount** -- Percentage saved (e.g., `"-22%"`)
- 🔢 **SKU** -- Jula product number (e.g., `"423-456"`)
- 🆔 **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., "Verktoy og maskiner > Elektroverktoy > Bormaskiner")
- 🌐 **Language** -- Always `"no"` (Norwegian)

### How to scrape Jula data

#### Search by keyword

```json
{
    "searchQuery": "verktøy",
    "maxResults": 100
}
````

Good Norwegian search terms: `"verktøy"` (tools), `"skrutrekker"` (screwdriver), `"drill"` (drill), `"motorsag"` (chainsaw), `"kompressor"` (compressor), `"motorolje"` (motor oil), `"takstativ"` (roof rack), `"grill"`, `"gresstrimmer"` (string trimmer).

#### Scrape a category

```json
{
    "categoryUrl": "https://www.jula.no/catalog/verktoy-og-maskiner/elektroverktoy/",
    "maxResults": 500
}
```

#### Get popular products (no input)

If you provide neither search query nor category URL, the scraper fetches Jula's "popular products" list -- useful for a quick overview of trending items.

#### Input reference

| Field | Type | Description |
|-------|------|-------------|
| `searchQuery` | String | Norwegian keyword (e.g., `"verktøy"`, `"skrutrekker"`) |
| `categoryUrl` | String | Jula.no category page URL |
| `maxResults` | Integer | Product limit (default: 100, max: 50,000) |
| `proxyConfiguration` | Object | Proxy settings -- Norwegian residential proxy recommended |

**Tip:** Jula.no has Cloudflare protection on its website. The scraper passes the challenge with a real browser session and then reads the internal API. A Norwegian residential proxy keeps the session stable and returns Norway-specific pricing and stock.

### Output

```json
[
    {
        "name": "Slagbormaskin 850 W Cocraft HD 850",
        "brand": "Cocraft",
        "price": 699,
        "currency": "NOK",
        "originalPrice": 899,
        "discount": "-22%",
        "sku": "423-456",
        "productId": "65432",
        "inStock": true,
        "rating": 4.3,
        "reviewCount": 178,
        "imageUrl": "https://www.jula.no/globalassets/products/423-456/423-456-main.jpg",
        "imageUrls": [
            "https://www.jula.no/globalassets/products/423-456/423-456-main.jpg",
            "https://www.jula.no/globalassets/products/423-456/423-456-side.jpg"
        ],
        "description": "Kraftig slagbormaskin med 850 W motor. SDS-plus chuck for raskt bytte av bor. 0-900/0-3000 rpm.",
        "specs": {
            "Variant": "850W",
            "Highlights": "SDS-plus, 3 J slagenergi, sidehandtak, dybdestopp"
        },
        "category": "Verktoy og maskiner > Elektroverktoy > Bormaskiner",
        "categories": ["Verktoy og maskiner", "Elektroverktoy", "Bormaskiner"],
        "language": "no",
        "url": "https://www.jula.no/catalog/verktoy-og-maskiner/elektroverktoy/bormaskiner/slagbormaskin-850w/",
        "scrapedAt": "2026-07-07T12:30:00.000Z"
    },
    {
        "name": "Motorsag 50 cc Stiga SP 510",
        "brand": "Stiga",
        "price": 2499,
        "currency": "NOK",
        "sku": "445-789",
        "productId": "78901",
        "inStock": true,
        "rating": 4.6,
        "reviewCount": 67,
        "imageUrl": "https://www.jula.no/globalassets/products/445-789/445-789-main.jpg",
        "description": "Profesjonell motorsag med 50 cc totaktsmotor. Sverdlengde 45 cm. Anti-vibrasjonssystem.",
        "specs": {
            "Highlights": "50 cc, 45 cm sverd, anti-vibrasjon, hurtigstart"
        },
        "category": "Verktoy og maskiner > Motorsager",
        "categories": ["Verktoy og maskiner", "Motorsager"],
        "language": "no",
        "url": "https://www.jula.no/catalog/verktoy-og-maskiner/motorsager/motorsag-50cc/",
        "scrapedAt": "2026-07-07T12:30:12.000Z"
    },
    {
        "name": "Fullsyntetisk motorolje 5W-30 4L",
        "brand": "Shell",
        "price": 349,
        "currency": "NOK",
        "originalPrice": 449,
        "discount": "-22%",
        "sku": "285-123",
        "inStock": true,
        "rating": 4.8,
        "reviewCount": 234,
        "imageUrl": "https://www.jula.no/globalassets/products/285-123/285-123-main.jpg",
        "description": "Fullsyntetisk motorolje for moderne bensin- og dieselmotorer. ACEA C3, API SN. Godkjent av BMW, MB, VW.",
        "category": "Bil og transport > Motorolje",
        "categories": ["Bil og transport", "Motorolje"],
        "language": "no",
        "url": "https://www.jula.no/catalog/bil-og-transport/motorolje/fullsyntetisk-motorolje-5w30/",
        "scrapedAt": "2026-07-07T12:30:25.000Z"
    }
]
```

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

### How much does it cost?

Jula Norway Scraper passes Cloudflare once with a browser session, then reads the internal REST API for the bulk of the work.

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

A cost-efficient scraper for Norwegian retail data. The Apify free tier covers extensive usage.

### 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-no-scraper").call(run_input={
    "searchQuery": "verktøy",
    "maxResults": 200,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['name']} - {item['price']} NOK ({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-no-scraper").call({
    searchQuery: "verktøy",
    maxResults: 200,
});

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

### FAQ

**How does Jula compare to Clas Ohlson in Norway?**
Jula focuses more on tools, automotive, and outdoor equipment while Clas Ohlson leans toward home goods and electronics alongside hardware. There is overlap on power tools and hand tools, making them good candidates for price comparison. Jula is typically cheaper on professional-grade tools.

**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 Norwegian mva (VAT) at 25%. The API also provides ex-VAT prices, but the scraper outputs the consumer price.

**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.

**Why is a Norwegian residential proxy recommended?**
Jula.no serves Norway-specific pricing, stock, and assortment. A Norwegian residential proxy ensures you get the correct local data and helps the session pass Cloudflare reliably.

**Does this scraper also cover Jula Sweden and Poland?**
This actor targets jula.no (Norway). Jula Sweden is covered by our separate Jula Scraper. Polish product data would require separate site support.

### Limitations

- All data is in Norwegian from jula.no
- Category paths are extracted from URL slugs and converted to readable text -- formatting may not be perfect
- The "popular products" fallback (no input) returns a limited set determined by Jula's algorithm
- Product highlights (USPs) are stored in the `specs.Highlights` field as a comma-separated string rather than structured attributes
- Cloudflare protection means a residential 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 Nordic and European tool price intelligence:

- [Jula Scraper](https://apify.com/studio-amba/jula-scraper) -- Sweden
- [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
- [Gamma Scraper](https://apify.com/studio-amba/gamma-scraper) -- Netherlands
- [Leroy Merlin Scraper](https://apify.com/studio-amba/leroymerlin-scraper) -- France
- [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

### Your feedback

We maintain all our scrapers actively. If you run into issues with Jula Norway 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., 'verktøy', 'skrutrekker', 'motorsag'). Uses Jula's internal search API.

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

A Jula.no category page URL to scrape. Example: https://www.jula.no/catalog/verktoy-og-maskiner/. 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.no has Cloudflare protection — residential proxy recommended.

## Actor input object example

```json
{
  "searchQuery": "verktøy",
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NO"
  }
}
```

# 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": "verktøy",
    "maxResults": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "NO"
    }
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Jula Norway Scraper - Tools, DIY, Car & Garden",
        "description": "Scrape products, prices, ratings, and reviews from Jula.no. Norway's popular tools, DIY, car and garden retailer. Supports search queries and category browsing with Cloudflare bypass.",
        "version": "0.1",
        "x-build-id": "RtdgJdlBN9nwPlW33"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~jula-no-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-jula-no-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-no-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-jula-no-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-no-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-jula-no-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., 'verktøy', 'skrutrekker', 'motorsag'). Uses Jula's internal search API."
                    },
                    "categoryUrl": {
                        "title": "Category URL",
                        "type": "string",
                        "description": "A Jula.no category page URL to scrape. Example: https://www.jula.no/catalog/verktoy-og-maskiner/. 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.no has Cloudflare protection — residential proxy recommended."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
