# Sodimac (`scraperschile/sodimac`) Actor

Scraper rapido de Sodimac Chile para extraer productos, precios, descuentos, marcas, disponibilidad, sellers e imagenes desde sodimac.cl.

- **URL**: https://apify.com/scraperschile/sodimac.md
- **Developed by:** [Scrapers Chile](https://apify.com/scraperschile) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

### Sodimac Chile Scraper for product prices, stock signals, offers, and ecommerce catalog data

Extrae productos publicos desde `sodimac.cl` y los entrega como datos estructurados en Apify. Este scraper de Sodimac Chile esta pensado para monitoreo de precios, retail intelligence, comparacion de productos, analisis ecommerce, catalogos internos y seguimiento del mercado chileno de mejoramiento del hogar, construccion, herramientas, ferreteria, muebles, jardin y decoracion.

El Actor usa contratos JSON publicos del sitio para ser rapido y estable. Primero descubre el flujo real con `https://www.sodimac.cl/sodimac-cl/search?Ntt=...`; si la busqueda cae en resultados generales usa `https://www.sodimac.cl/s/search/v1/socl`, y si Sodimac redirige el termino a una categoria usa `https://www.sodimac.cl/s/browse/v1/listing/cl`. No scrapea visualmente el DOM para extraer productos.

Tambien puede encontrarse como: Sodimac scraper, sodimac.cl scraper, scraper Sodimac Chile, API precios Sodimac, productos Sodimac Chile, monitoreo de precios Sodimac, Homecenter Chile scraper, retail intelligence Chile, ecommerce scraper Chile, herramientas Sodimac, construccion y ferreteria Chile.

### Que hace este Actor

- Busca productos por termino, marca o categoria detectada por Sodimac, por ejemplo `Taladro`, `pintura blanca`, `martillo`, `Bosch` o `ceramica`.
- Recorre la paginacion disponible cuando existen mas resultados.
- Respeta `maxItems`, `maxPages` y `concurrency` para controlar costo, velocidad y alcance.
- Deduplica productos por ID, SKU o URL.
- Guarda filas limpias en el Dataset de Apify y conserva `raw_product` para trazabilidad.
- Genera un `OUTPUT` con estado, termino, total reportado por el sitio, paginas scrapeadas, limites aplicados, warnings y errores.

### Datos que extrae

Cada producto puede incluir:

| Campo | Descripcion |
| --- | --- |
| `search_term` | Termino usado para la corrida. |
| `scraped_at` | Fecha y hora de extraccion. |
| `product_id` | ID original del producto en Sodimac. |
| `sku` | SKU principal o SKU del vendedor. |
| `name` | Nombre publico del producto. |
| `brand` | Marca. |
| `price` | Precio principal normalizado. |
| `normal_price` / `previous_price` | Precio normal, anterior o tachado cuando existe. |
| `card_price` | Precio CMR u otro precio de tarjeta cuando existe. |
| `discount_percentage` | Descuento informado o calculado. |
| `currency` | Moneda, normalmente `CLP`. |
| `is_available` | Disponibilidad normalizada. |
| `availability` | Texto de despacho, retiro, stock o badges asociados. |
| `category` | Categoria principal cuando el flujo la entrega. |
| `category_id` | ID de categoria reportado por Sodimac. |
| `seller_name` | Vendedor principal. |
| `is_marketplace` | Indica si el vendedor parece ser tercero. |
| `url` | URL publica del producto cuando Sodimac la entrega. En algunos resultados generales, Sodimac no entrega URL de PDP y el Actor usa una URL de busqueda por producto como fallback. |
| `image` | Imagen principal. |
| `rating` | Calificacion promedio cuando existe. |
| `reviews_count` | Numero de resenas o calificaciones. |
| `page` | Pagina donde aparecio el resultado. |
| `position` | Posicion global dentro de la extraccion. |
| `merchant_category_id`, `gsc_category_id`, `offering_id`, `seller_id` | Identificadores originales relevantes. |
| `raw_product` | JSON original del producto para auditoria y cambios futuros del contrato. |

### Ejemplo de input

```json
{
  "term": "Taladro",
  "maxItems": 100,
  "maxPages": 3,
  "pageSize": 28,
  "sort": "recommended",
  "concurrency": 4,
  "failOnNoResults": false
}
````

### Ejemplo de output

El Dataset contiene filas como:

```json
{
  "search_term": "Taladro",
  "product_id": "114087187",
  "sku": "114087188",
  "name": "Kit Taladro Perc.+ Atornillador 20v + 2 Bat Dck223d2",
  "brand": "DEWALT",
  "price": 271990,
  "normal_price": 349990,
  "card_price": 254990,
  "discount_percentage": 27,
  "currency": "CLP",
  "seller_name": "TUS HERRAMIENTAS",
  "is_marketplace": true,
  "url": "https://www.sodimac.cl/sodimac-cl/articulo/114087187/Kit-Taladro-Perc.+-Atornillador-20v-+-2-Bat-Dewalt-Dck223d2?exp=so_com",
  "page": 1,
  "position": 1
}
```

El registro `OUTPUT` resume la corrida:

```json
{
  "status": "ok",
  "search_term": "Taladro",
  "source_flow": "listing",
  "total_results_reported": 461,
  "total_products_scraped": 100,
  "pages_scraped": 3,
  "limits": {
    "maxItems": 100,
    "maxPages": 3,
    "pageSize": 28,
    "effectivePageSize": 48
  }
}
```

### Referencia de input

| Campo | Tipo | Requerido | Descripcion |
| --- | --- | --- | --- |
| `term` | string | si | Producto, marca o texto a buscar en Sodimac.cl. |
| `maxItems` | integer | no | Maximo de productos a guardar. Default recomendado: `100`. |
| `maxPages` | integer | no | Maximo de paginas a recorrer. Si se omite, recorre hasta completar la paginacion o `maxItems`. |
| `pageSize` | integer | no | Tamano solicitado. Sodimac actualmente fija el tamano real del backend y el Actor reporta `effective_page_size`. |
| `sort` | string | no | `recommended`, `price_asc`, `price_desc`, `newest`, `rating_desc`, `name_asc` o `brand_asc`. |
| `concurrency` | integer | no | Paginas procesadas en paralelo. Default: `4`. |
| `retries` | integer | no | Reintentos por pagina. Default: `3`. |
| `timeoutSecs` | integer | no | Timeout por solicitud. Default: `30`. |
| `failOnNoResults` | boolean | no | Si es `true`, falla cuando no hay productos. Si es `false`, deja `OUTPUT.status = no_results`. |

### Casos de uso

| Caso de uso | Como ayuda |
| --- | --- |
| Monitoreo de precios Sodimac | Captura precio actual, precio normal, descuento y precio CMR cuando existen. |
| Retail intelligence Chile | Analiza surtido, marcas, categorias, sellers y cambios en resultados de busqueda. |
| Comparacion de productos | Cruza herramientas, materiales, muebles o articulos de construccion con otros retailers. |
| Inteligencia competitiva | Detecta precios de marketplace, productos patrocinados y cambios de posicion. |
| Analisis ecommerce | Crea datasets para dashboards, BI, alertas de precio, catlogos y estudios de mercado. |
| Reportes recurrentes | Programa corridas en Apify y exporta JSON, CSV, Excel, XML o API. |

### Buenas practicas

- Usa `maxItems` para pruebas y monitoreos diarios. Un valor de `100` suele ser suficiente para smoke tests y validaciones.
- Aumenta `maxPages` o elimina el limite solo cuando necesites cobertura completa.
- Baja `concurrency` si el sitio responde lento o ves errores temporales.
- Revisa `OUTPUT.warnings`: Sodimac fija el tamano real de pagina en el backend, aunque el input conserve `pageSize` para compatibilidad.
- Para terminos amplios como `pintura blanca`, define `maxItems` para controlar costo y volumen.

### Limitaciones conocidas

- Sodimac usa dos flujos publicos distintos. El Actor los detecta automaticamente, pero cambios de contrato pueden requerir ajustes.
- Algunas busquedas generales no entregan URL de producto en el JSON; en esos casos el campo `url` usa una URL de busqueda por producto como fallback y el objeto crudo queda en `raw_product`.
- Disponibilidad, despacho, retiro y stock dependen de lo que Sodimac entregue publicamente en el momento de la corrida.
- Los precios y promociones pueden cambiar por ubicacion, sesion, campana o reglas comerciales del sitio.
- Si Sodimac bloquea, limita o cambia la respuesta, el Actor marca `status` como `blocked` o `error` y registra el detalle en `OUTPUT.errors`.

### Uso desde API

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_API_TOKEN>")
run = client.actor("scraperschile/sodimac").call(
    run_input={"term": "Taladro", "maxItems": 100}
)

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item["price"], item["url"])
```

#### cURL

```bash
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <APIFY_API_TOKEN>' \
  -d '{"term":"Taladro","maxItems":100}' \
  'https://api.apify.com/v2/acts/scraperschile~sodimac/runs?waitForFinish=60'
```

### Uso responsable

Este Actor extrae informacion publica de catalogo. No usa cuentas de clientes, no recopila datos privados, no interactua con carritos, pedidos ni credenciales. Usalo de forma responsable y respeta los terminos aplicables de Apify y Sodimac.

# Actor input Schema

## `term` (type: `string`):

Producto, marca o texto a buscar en Sodimac.cl. Ejemplos reales: Taladro, pintura blanca, martillo, Bosch, ceramica.

## `maxItems` (type: `integer`):

Limite opcional de productos a guardar. Util para pruebas rapidas, presupuestos controlados, smoke tests o monitoreos acotados.

## `maxPages` (type: `integer`):

Limite opcional de paginas a recorrer. Si se omite, el Actor recorre toda la paginacion disponible o hasta alcanzar maxItems.

## `pageSize` (type: `integer`):

Tamano de pagina solicitado. Sodimac actualmente fija el tamano real por backend, pero el Actor reporta el valor efectivo en OUTPUT.

## `sort` (type: `string`):

Ordenamiento compatible con los flujos publicos de Sodimac.

## `concurrency` (type: `integer`):

Cantidad de paginas JSON procesadas en paralelo. Baja este valor si Sodimac responde lento o limita solicitudes.

## `retries` (type: `integer`):

Cantidad de reintentos por pagina si Sodimac demora, corta o rechaza una solicitud temporalmente.

## `timeoutSecs` (type: `integer`):

Tiempo maximo en segundos para abrir la pagina de descubrimiento o consultar el endpoint JSON.

## `failOnNoResults` (type: `boolean`):

Si esta activo, la ejecucion falla cuando Sodimac no devuelve productos. Si esta apagado, guarda OUTPUT con estado no\_results y dataset vacio.

## Actor input object example

```json
{
  "term": "Taladro",
  "maxItems": 100,
  "pageSize": 28,
  "sort": "recommended",
  "concurrency": 4,
  "retries": 3,
  "timeoutSecs": 30,
  "failOnNoResults": false
}
```

# Actor output Schema

## `results` (type: `string`):

Items del dataset con nombre, marca, precios, descuento, disponibilidad, categoria, vendedor, URL e imagen.

## `summary` (type: `string`):

Registro OUTPUT con estado, paginas recorridas, limites aplicados, warnings, errores y productos crudos agregados.

# 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 = {
    "term": "Taladro",
    "maxItems": 100,
    "pageSize": 28,
    "concurrency": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperschile/sodimac").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 = {
    "term": "Taladro",
    "maxItems": 100,
    "pageSize": 28,
    "concurrency": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("scraperschile/sodimac").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 '{
  "term": "Taladro",
  "maxItems": 100,
  "pageSize": 28,
  "concurrency": 4
}' |
apify call scraperschile/sodimac --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sodimac",
        "description": "Scraper rapido de Sodimac Chile para extraer productos, precios, descuentos, marcas, disponibilidad, sellers e imagenes desde sodimac.cl.",
        "version": "0.1",
        "x-build-id": "fLRLrcNjsc3LJWXcd"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperschile~sodimac/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperschile-sodimac",
                "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/scraperschile~sodimac/runs": {
            "post": {
                "operationId": "runs-sync-scraperschile-sodimac",
                "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/scraperschile~sodimac/run-sync": {
            "post": {
                "operationId": "run-sync-scraperschile-sodimac",
                "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",
                "required": [
                    "term"
                ],
                "properties": {
                    "term": {
                        "title": "Termino de busqueda",
                        "type": "string",
                        "description": "Producto, marca o texto a buscar en Sodimac.cl. Ejemplos reales: Taladro, pintura blanca, martillo, Bosch, ceramica."
                    },
                    "maxItems": {
                        "title": "Maximo de productos",
                        "minimum": 1,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Limite opcional de productos a guardar. Util para pruebas rapidas, presupuestos controlados, smoke tests o monitoreos acotados.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Maximo de paginas",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Limite opcional de paginas a recorrer. Si se omite, el Actor recorre toda la paginacion disponible o hasta alcanzar maxItems."
                    },
                    "pageSize": {
                        "title": "Productos por pagina",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Tamano de pagina solicitado. Sodimac actualmente fija el tamano real por backend, pero el Actor reporta el valor efectivo en OUTPUT.",
                        "default": 28
                    },
                    "sort": {
                        "title": "Ordenamiento",
                        "enum": [
                            "recommended",
                            "price_asc",
                            "price_desc",
                            "newest",
                            "rating_desc",
                            "name_asc",
                            "brand_asc"
                        ],
                        "type": "string",
                        "description": "Ordenamiento compatible con los flujos publicos de Sodimac.",
                        "default": "recommended"
                    },
                    "concurrency": {
                        "title": "Concurrencia",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Cantidad de paginas JSON procesadas en paralelo. Baja este valor si Sodimac responde lento o limita solicitudes.",
                        "default": 4
                    },
                    "retries": {
                        "title": "Reintentos",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Cantidad de reintentos por pagina si Sodimac demora, corta o rechaza una solicitud temporalmente.",
                        "default": 3
                    },
                    "timeoutSecs": {
                        "title": "Timeout por solicitud",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Tiempo maximo en segundos para abrir la pagina de descubrimiento o consultar el endpoint JSON.",
                        "default": 30
                    },
                    "failOnNoResults": {
                        "title": "Fallar si no hay resultados",
                        "type": "boolean",
                        "description": "Si esta activo, la ejecucion falla cuando Sodimac no devuelve productos. Si esta apagado, guarda OUTPUT con estado no_results y dataset vacio.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
