# Marksandspencer Product Search Scraper (`stealth_mode/marksandspencer-product-search-scraper`) Actor

Scrape Marks & Spencer product listings across categories with one tool. Extract 18+ fields including brand, price, variants, reviews, stock levels, and SEO paths — perfect for price monitoring, inventory tracking, and competitive retail analysis.

- **URL**: https://apify.com/stealth\_mode/marksandspencer-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Marks & Spencer Product Search Scraper: Extract Retail Data Fast
---

### What Is Marks & Spencer?

Marks & Spencer (M&S) is a major UK retailer offering clothing, home goods, food, and beauty products. Their website hosts thousands of searchable product listings across numerous categories and price points. Manually tracking product data, pricing changes, and inventory levels is inefficient — the **Marks & Spencer Product Search Scraper** automates collection, delivering structured product records ready for analysis.

---

### Overview

The **Marks & Spencer Product Search Scraper** extracts product information from M&S search and category pages, converting dynamic listings into clean, structured records. It is designed for:

- **Price monitoring tools** tracking M&S product pricing and promotions
- **Retail researchers** analyzing product assortment and trends
- **E-commerce aggregators** building multi-retailer product catalogs
- **Competitive intelligence teams** benchmarking against M&S offerings
- **Inventory analysts** monitoring stock level changes

Key features include batch processing up to 200 items per URL, graceful error handling, and comprehensive product metadata extraction.

---

### Input Format

The scraper accepts a JSON configuration object to define your data collection:

```json
{
  "urls": [
    "https://www.marksandspencer.com/l/beauty/makeup?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

#### Input Parameters

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | URLs of M\&S product search/category pages to scrape. Paste complete URLs including pagination parameters (e.g., `?page=2`). Supports multiple URLs for batch processing. |
| `max_items_per_url` | Integer | Maximum number of product records to extract per URL (default: 20, max: 200). Higher values collect more products but increase run time. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues running if individual URLs fail. If `false`, a single failure stops the entire job. Recommended: `true` for bulk runs. |

**Tips:**

- Use complete category/search URLs with pagination (e.g., `/l/beauty/makeup?page=2`)
- Test with `max_items_per_url: 20` first to verify URL format
- Set `ignore_url_failures: true` when scraping 10+ URLs to prevent interruptions

***

### Output Format

#### Sample Output Record

```json
{
  "id": "P60586663",
  "product_external_id": "P60586663",
  "stroke_id": "T233341E,T23/3341E",
  "brand": "BENEFIT",
  "title": "Hoola Matte Bronzer 8g",
  "description": null,
  "sub_message": null,
  "seo_path": "/hoola-matte-bronzer-8g/p/hbp60586663?color=NOCOLOUR&image=SD_07_T23_3341E_NC_X_EC_0",
  "product_definition": "Bronzer",
  "variants": [
    {
      "colour": null,
      "sku_id": "60586663",
      "upc": "28298632",
      "size": "One Size",
      "serving_size": null,
      "part_number": "60586663",
      "price": 34,
      "media_assets": [
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_88",
          "is_landscape_image": false,
          "type": "Fabric",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_20",
          "is_landscape_image": false,
          "type": "Video",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_2",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_3",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_6",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_1",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_4",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_5",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "MS_07_T23_3341E_NC_X_EC_8",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "MS_07_T23_3341E_NC_X_EC_7",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "MS_07_T23_3341E_NC_X_EC_1",
          "is_landscape_image": false,
          "type": "Alternative",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        },
        {
          "asset_id": "SD_07_T23_3341E_NC_X_EC_0",
          "is_landscape_image": false,
          "type": "Main",
          "__typename": "SearchRecommendation_ResultMediaAsset"
        }
      ],
      "swatch_asset": null,
      "__typename": "SearchRecommendation_ResultVariant"
    }
  ],
  "reviews": {
    "average_rating": 4.716876971608833,
    "total_review_count": 1268,
    "__typename": "SearchRecommendation_ResultReviews"
  },
  "price": {
    "unit_price": {
      "amount": 42.5,
      "measurement_unit": "g",
      "quantity": 10,
      "__typename": "SearchRecommendation_UnitPrice"
    },
    "list_price": {
      "amount": 34,
      "__typename": "SearchRecommendation_SingleListPrice"
    },
    "currency": "GBP",
    "previous_price": null,
    "__typename": "SearchRecommendation_ResultPrice"
  },
  "dietary_information": [],
  "is_ranged": false,
  "labels": [],
  "online_only": false,
  "sparks_offers": [
    {
      "loyalty_promotion_code": "16742",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "17509",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "18674",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "10528",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "17191",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "20167",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "15671",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "15946",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "18838",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "19592",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "19683",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "16110",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "17804",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "18925",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "19365",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "21837",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "21911",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "22047",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "19466",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "20698",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "16406",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    },
    {
      "loyalty_promotion_code": "16406",
      "__typename": "SearchRecommendation_ResultSparksOffer"
    }
  ],
  "stock_level_indicator": "M",
  "from_url": "https://www.marksandspencer.com/l/beauty/makeup?page=2"
}
```

Each product record contains 18+ fields capturing comprehensive retail data:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique Marks & Spencer product identifier in the system | `prod_123456` |
| `Product External ID` | External product code (SKU or equivalent) | `MS-BEAUTY-456` |
| `Stroke ID` | Additional internal reference code | `stroke_789` |
| `Title` | Product name displayed on M\&S website | `Revlon ColorStay Liquid Foundation SPF 15` |
| `Brand` | Manufacturer or brand name | `Revlon` |
| `SEO Path` | URL-friendly slug for the product page | `/l/beauty/makeup/revlon-colorstay-liquid` |

#### Product Details & Attributes

| Field | Meaning | Example |
|---|---|---|
| `Description` | Full product description including materials, usage, benefits | `Long-wearing liquid foundation with SPF 15 protection...` |
| `Sub Message` | Secondary messaging (promotions, certifications, disclaimers) | `Cruelty-free` or `Free delivery on orders over £50` |
| `Product Definition` | Category or product type classification | `Liquid Foundation` |
| `Variants` | Available variations (colors, sizes, quantities) | `[{"color":"Natural Beige","size":"30ml"},...]` |
| `Dietary Information` | Nutritional/ingredient info (if applicable to product type) | `Vegan`, `Hypoallergenic` |
| `Labels` | Promotional or informational tags | `New`, `Bestseller`, `Eco-Friendly` |

#### Availability & Pricing

| Field | Meaning | Example |
|---|---|---|
| `Price` | Current retail price on M\&S website | `£12.99` or `£25.00` |
| `Stock Level Indicator` | Availability status (in-stock, low-stock, out-of-stock) | `In Stock`, `Only 3 left` |
| `Online Only` | Boolean flag indicating web-exclusive products | `true` or `false` |

#### Social Proof & Marketing

| Field | Meaning | Example |
|---|---|---|
| `Reviews` | Customer ratings, review counts, or aggregated sentiment | `4.5/5 (234 reviews)` |
| `Sparks Offers` | M\&S Sparks member exclusive deals or discounts | `Extra 20% off for Sparks members` |
| `Is Ranged` | Indicates if product is part of a larger product range | `true` (multiple colors/variants available) |

***

### How to Use

1. **Identify target pages** — Browse Marks & Spencer category or search pages (e.g., Beauty → Makeup). Note the full URL including pagination parameters.
2. **Configure input** — Paste URLs into the `urls` array. Start with `max_items_per_url: 50` to test.
3. **Set error handling** — For single URLs use `ignore_url_failures: false`. For bulk runs use `true`.
4. **Run the scraper** — Execute the job and monitor progress in the logs.
5. **Export data** — Download results as JSON, CSV, or Excel for analysis or database import.

**Troubleshooting:**

- **No data returned:** Verify the URL is a search/category page (not a single product page). Check pagination parameters are correct.
- **Incomplete variants:** Some products may have limited variant data if not displayed in the list view.
- **Stock levels delayed:** Stock indicators reflect M\&S website state at time of scraping; refresh for real-time accuracy.

***

### Use Cases & Business Value

**Price Monitoring & Competitive Analysis**
Track M\&S product pricing changes, promotional periods, and competitor positioning. Identify pricing trends across beauty, fashion, or home categories.

**Inventory & Assortment Research**
Monitor product availability, stock levels, and new launches. Identify fast-moving items, bestsellers, and seasonal trends.

**E-Commerce Aggregation**
Feed M\&S product data into price comparison engines, deal aggregators, or multi-retailer catalogs. Maintain accurate, up-to-date product information.

**Market Research**
Analyze M\&S brand partnerships, exclusive product launches, and promotional strategies. Compare assortment across regions or time periods.

The Marks & Spencer Product Search Scraper eliminates tedious manual data entry, providing retailers and analysts with actionable product intelligence at scale.

***

### Conclusion

The **Marks & Spencer Product Search Scraper** delivers comprehensive, structured product data from one of the UK's largest retailers. With 18+ fields covering pricing, availability, variants, and customer reviews, it enables price monitoring, competitive analysis, and market research — all in minutes. Whether you're tracking competitor activity or building a product aggregator, this tool transforms M\&S's dynamic catalog into exportable, analysis-ready data.

# Actor input Schema

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

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.marksandspencer.com/l/beauty/makeup?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.marksandspencer.com/l/beauty/makeup?page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/marksandspencer-product-search-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 = {
    "urls": ["https://www.marksandspencer.com/l/beauty/makeup?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/marksandspencer-product-search-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 '{
  "urls": [
    "https://www.marksandspencer.com/l/beauty/makeup?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/marksandspencer-product-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Marksandspencer Product Search Scraper",
        "description": "Scrape Marks & Spencer product listings across categories with one tool. Extract 18+ fields including brand, price, variants, reviews, stock levels, and SEO paths — perfect for price monitoring, inventory tracking, and competitive retail analysis.",
        "version": "0.0",
        "x-build-id": "NfZAj4AdmF8mpDyLb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~marksandspencer-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-marksandspencer-product-search-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/stealth_mode~marksandspencer-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-marksandspencer-product-search-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/stealth_mode~marksandspencer-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-marksandspencer-product-search-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": {
                    "urls": {
                        "title": "URLs of the product search list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
