# AI Sales Personalizer (Scrape + Personalized Cold Email) (`fetchcraft/ai-sales-personalizer`) Actor

Drop in company URLs. Get back a personalized cold-email opener, summary, pain points, fit score, and an evidence quote grounding every claim. Self-critique pass on every result. Preview mode free (1 URL). $0.15 Sonnet, $0.25 Opus. 30-day cache means no double-charge.

- **URL**: https://apify.com/fetchcraft/ai-sales-personalizer.md
- **Developed by:** [Emily Ward](https://apify.com/fetchcraft) (community)
- **Categories:** AI, Lead generation, Marketing
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN 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.

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

## AI Sales Personalizer

**Drop in a list of company URLs. Get back a personalized cold email opener, company summary, pain points, fit score, and an evidence quote that grounds every claim in the homepage content.**

Powered by Claude Sonnet 4.6 (Standard) or Opus 4.7 (Premium). Pay only per result. No subscription.

### Try it free first

**Set `mode` to `preview`** and run 1 URL. You see the full output (opener, evidence quote, fit score, confidence score) before spending a cent. Switch to `standard` once you've seen what you're paying for.

### What you get back per URL

| Field | Description |
| --- | --- |
| `company_name` | Pulled from the homepage |
| `summary` | 1 to 2 sentences describing what they do |
| `pain_points` | 3 plausible pain points your product solves |
| `opener` | 2 sentences max, ready to paste into email or LinkedIn |
| `opener_draft` | The model's first attempt before self-critique |
| `opener_critique` | What the model thought was weak about the draft |
| `evidence_quote` | The exact substring from the homepage that the opener references |
| `evidence_present` | True if that quote actually appears in the page (post-hoc verification) |
| `confidence_score` | 0 to 100, how confident the model is in this result |
| `fit_score` | 0 to 100, how well this lead fits your offer |
| `channel` | Best outreach channel: email, linkedin, or phone |
| `reasoning` | Why the fit score is what it is |
| `_meta` | Mode, model, processing_ms, from_cache flag |

### Why this beats Clay / Smartlead / Instantly for personalization

| | This actor | Clay | Smartlead |
| --- | --- | --- | --- |
| Pricing | Pay per result, $0.15 each (Standard) or $0.25 (Premium) | $149+/mo subscription | $97+/mo subscription |
| Commitment | None, run when you need it | Annual contract | Monthly minimum |
| Free preview | 1 URL, full output, no charge | Trial only | None |
| LLM | Claude Sonnet 4.6 or Opus 4.7 | OpenAI default | OpenAI default |
| Anti-hallucination | Self-critique + evidence quoting + post-hoc verification | None published | None published |
| Caching (no double-charge on re-runs) | 30-day cache, same URL + pitch = free | No | No |
| Setup time | 30 seconds | 30 minutes | 20 minutes |

If you only need to personalize 50 leads this week, you pay $7.50, not $149.

### Why this output is more trustworthy than typical AI tools

Three structural anti-hallucination guards run on every result:

1. **Self-critique inside the model.** The model produces a draft opener, critiques its own work (specificity, tone, grounding), and rewrites if its self-assessed score is below threshold. You see both versions plus the critique.
2. **Evidence quoting.** Every opener must include a specific, observable detail from the homepage. The `evidence_quote` field shows the exact substring the opener references.
3. **Post-hoc verification.** After the model returns, we check that the `evidence_quote` actually appears in the page text. If it does not, `evidence_present` is `false` and `confidence_score` drops.

Sort your dataset by `evidence_present desc, confidence_score desc` and you have a high-trust pipeline.

### Example output

```json
{
  "input_url": "https://www.notion.so",
  "company_name": "Notion",
  "summary": "Notion is a connected workspace combining docs, wikis, projects, and AI for teams that want one tool instead of ten.",
  "pain_points": [
    "Sales teams burning hours on manual research before each outreach",
    "Personalization quality dropping when SDRs scale outreach volume",
    "Marketing and sales data fragmented across separate platforms"
  ],
  "opener_draft": "Saw Notion is positioning as the connected workspace for AI-augmented teams. Curious how SDRs at your scale personalize outbound without burning their week.",
  "opener_critique": "Draft is decent but generic - 'AI-augmented teams' is filler. Tighten the observable detail.",
  "critique_score": 68,
  "final_opener": "Saw Notion's new 'AI Connectors' tier pitches itself at sales and revops teams. Curious how your own SDRs personalize outbound at scale without burning a week of research.",
  "evidence_quote": "AI Connectors for sales and revops teams",
  "evidence_present": true,
  "confidence_score": 84,
  "fit_score": 72,
  "channel": "linkedin",
  "reasoning": "Notion sells horizontally to ops and growth teams, which is exactly the buyer for AI personalization tooling."
}
````

### Pricing

Pay per personalized opener generated:

- **Preview**: $0 (1 URL only, see output before paying)
- **Standard**: $0.15 per result (Claude Sonnet 4.6 with self-critique)
- **Premium**: $0.25 per result (Claude Opus 4.7 with deeper critique, recommended for high-value enterprise lists)

You only pay for successful, charged results. Failed URLs and preview runs are free. Cached re-runs (same URL + pitch within 30 days) are free.

Typical campaigns (Standard):

- 100 prospects: $15
- 500 prospects: $75
- 2,000 prospects: $300

Compare to Clay's $149+/mo minimum or hiring an SDR at $4,500/mo.

### How to use it

1. Click **Try for free** at the top of this page.
2. **Set `mode` to `preview`**. Paste 1 URL into `urls`. Hit Start. Free.
3. Read the output. Check the `evidence_quote` matches what you'd expect. Confirm the tone is right.
4. **Switch `mode` to `standard`**. Paste your real list of URLs. Hit Start.
5. Results stream into the dataset as each URL finishes.
6. Export results as CSV, JSON, Excel, or push to Google Sheets via the Apify integration.
7. Sort by `evidence_present desc, confidence_score desc` to send the strongest openers first.

### Caching: never double-charged

Hashed by URL + pitch + tone + mode. If you re-run the exact same combination within 30 days, the cached result is returned and you are not charged. Toggle `use_cache` off if you want fresh runs every time.

### Use cases

- **SDR teams**: Pre-research the next 200 accounts before Monday morning.
- **Founders doing outbound**: Replace your "spray and pray" sequences with one tailored message per company.
- **Agencies**: Add personalization to client outreach without buying another SaaS seat.
- **List vendors**: Enrich the lists you sell with AI-generated openers as a premium tier.
- **Investors**: Personalize first-touch messages to founders based on what their company actually does.

### What this actor does NOT do

- It does not find email addresses. Use Apollo, Clearbit, or Hunter for that.
- It does not send messages. Use Smartlead, Lemlist, or your own SMTP for sending.
- It does not scrape behind login walls. Public homepages only.
- It does not crawl deep into a site. It uses homepage signals (title, OG tags, H1, H2, body text), where the signal is densest.

### Tips for better openers

1. **Write your `your_product_pitch` like you would describe your product to a smart friend.** Concrete > vague. "We cut SaaS waste 30 to 45%" beats "we help with cost optimization."
2. **Use Preview mode on your first 1 to 3 URLs** to calibrate the tone before running a big list.
3. **Use the `consultative` tone if you are not sure.** It is the highest converting default in cold outreach research.
4. **Run the same list with different tones** and A/B test which converts. The cost difference is trivial.
5. **For enterprise targets ($50k+ ACV), use Premium mode.** Opus 4.7 makes deeper observations and the deeper critique pass catches generic openers.
6. **Pair this with Apify's Apollo or LinkedIn Search Scrapers** to build the URL list, then enrich here.

### FAQ

**Q: How do I know the openers reference real facts?**
Every opener ships with an `evidence_quote` (the exact homepage substring it references) and an `evidence_present` boolean (our post-hoc check that the quote actually appears). Filter on `evidence_present == true` for the strongest results.

**Q: Which LLM is this using?**
Claude Sonnet 4.6 in Standard mode, Claude Opus 4.7 in Premium mode (Anthropic). Both are state-of-the-art for nuanced writing as of mid-2026.

**Q: How fast is it?**
About 4 to 8 seconds per URL on Standard, 6 to 12 seconds on Premium, running 5 in parallel by default. 100 URLs takes roughly 90 seconds to 2 minutes on Standard.

**Q: Can I trust the openers?**
The prompt forbids inventing facts. The model self-critiques. We post-hoc verify the evidence quote. That said, always skim a sample before sending at scale.

**Q: Does it handle non-English sites?**
Yes. Claude is multilingual. The opener will be written in the same language as the input pitch.

**Q: Can I get the raw scraped content too?**
The `_meta` block includes processing details but not raw HTML. Use Apify's "Website Content Crawler" if you need raw scrapes, then pipe URLs here.

**Q: What if I re-run the same URL?**
Within 30 days, with the same pitch and tone, you get the cached result for free. Toggle `use_cache: false` to force a fresh run.

**Q: Refund policy?**
Apify's standard refund policy applies. Failed URLs and preview runs are never charged. Contact actor owner for any issues.

### Tags

`ai` `sales` `cold-email` `personalization` `outreach` `sdr` `b2b` `claude` `lead-generation` `enrichment`

### Companion actors

- **[Cold Email Rewriter](https://apify.com/emily-ward/cold-email-rewriter)** ($0.10/rewrite). Paste a draft email, get a predicted reply rate + 3 stronger variants. Pair with this actor when you already have a draft you want to A/B.
- **[SEO Competitor Gap](https://apify.com/emily-ward/seo-competitor-gap)** ($0.50/competitor). Find content gaps between your site and competitors. Use when prospecting at larger accounts where decision-makers research before reply.
- **[LinkedIn Post Personalizer](https://apify.com/emily-ward/linkedin-post-personalizer)** ($0.10/opener). Same value-prop on LinkedIn DMs. Paste their post, get a personalized opener + connection note. No LinkedIn scraping.

Run all four on the same Apify wallet to cover homepages, LinkedIn, cold-email A/B, and SEO competitive intel for the cost of one $99/mo Clay seat.

***

Made with Claude Sonnet 4.6 + Opus 4.7 by Emily Ward. v0.2. Bug reports and feature requests welcome.

# Actor input Schema

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

List of company homepage URLs. One personalized result per URL. You can also pass objects of the form {"url": "https://...", "contact\_role": "VP Sales"} to override per-URL role.

## `your_product_pitch` (type: `string`):

Briefly describe what you sell. Concrete beats vague. "We cut SaaS spend 30 to 45 percent on usage-aware FinOps" works. "We help with optimization" does not. The AI uses this to calculate fit score and tailor every opener.

## `tone` (type: `string`):

How the opener should read.

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

Preview = first URL only, not charged (try the actor risk-free). Standard = Claude Sonnet 4.6, self-critique pass, $0.15 per result. Premium = Claude Opus 4.7, deeper critique, $0.25 per result (for high-value enterprise lists).

## `contact_role` (type: `string`):

Default role for all URLs (e.g. "VP Sales", "Head of RevOps", "Founder"). The AI tailors language and priorities to how this role typically speaks. Leave blank for generic opener. Override per-URL by passing objects in the urls field.

## `use_cache` (type: `boolean`):

If you re-run the same URL with the same pitch and tone within 30 days, return the cached result and do not charge again. Recommended ON.

## `max_concurrency` (type: `integer`):

How many URLs to process in parallel. Higher = faster but more Claude API load.

## Actor input object example

```json
{
  "urls": [
    "https://www.atlassian.com",
    "https://www.notion.so"
  ],
  "your_product_pitch": "We help fast-growing SaaS teams cut their cloud spend by 30 to 45 percent using a usage-aware FinOps platform. Self-serve onboarding, no engineering required.",
  "tone": "consultative",
  "mode": "standard",
  "contact_role": "",
  "use_cache": true,
  "max_concurrency": 5
}
```

# API

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

## JavaScript example

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

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

// Prepare Actor input
const input = {
    "urls": [
        "https://www.atlassian.com",
        "https://www.notion.so"
    ],
    "your_product_pitch": "We help fast-growing SaaS teams cut their cloud spend by 30 to 45 percent using a usage-aware FinOps platform. Self-serve onboarding, no engineering required."
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetchcraft/ai-sales-personalizer").call(input);

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

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

```

## Python example

```python
from apify_client import ApifyClient

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

# Prepare the Actor input
run_input = {
    "urls": [
        "https://www.atlassian.com",
        "https://www.notion.so",
    ],
    "your_product_pitch": "We help fast-growing SaaS teams cut their cloud spend by 30 to 45 percent using a usage-aware FinOps platform. Self-serve onboarding, no engineering required.",
}

# Run the Actor and wait for it to finish
run = client.actor("fetchcraft/ai-sales-personalizer").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.atlassian.com",
    "https://www.notion.so"
  ],
  "your_product_pitch": "We help fast-growing SaaS teams cut their cloud spend by 30 to 45 percent using a usage-aware FinOps platform. Self-serve onboarding, no engineering required."
}' |
apify call fetchcraft/ai-sales-personalizer --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "AI Sales Personalizer (Scrape + Personalized Cold Email)",
        "description": "Drop in company URLs. Get back a personalized cold-email opener, summary, pain points, fit score, and an evidence quote grounding every claim. Self-critique pass on every result. Preview mode free (1 URL). $0.15 Sonnet, $0.25 Opus. 30-day cache means no double-charge.",
        "version": "0.2",
        "x-build-id": "TRc6Hg2K0efURQZva"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fetchcraft~ai-sales-personalizer/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fetchcraft-ai-sales-personalizer",
                "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/fetchcraft~ai-sales-personalizer/runs": {
            "post": {
                "operationId": "runs-sync-fetchcraft-ai-sales-personalizer",
                "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/fetchcraft~ai-sales-personalizer/run-sync": {
            "post": {
                "operationId": "run-sync-fetchcraft-ai-sales-personalizer",
                "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": [
                    "urls",
                    "your_product_pitch"
                ],
                "properties": {
                    "urls": {
                        "title": "Company URLs",
                        "type": "array",
                        "description": "List of company homepage URLs. One personalized result per URL. You can also pass objects of the form {\"url\": \"https://...\", \"contact_role\": \"VP Sales\"} to override per-URL role.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "your_product_pitch": {
                        "title": "Your product pitch (one paragraph)",
                        "minLength": 20,
                        "maxLength": 2000,
                        "type": "string",
                        "description": "Briefly describe what you sell. Concrete beats vague. \"We cut SaaS spend 30 to 45 percent on usage-aware FinOps\" works. \"We help with optimization\" does not. The AI uses this to calculate fit score and tailor every opener."
                    },
                    "tone": {
                        "title": "Tone of opener",
                        "enum": [
                            "consultative",
                            "direct",
                            "warm",
                            "curious",
                            "witty"
                        ],
                        "type": "string",
                        "description": "How the opener should read.",
                        "default": "consultative"
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "preview",
                            "standard",
                            "premium"
                        ],
                        "type": "string",
                        "description": "Preview = first URL only, not charged (try the actor risk-free). Standard = Claude Sonnet 4.6, self-critique pass, $0.15 per result. Premium = Claude Opus 4.7, deeper critique, $0.25 per result (for high-value enterprise lists).",
                        "default": "standard"
                    },
                    "contact_role": {
                        "title": "Decision-maker role (optional)",
                        "minLength": 0,
                        "maxLength": 100,
                        "type": "string",
                        "description": "Default role for all URLs (e.g. \"VP Sales\", \"Head of RevOps\", \"Founder\"). The AI tailors language and priorities to how this role typically speaks. Leave blank for generic opener. Override per-URL by passing objects in the urls field.",
                        "default": ""
                    },
                    "use_cache": {
                        "title": "Use 30-day cache",
                        "type": "boolean",
                        "description": "If you re-run the same URL with the same pitch and tone within 30 days, return the cached result and do not charge again. Recommended ON.",
                        "default": true
                    },
                    "max_concurrency": {
                        "title": "Max parallel requests",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many URLs to process in parallel. Higher = faster but more Claude API load.",
                        "default": 5
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
