# Asda Scraper (`solidcode/asda-scraper`) Actor

\[💰 $2.50 / 1K] Extract product, pricing, and availability data from Asda (groceries.asda.com). Search by keyword or paste category and product URLs to collect names, brands, prices, price-per-unit, pack sizes, rollback and offer promotions, images, and stock status.

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

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## Asda Scraper

Pull live grocery data from Asda (groceries.asda.com) at scale — current price, rollback and was-price promotions, price-per-unit in £/kg and £/litre, pack size, GTIN product numbers, category breadcrumbs, images, and in-stock availability for every product. Search by keyword or paste a category, product, or search URL to grab a whole aisle at once. Built for price-monitoring teams, grocery comparison sites, and FMCG brands who need fresh Asda price and promotion data without checking thousands of product pages by hand.

### Why This Scraper?

- **Whole-aisle URL input** — paste an Asda category or department URL and pull the entire aisle, a single product URL for one item, or a search URL as a keyword run. Keyword-only tools can't target a specific aisle or product page.
- **Unlimited results per search** — set `maxResults` to `0` for no cap and sweep an entire category. Comparable tools stop at 100 products per query.
- **Four sort modes** — Best match, Name A–Z, Price low→high, and Price high→low, so you can pull the cheapest milk first or walk a category in price order.
- **Price-per-unit normalisation** — every row carries `unitPrice` plus `unitPriceMeasure` (e.g. "£12.11/kg", "per litre"), making cross-pack-size price comparison one column away.
- **Rollback and was-price promotion detection** — `onOffer`, `wasPrice`, and `offerDescription` flag every Asda Rollback and multi-buy so you catch price drops the moment they go live.
- **In-stock availability on every row** — the `inStock` flag tells you whether a product is actually buyable at Asda's national store, not just listed.
- **GTIN product numbers for catalog matching** — every product ships with its Asda product number in `gtin`, ready to join against your own SKU master or a competitor basket.
- **Category breadcrumb on each product** — the full `category` path (e.g. "Food Cupboard > Tea, Coffee & Hot Drinks > Coffee") lets you segment results without a second lookup.

### Use Cases

**Price Monitoring**
- Track daily price moves on your core basket across hundreds of Asda lines
- Watch Rollback price drops the moment they appear with `onOffer` and `wasPrice`
- Compare price-per-kg and price-per-litre across pack sizes in one column
- Flag out-of-stock products before they affect availability reports

**Competitor Intelligence**
- Benchmark your retail prices against Asda for matching products
- Match Asda lines to your own catalog by GTIN product number
- Compare own-brand (ASDA) versus branded pricing within a category
- Spot promotional cadence by logging `offerDescription` over time

**Market Research**
- Map an entire aisle or department by pasting a category URL
- Measure price spread within a category from cheapest to most expensive
- Profile a brand's presence and pricing across the Asda range
- Build longitudinal grocery price indices from repeated runs

**Promotion Tracking**
- Capture every Rollback and multi-buy with its `offerDescription`
- Measure discount depth from the gap between `wasPrice` and `price`
- Alert on new offers within a watched category
- Reconcile promotion calendars against live shelf prices

### Getting Started

#### Simple Keyword Search

Just one search term — perfect for a first test run:

```json
{
    "searchTerms": ["milk"],
    "maxResults": 50
}
````

#### Multiple Terms, Sorted by Price

Run several searches at once and pull the cheapest first:

```json
{
    "searchTerms": ["coffee", "olive oil", "bread"],
    "sortBy": "price_asc",
    "maxResults": 100
}
```

#### Scrape a Whole Aisle by URL

Paste a category, product, or search URL — a category URL browses the entire aisle, a product URL returns that single item:

```json
{
    "startUrls": [
        "https://groceries.asda.com/dept/chilled-food/1215337189632",
        "https://groceries.asda.com/product/asda-british-semi-skimmed-milk/165468"
    ],
    "maxResults": 0
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | string\[] | `["milk"]` | Products to search for, one per line (e.g. "milk", "bread", "olive oil"). Each term runs as its own search. |
| `startUrls` | string\[] | `[]` | Asda category, product, or search-result URLs. A category URL browses the whole aisle, a product URL returns that one item, a search URL runs as a keyword search. Any filters already in the URL are applied automatically. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum products to collect per search term or URL. Set to `0` for no limit (Asda allows at most 20,000 results per single search or category). Results come back in pages of about 60, so any value between 1 and 59 still returns about 60 products (the full last page is kept). Start with 60 to test, then increase. |
| `sortBy` | select | `Best match` | Order products within each search or category: Best match, Name (A to Z), Price (low to high), or Price (high to low). |

### Output

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

```json
{
    "store": "asda",
    "query": "milk",
    "name": "ASDA British Semi Skimmed Milk",
    "brand": "ASDA",
    "price": 1.45,
    "wasPrice": 1.65,
    "unitPrice": 0.64,
    "unitPriceMeasure": "per litre",
    "unitSize": "2.27L",
    "onOffer": true,
    "offerDescription": "Rollback",
    "inStock": true,
    "category": "Food Cupboard > Milk, Butter & Eggs > Fresh Milk",
    "gtin": "165468",
    "imageUrl": "https://asdagroceries.scene7.com/is/image/asdagroceries/5054781657552",
    "productUrl": "https://www.asda.com/groceries/product/asda-british-semi-skimmed-milk/165468",
    "scrapedAt": "2026-06-19T14:30:00+00:00"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `store` | string | Always `"asda"`. |
| `query` | string | The search term or source URL that produced this row. |
| `name` | string | Product name. |
| `brand` | string | Brand name (e.g. "ASDA", "Heinz"). |
| `unitSize` | string | Pack or selling size (e.g. "2.27L", "400g"). |
| `category` | string | Full category breadcrumb (e.g. "Food Cupboard > Coffee"). |
| `imageUrl` | string | Product image URL. |
| `productUrl` | string | Direct Asda product page URL. |
| `scrapedAt` | string | ISO 8601 timestamp of capture. |

#### Pricing & Offers

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Current price in GBP. |
| `wasPrice` | number | Pre-offer / Rollback price, when on offer. |
| `unitPrice` | number | Normalised price per unit (e.g. per kg, per litre). |
| `unitPriceMeasure` | string | Unit descriptor for `unitPrice` (e.g. "per kg", "per litre"). |
| `onOffer` | boolean | Whether the product is on offer or Rollback. |
| `offerDescription` | string | Offer or Rollback detail text. |

#### Availability & Identifiers

| Field | Type | Description |
|-------|------|-------------|
| `inStock` | boolean | Whether the product is in stock at Asda's national store. |
| `gtin` | string | Asda product number — stable identifier for catalog matching. |

### Tips for Best Results

- **Start small, then scale** — results arrive in pages of about 60, so set `maxResults` to 60 on your first run to confirm the data fits your needs, then raise it or set `0` for unlimited.
- **Paste a category URL to grab a whole aisle** — a department or category URL pulls every product in that aisle in one run, far faster than guessing keywords.
- **Price-sorted searches return a larger, looser set** — sorting a keyword search by price relaxes Asda's own matching, so you'll get more (and broader) results than Best match. This mirrors the live Asda site; use Best match when you want only tight keyword matches.
- **Join on `gtin` for catalog matching** — the Asda product number is the stable key for linking results to your own SKUs or a competitor basket; avoid matching on product name, which varies by pack size.
- **Compare with `unitPrice`, not `price`** — `unitPrice` plus `unitPriceMeasure` normalises across pack sizes, the only fair way to compare a 1L and a 2.27L of the same product.
- **Watch `onOffer` and `wasPrice` together** — the gap between `wasPrice` and `price` is your discount depth; log both over repeated runs to track promotion cadence.
- **Mix search terms and URLs in one run** — combine keyword searches and pasted URLs together; each is capped independently by `maxResults`.

### Pricing

**From $2.50 per 1,000 results** — flat pay-per-result pricing with no surprises. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.28 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.80 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.00 | $26.50 | $25.00 |
| 100,000 | $300.00 | $280.00 | $265.00 | $250.00 |

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

### Integrations

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

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

### Legal & Ethical Use

This actor is designed for legitimate price monitoring, market research, and competitive analysis. Users are responsible for complying with applicable laws and Asda's Terms of Service. Collect only publicly available product information, and do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

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

Products to search for on Asda, one per line (e.g. 'milk', 'bread', 'olive oil'). Each term runs as its own search.

## `startUrls` (type: `array`):

Paste Asda category, product, or search-result URLs (e.g. https://groceries.asda.com/search/milk). Any filters already in the URL are applied automatically. Leave empty if you only use Search Terms above.

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

Maximum number of products to collect for each search term or URL. Set to 0 for no limit (Asda allows at most 20,000 results per single search or category). Results come back in pages of about 60, so the full last page is always kept — any value between 1 and 59 still returns about 60 products. Tip: start with 60 to test, then increase. Large runs (many URLs or a high limit) can take a while.

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

How to order the products within each search or category.

## Actor input object example

```json
{
  "searchTerms": [
    "milk"
  ],
  "startUrls": [],
  "maxResults": 100,
  "sortBy": "relevance"
}
```

# Actor output Schema

## `products` (type: `string`):

Table of Asda products with name, brand, price, price-per-unit, pack size, offer status, and availability.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "milk"
    ],
    "startUrls": [],
    "maxResults": 100,
    "sortBy": "relevance"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/asda-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["milk"],
    "startUrls": [],
    "maxResults": 100,
    "sortBy": "relevance",
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/asda-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "milk"
  ],
  "startUrls": [],
  "maxResults": 100,
  "sortBy": "relevance"
}' |
apify call solidcode/asda-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Asda Scraper",
        "description": "[💰 $2.50 / 1K] Extract product, pricing, and availability data from Asda (groceries.asda.com). Search by keyword or paste category and product URLs to collect names, brands, prices, price-per-unit, pack sizes, rollback and offer promotions, images, and stock status.",
        "version": "1.0",
        "x-build-id": "R1bRGuTaMBOCZNLwC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~asda-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-asda-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~asda-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-asda-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~asda-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-asda-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Products to search for on Asda, one per line (e.g. 'milk', 'bread', 'olive oil'). Each term runs as its own search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Asda URLs",
                        "type": "array",
                        "description": "Paste Asda category, product, or search-result URLs (e.g. https://groceries.asda.com/search/milk). Any filters already in the URL are applied automatically. Leave empty if you only use Search Terms above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max Results Per Search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of products to collect for each search term or URL. Set to 0 for no limit (Asda allows at most 20,000 results per single search or category). Results come back in pages of about 60, so the full last page is always kept — any value between 1 and 59 still returns about 60 products. Tip: start with 60 to test, then increase. Large runs (many URLs or a high limit) can take a while.",
                        "default": 100
                    },
                    "sortBy": {
                        "title": "Sort Results By",
                        "enum": [
                            "relevance",
                            "name_asc",
                            "price_asc",
                            "price_desc"
                        ],
                        "type": "string",
                        "description": "How to order the products within each search or category.",
                        "default": "relevance"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
