# Shopify Klaviyo Gap Leads Scraper (`automation-lab/shopify-klaviyo-gap-leads-scraper`) Actor

Find contactable Shopify stores that do not show visible Klaviyo/email-SMS retention tools. Enrich leads with products, contacts, socials, and scoring.

- **URL**: https://apify.com/automation-lab/shopify-klaviyo-gap-leads-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## Shopify Klaviyo Gap Leads Scraper

Find public Shopify stores that appear contactable but do not show visible Klaviyo or email/SMS retention instrumentation. The actor enriches each store with Shopify evidence, product samples, contact signals, social links, detected retention tools, a gap reason, and an opportunity score.

### What does Shopify Klaviyo Gap Leads Scraper do?

This actor checks public ecommerce storefronts and returns one lead row per store.

It helps you answer:

- 🛍️ Is this domain a public Shopify store?
- 📦 Does `/products.json` expose product and price signals?
- 📧 Is there a visible contact email, phone number, contact page, or policy page?
- 💬 Is Klaviyo visible in public HTML/scripts?
- 🧰 Are competing retention tools visible instead?
- 🎯 Is this a good outreach opportunity for lifecycle, email, or SMS services?

The actor is HTTP-only. It does not log in, use private APIs, or require a browser.

### Who is it for?

#### Ecommerce retention agencies

Use it to build a prospect list of Shopify merchants that may need Klaviyo setup, migration, lifecycle strategy, or SMS/email automation help.

#### B2B lead-generation teams

Use it to enrich Shopify domains with contact and technology signals before outreach.

#### Shopify app vendors

Use it to find stores that appear to lack visible retention tooling and could be a fit for your app.

#### Sales operations teams

Use it to score and prioritize a merchant list before pushing leads into a CRM.

### Why use it?

Generic Shopify lead scrapers tell you that a store exists. This actor focuses on a specific buyer pain: missing visible retention/email-SMS instrumentation.

That makes the output more actionable for agencies and SaaS vendors selling lifecycle marketing services.

### How the detection works

For each domain, the actor:

1. Normalizes the URL.
2. Fetches the public homepage.
3. Checks Shopify markers such as `cdn.shopify.com`, `Shopify.theme`, `myshopify.com`, and cart/product endpoints.
4. Fetches `/products.json` when available.
5. Scans contact/about/policy pages.
6. Extracts public emails, phones, social links, and legal/address hints.
7. Searches public HTML/scripts for Klaviyo and related retention tools.
8. Calculates `gapReason` and `opportunityScore`.

### What retention tools are detected?

The actor checks public HTML/script markers for:

- Klaviyo
- Attentive
- Omnisend
- Mailchimp
- Postscript
- Yotpo SMS / SMSBump
- Privy
- Justuno
- Sendlane
- Drip

Tool detection is based on visible public scripts/domains and should be treated as a strong public signal, not a complete private-tech-stack audit.

### Data you can extract

| Field | Description |
| --- | --- |
| `storeUrl` | Input/normalized storefront URL |
| `domain` | Store domain |
| `status` | `ok`, `not_shopify`, `blocked`, or `error` |
| `isShopify` | Whether public evidence indicates Shopify |
| `platformEvidence` | Signals proving Shopify detection |
| `productCount` | Count of sampled products from `/products.json` |
| `sampleProducts` | Product title, handle, URL, type, vendor, price range, availability |
| `currency` | Currency marker when visible |
| `priceMin`, `priceMax` | Price range from sampled products |
| `emails`, `phones` | Public contact signals |
| `contactUrls`, `aboutUrls`, `policyUrls` | Useful public store pages |
| `socialLinks` | Public social profile URLs |
| `addressHints` | Legal/address snippets when visible |
| `klaviyoDetected` | Whether Klaviyo markers are visible |
| `retentionToolsDetected` | Other retention tools detected |
| `gapReason` | Human-readable reason for the lead status |
| `opportunityScore` | 0-100 score for outreach fit |
| `pagesScanned` | Number of pages fetched and scanned |
| `scannedAt` | ISO timestamp |

### How much does it cost to find Shopify Klaviyo gap leads?

The actor uses pay-per-event pricing:

- Start event: **$0.005 per run**.
- Store lead saved event: tiered per result row. BRONZE is **$0.00034302 per store row** (about $0.34 per 1,000 rows), with lower prices on higher Apify tiers.

The default test input is intentionally small so your first run is inexpensive. For large prospecting lists, set `maxStores` to the number of domains you want to analyze.

### Input options

#### `storeUrls`

Add Shopify store domains or URLs directly.

Examples:

```json
[
  { "url": "https://www.allbirds.com" },
  { "url": "gymshark.com" }
]
````

#### `discoveryUrls`

Optional public pages to scan for outbound merchant links. This is useful when you have a directory page or a list of brand websites.

#### `maxStores`

Caps unique store domains processed in the run.

#### `maxProductsPerStore`

Controls product sampling depth from `/products.json`.

#### `maxPagesPerStore`

Controls how many public pages are scanned for contact, social, policy, and retention-tool signals.

#### `proxyConfiguration`

Optional. Start without proxy. If some stores block direct requests, use Apify proxy settings.

### Example input

```json
{
  "storeUrls": [
    { "url": "https://www.allbirds.com" },
    { "url": "https://www.gymshark.com" }
  ],
  "maxStores": 2,
  "maxProductsPerStore": 5,
  "maxPagesPerStore": 4,
  "requestTimeoutSecs": 20,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

### Example output

```json
{
  "storeUrl": "https://www.allbirds.com",
  "domain": "allbirds.com",
  "status": "ok",
  "isShopify": true,
  "klaviyoDetected": false,
  "retentionToolsDetected": [],
  "gapReason": "Shopify store appears contactable and no visible retention/email-SMS tool was detected.",
  "opportunityScore": 85,
  "emails": ["help@example.com"],
  "productCount": 5
}
```

### How to run on Apify

1. Open the actor on Apify.
2. Paste Shopify store domains into `storeUrls`.
3. Keep the default limits for a quick test.
4. Click **Start**.
5. Download the dataset as JSON, CSV, Excel, or use the API.

### Tips for better results

- ✅ Provide clean store domains when possible.
- ✅ Keep `maxPagesPerStore` at 4-8 for fast enrichment.
- ✅ Use direct store lists for the highest precision.
- ✅ Review `gapReason` before outreach.
- ⚠️ Treat missing Klaviyo as a public visibility signal, not a guarantee that the merchant has no private integrations.

### Integrations

You can connect the output to:

- Google Sheets for prospect review.
- HubSpot or Salesforce for sales workflows.
- Clay for enrichment and email finding.
- Make or Zapier for automated routing.
- A data warehouse for market mapping.

### API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/shopify-klaviyo-gap-leads-scraper').call({
  storeUrls: [{ url: 'https://www.allbirds.com' }],
  maxStores: 1
});
console.log(run.defaultDatasetId);
```

### API usage with Python

```python
from apify_client import ApifyClient

client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/shopify-klaviyo-gap-leads-scraper').call(run_input={
    'storeUrls': [{'url': 'https://www.allbirds.com'}],
    'maxStores': 1,
})
print(run['defaultDatasetId'])
```

### API usage with cURL

```bash
curl "https://api.apify.com/v2/acts/automation-lab~shopify-klaviyo-gap-leads-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"storeUrls":[{"url":"https://www.allbirds.com"}],"maxStores":1}'
```

### MCP usage

Use this actor from Claude or other MCP clients through Apify MCP:

```text
https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper
```

Add the Apify MCP server in Claude Desktop or Claude Code:

```bash
claude mcp add apify --url "https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper"
```

JSON configuration example:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper"
    }
  }
}
```

Example prompts:

- "Check these Shopify domains for visible Klaviyo and rank them by opportunity score."
- "Find contactable Shopify stores that do not show Klaviyo scripts."
- "Summarize which stores already use competing SMS/email tools."

### Legality and ethical use

This actor collects publicly available website data. You are responsible for using the results lawfully, respecting applicable privacy, marketing, anti-spam, and data-protection rules, and honoring opt-out requests.

### FAQ

#### Is this a private Klaviyo audit?

No. It only checks public storefront HTML, scripts, links, and Shopify endpoints. Treat the output as a public lead signal, not proof of a merchant's private marketing stack.

#### Can I use this for cold outreach?

You are responsible for complying with applicable email, SMS, privacy, and anti-spam rules in your jurisdiction. Use the data for legitimate business research and honor opt-out requests.

### Troubleshooting

#### Why is a known Shopify store marked `blocked`?

Some merchants block automated requests or geographies. Try enabling Apify proxy, reduce request depth, or run again later.

#### Why is `klaviyoDetected` false when the brand uses Klaviyo?

The actor detects public HTML/script markers. A brand may use server-side, tag-manager-only, or region-specific integrations that are not visible in the fetched public pages.

#### Why are there no emails?

Many stores hide emails behind contact forms. Check `contactUrls` and `socialLinks` for alternative outreach paths.

### Related scrapers

- https://apify.com/automation-lab/shopify-store-leads-scraper
- https://apify.com/automation-lab/myip-ms-shopify-stores-scraper
- https://apify.com/automation-lab/website-tech-stack-detector

### Output quality notes

The actor favors explicit status fields over hard failures. If one store is blocked or not Shopify, the run continues and saves a diagnostic row.

### Performance notes

The implementation is HTTP-only and runs at 512 MB by default. It avoids Playwright to keep costs low and throughput high.

### Changelog

- `0.1` Initial build: direct store/domain input, optional discovery URL scanning, Shopify evidence, product samples, contact/social extraction, retention-tool detection, gap reason, and opportunity scoring.

# Actor input Schema

## `storeUrls` (type: `array`):

Public Shopify storefront domains/URLs to check. Add domains like allbirds.com or full URLs like https://www.example.com.

## `discoveryUrls` (type: `array`):

Optional public pages/search result pages to scan for outbound merchant links before analysis. Leave empty for direct store checks.

## `maxStores` (type: `integer`):

Maximum number of unique store domains to analyze.

## `maxProductsPerStore` (type: `integer`):

Number of products to sample from /products.json for price range and product examples.

## `maxPagesPerStore` (type: `integer`):

Maximum public pages to scan per store for contact, social, policy, and retention tool markers.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout. Increase for slow stores; keep low for fast lead lists.

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

Optional Apify proxy settings. Try without proxy first; enable datacenter proxy only if some stores block direct requests.

## Actor input object example

```json
{
  "storeUrls": [
    {
      "url": "https://www.allbirds.com"
    },
    {
      "url": "https://www.gymshark.com"
    }
  ],
  "discoveryUrls": [],
  "maxStores": 10,
  "maxProductsPerStore": 10,
  "maxPagesPerStore": 5,
  "requestTimeoutSecs": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "storeUrls": [
        {
            "url": "https://www.allbirds.com"
        },
        {
            "url": "https://www.gymshark.com"
        }
    ],
    "discoveryUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/shopify-klaviyo-gap-leads-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 = {
    "storeUrls": [
        { "url": "https://www.allbirds.com" },
        { "url": "https://www.gymshark.com" },
    ],
    "discoveryUrls": [],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/shopify-klaviyo-gap-leads-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 '{
  "storeUrls": [
    {
      "url": "https://www.allbirds.com"
    },
    {
      "url": "https://www.gymshark.com"
    }
  ],
  "discoveryUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call automation-lab/shopify-klaviyo-gap-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/shopify-klaviyo-gap-leads-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Shopify Klaviyo Gap Leads Scraper",
        "description": "Find contactable Shopify stores that do not show visible Klaviyo/email-SMS retention tools. Enrich leads with products, contacts, socials, and scoring.",
        "version": "0.1",
        "x-build-id": "6nzRMrlroFwTPjOI5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~shopify-klaviyo-gap-leads-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-shopify-klaviyo-gap-leads-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/automation-lab~shopify-klaviyo-gap-leads-scraper/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-shopify-klaviyo-gap-leads-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/automation-lab~shopify-klaviyo-gap-leads-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-shopify-klaviyo-gap-leads-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": {
                    "storeUrls": {
                        "title": "Shopify store URLs or domains",
                        "type": "array",
                        "description": "Public Shopify storefront domains/URLs to check. Add domains like allbirds.com or full URLs like https://www.example.com.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "discoveryUrls": {
                        "title": "Discovery URLs",
                        "type": "array",
                        "description": "Optional public pages/search result pages to scan for outbound merchant links before analysis. Leave empty for direct store checks.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxStores": {
                        "title": "Maximum stores",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of unique store domains to analyze.",
                        "default": 10
                    },
                    "maxProductsPerStore": {
                        "title": "Products sampled per store",
                        "minimum": 1,
                        "maximum": 250,
                        "type": "integer",
                        "description": "Number of products to sample from /products.json for price range and product examples.",
                        "default": 10
                    },
                    "maxPagesPerStore": {
                        "title": "Pages scanned per store",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum public pages to scan per store for contact, social, policy, and retention tool markers.",
                        "default": 5
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Per-request timeout. Increase for slow stores; keep low for fast lead lists.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy settings. Try without proxy first; enable datacenter proxy only if some stores block direct requests."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
