# ENF Solar Scraper - Companies & PV Datasheets (`crawloop/enf-solar-scraper`) Actor

Scrape ENF Solar installers, manufacturers, sellers and PV datasheets (panels, inverters, storage). Get contacts, offices, technologies, PDF links and technical specs. Fast curl\_cffi HTTP on Apify.

- **URL**: https://apify.com/crawloop/enf-solar-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** Lead generation, E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 company profiles

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

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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

## ENF Solar Scraper - Companies & PV Datasheets

> **Disclaimer:** Unofficial integration for publicly accessible sources. Trademarks belong to their respective owners. Provided for informational use only; users must comply with applicable platform terms and laws.

Scrape **solar PV company directories** and **product datasheets** from the ENF Solar directory into structured JSON. Pull **installers and EPC firms by country**, **panel / inverter / storage manufacturers**, **sellers and distributors**, plus **PDF datasheets** with warranties, STC electrical data, and bulk pricing when published.

Built for **B2B solar lead generation**, **distributor sourcing**, **EPC prospecting**, **competitive product research**, and **CRM enrichment** — fast HTTP extraction with Chrome TLS fingerprinting via `curl_cffi` (no headless browser).

#### Related solar scrapers

| ENF Solar | SolarTraders |
| :--- | :--- |
| ENF Solar Scraper ◄── you are here | [SolarTraders Scraper](https://apify.com/crawloop/solartraders-scraper) |

### Use cases

| Use case | What you get |
| :--- | :--- |
| **Installer / EPC leads** | Country directories with phone, website, region, multi-office addresses |
| **Manufacturer research** | Panel / component makers, technologies (TOPCon, HJT, bifacial), distributor maps |
| **Seller / distributor lists** | Country-filtered seller profiles for outreach and channel mapping |
| **Product & datasheet intel** | Model titles, manufacturer, PDF URL, specs, warranties, MOQ / lead time |
| **Market monitoring** | Scheduled crawls of `/directory/…` or `/pv/…` with `maxItems` / `maxPages` caps |
| **CRM / spreadsheet import** | Flat JSON with `recordType` discriminator (`company` / `product`) |

### When to use this Actor

- You need **ENF Solar** company or product data as structured rows (not screenshots)
- You want **country + category filters** for installers, sellers, or manufacturers
- You need **PDF datasheet links** and technical specs for panels, inverters, or storage
- You prefer **startUrls** for specific profile or datasheet pages

### When not to use this Actor

- **Non-ENF sources** — for live B2B wholesale offers and warehouse prices use [SolarTraders Scraper](https://apify.com/crawloop/solartraders-scraper)
- **Guaranteed emails on every profile** — many installer pages publish phone and website only
- **Authenticated / member-only ENF fields** — public HTML only
- **Downloading PDF binaries into storage** — outputs the CDN URL; download separately if needed

### Key features

- **Three modes** — `companies`, `products`, or `startUrls`
- **Company categories** — installer, panel, seller, component, material, software, equipment
- **Product categories** — panel, inverter, storage-system, mounting-system, cell, materials, installation-accessories
- **Detail enrichment** — `fetchDetails` for full profiles / datasheets, or listing-only for speed
- **Contact extraction** — phone (`tel:`), website, social links, Cloudflare-protected emails when present
- **Multi-office profiles** — country, address, phone, email arrays on large manufacturer pages
- **Datasheet depth** — PDF URL, shared specifications, per-model columns, bulk pricing tables
- **Pagination controls** — `maxPages` + `maxItems` for predictable run cost
- **Lightweight & fast** — `curl_cffi` Chrome 120 impersonation, concurrent detail workers

### Input parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `mode` | String | `"companies"` | `companies`, `products`, or `startUrls`. |
| `companyCategory` | String | `"installer"` | Directory section for companies mode. |
| `country` | String | — | Country slug as in ENF URLs (e.g. `Germany`). Use for installer/seller. |
| `productCategory` | String | `"panel"` | Product DB section for products mode. |
| `startUrls` | Array | `[]` | Directory, company profile, product list, or datasheet URLs. |
| `fetchDetails` | Boolean | `true` | Open detail pages for full fields. |
| `maxItems` | Integer | `50` | Max dataset rows (`0` = unlimited within `maxPages`). |
| `maxPages` | Integer | `3` | Max listing pages per list URL. |
| `concurrency` | Integer | `5` | Parallel detail workers (1–15). |
| `proxyConfiguration` | Object | residential | Apify Proxy settings (residential recommended). |

#### Example — German solar installers

```json
{
  "mode": "companies",
  "companyCategory": "installer",
  "country": "Germany",
  "fetchDetails": true,
  "maxItems": 100,
  "maxPages": 2,
  "concurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

#### Example — solar panel datasheets

```json
{
  "mode": "products",
  "productCategory": "panel",
  "fetchDetails": true,
  "maxItems": 100,
  "maxPages": 5,
  "concurrency": 5
}
```

#### Example — mixed start URLs

```json
{
  "mode": "startUrls",
  "startUrls": [
    { "url": "https://www.enfsolar.com/directory/installer/Germany" },
    { "url": "https://www.enfsolar.com/aesolar" },
    { "url": "https://www.enfsolar.com/pv/panel-datasheet/crystalline/68928" }
  ],
  "fetchDetails": true,
  "maxItems": 50,
  "maxPages": 2
}
```

### Output

Each dataset item has `recordType`: `"company"` or `"product"`.

#### Company example

```json
{
  "recordType": "company",
  "id": "aesolar",
  "url": "https://www.enfsolar.com/aesolar",
  "name": "AESOLAR Energy GmbH",
  "directoryCategory": "installer",
  "listCountry": "Germany",
  "region": "Bayern",
  "country": "Germany",
  "address": "Senefelderstraße 23, D-86368, Gersthofen, Germany",
  "phone": "+49 8231 9782 680",
  "email": "sales@ae-solar.com",
  "website": "https://ae-solar.com",
  "socialLinks": {
    "facebook": "https://www.facebook.com/aesolarenergy/",
    "linkedin": "https://www.linkedin.com/company/ae-solar/"
  },
  "offices": [
    {
      "country": "Germany",
      "address": "Senefelderstraße 23, D-86368, Gersthofen, Germany",
      "phone": "+49 8231 9782 680",
      "email": "sales@ae-solar.com"
    }
  ],
  "technologies": ["Monocrystalline", "HJT", "TOPCon"],
  "scrapedAt": "2026-07-24T15:41:00Z"
}
```

#### Product example

```json
{
  "recordType": "product",
  "id": "68928",
  "url": "https://www.enfsolar.com/pv/panel-datasheet/crystalline/68928",
  "title": "Jinko Solar Tiger Neo 66HL5-BDV 710-735W",
  "manufacturer": "Shenzhen Topsky Energy Co., Ltd.",
  "category": "panel",
  "subCategory": "crystalline",
  "datasheetPdfUrl": "https://cdn.enfsolar.com/z/pp/2025/5/gh80hk83b0m6o1af4/jkm710-735n-66hl5-bdv-z3-eu-1.pdf",
  "specifications": {
    "Type": "Monocrystalline",
    "Product Warranty": "12 Years",
    "cellType": "Monocrystalline"
  },
  "models": [
    { "modelNo": "710", "Maximum Power (Pmax)": "710 Wp" }
  ],
  "scrapedAt": "2026-07-24T15:41:00Z"
}
```

### Workflow

```
companies mode          products mode           startUrls
──────────────          ──────────────          ─────────
/directory/{cat}/{cc}   /pv/{cat}?page=N        classify each URL
        │                       │                     │
        ▼                       ▼                     ▼
 listing rows            product cards         lists + details
        │                       │                     │
        └────────── fetchDetails ─────────────────────┘
                           │
                           ▼
              company profiles / datasheets → dataset
```

### Tips

- For installers and sellers always set `country` (URL slug, e.g. `Germany`, `Spain`).
- Start with `maxPages: 1–3` and `maxItems: 50` before large crawls.
- Use residential proxy for multi-thousand runs; keep `concurrency` ≤ 8 if you see 403/429.
- Set `fetchDetails: false` when you only need names and profile / datasheet URLs.
- Product PDFs stay on the CDN — the Actor stores `datasheetPdfUrl`, not the file bytes.

### FAQ

**Does every company include an email?**\
No. Many installer profiles publish phone and website only. Emails are returned when ENF exposes them (including Cloudflare-protected addresses we can decode).

**Can I scrape all countries?**\
Yes — run one country per input (or pass multiple directory URLs in `startUrls`). There is no single “all countries” switch.

**Panels vs inverters?**\
Use `mode: products` and set `productCategory` to `panel`, `inverter`, `storage-system`, etc.

### Related Actors

| Actor | Focus |
| :--- | :--- |
| [SolarTraders Scraper](https://apify.com/crawloop/solartraders-scraper) | B2B PV wholesale offers, prices, stock & MOQ |
| [Product Hunt Scraper](https://apify.com/crawloop/producthunt-scraper) | Startup / product discovery |

# Actor input Schema

## `mode` (type: `string`):

companies — directory crawl by category/country; products — PV equipment catalog; startUrls — mixed list/detail URLs.

## `companyCategory` (type: `string`):

Directory section for companies mode. installer/seller usually need a country.

## `country` (type: `string`):

Country slug as used in ENF URLs (e.g. Germany, United+States, Spain). Required for meaningful installer/seller crawls.

## `productCategory` (type: `string`):

PV product database section for products mode.

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

Directory pages, company profiles, product lists, or datasheet URLs. Used in startUrls mode (also accepted as extras in other modes via classification).

## `fetchDetails` (type: `boolean`):

When true, open each company/product page for full contacts, offices, specs, and PDF links. When false, output listing-level rows only.

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

Stop after this many dataset records. 0 = unlimited (still bounded by maxPages).

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

Maximum listing pages to crawl per start list URL.

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

Parallel detail-page workers.

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

Apify Proxy settings. Residential recommended for larger crawls.

## Actor input object example

```json
{
  "mode": "companies",
  "companyCategory": "installer",
  "country": "Germany",
  "productCategory": "panel",
  "startUrls": [],
  "fetchDetails": true,
  "maxItems": 50,
  "maxPages": 3,
  "concurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Default dataset items (companies and/or products).

# 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 = {
    "country": "Germany"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/enf-solar-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 = { "country": "Germany" }

# Run the Actor and wait for it to finish
run = client.actor("crawloop/enf-solar-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 '{
  "country": "Germany"
}' |
apify call crawloop/enf-solar-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ENF Solar Scraper - Companies & PV Datasheets",
        "description": "Scrape ENF Solar installers, manufacturers, sellers and PV datasheets (panels, inverters, storage). Get contacts, offices, technologies, PDF links and technical specs. Fast curl_cffi HTTP on Apify.",
        "version": "0.1",
        "x-build-id": "QAcMgnFhtWRR2aNlc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawloop~enf-solar-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawloop-enf-solar-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/crawloop~enf-solar-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawloop-enf-solar-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/crawloop~enf-solar-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawloop-enf-solar-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "companies",
                            "products",
                            "startUrls"
                        ],
                        "type": "string",
                        "description": "companies — directory crawl by category/country; products — PV equipment catalog; startUrls — mixed list/detail URLs.",
                        "default": "companies"
                    },
                    "companyCategory": {
                        "title": "Company category",
                        "enum": [
                            "installer",
                            "panel",
                            "seller",
                            "component",
                            "material",
                            "software",
                            "equipment"
                        ],
                        "type": "string",
                        "description": "Directory section for companies mode. installer/seller usually need a country.",
                        "default": "installer"
                    },
                    "country": {
                        "title": "Country",
                        "type": "string",
                        "description": "Country slug as used in ENF URLs (e.g. Germany, United+States, Spain). Required for meaningful installer/seller crawls."
                    },
                    "productCategory": {
                        "title": "Product category",
                        "enum": [
                            "panel",
                            "inverter",
                            "storage-system",
                            "mounting-system",
                            "cell",
                            "materials",
                            "installation-accessories"
                        ],
                        "type": "string",
                        "description": "PV product database section for products mode.",
                        "default": "panel"
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Directory pages, company profiles, product lists, or datasheet URLs. Used in startUrls mode (also accepted as extras in other modes via classification).",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch detail pages",
                        "type": "boolean",
                        "description": "When true, open each company/product page for full contacts, offices, specs, and PDF links. When false, output listing-level rows only.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after this many dataset records. 0 = unlimited (still bounded by maxPages).",
                        "default": 50
                    },
                    "maxPages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum listing pages to crawl per start list URL.",
                        "default": 3
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Parallel detail-page workers.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify Proxy settings. Residential recommended for larger crawls.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
