# Twitter Email Scraper (`solid-scraper/twitter-email-scraper`) Actor

📧 Twitter Email Scraper helps you find verified emails from relevant Twitter profiles fast—using keywords, niches, and locations. Great for B2B prospecting, outreach, and growth teams. ⚡ Save time. Boost conversions.

- **URL**: https://apify.com/solid-scraper/twitter-email-scraper.md
- **Developed by:** [SolidScraper](https://apify.com/solid-scraper) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### Twitter Email Scraper 📬

**Twitter Email Scraper** is an Apify actor that extracts email addresses from publicly available Twitter content by using your chosen `keywords` and `customDomains` filters. Whether you're using a **Twitter email scraper** for prospecting, a **Twitter contact email extractor** for lead lists, or a **Twitter user email finder** for research, this tool helps you turn Twitter leads into actionable contact data—saving you hours of manual work at scale.

---

### Why choose Twitter Email Scraper?

| Feature | Benefit |
|---|---|
| ✅ **All-in-one email harvesting** | Extracts emails from Twitter bios and related posts using your keywords and email-domain filters |
| ✅ **Reliability-oriented engine choices** | Choose between `engine` options to balance speed and stability for your scraping needs |
| ✅ **Fallback and resilience** | Includes retries and fallbacks to keep results flowing when pages don’t return data consistently |
| ✅ **Structured dataset output** | Saves each found email with consistent fields (keyword, title, description, url, and more) |
| ✅ **Scales via limits** | Control runtime and cost using `maxEmails` so the scraper stops when you hit your target |
| ✅ **Built-in proxy support** | Supports proxy configuration via `proxyConfiguration` for more reliable scraping |

---

### Key features

- 🔍 **Keyword-driven email discovery:** Uses your `keywords` to find relevant Twitter bios and posts where emails may appear
- 🎯 **Domain-targeted results:** Uses `customDomains` (for example `@gmail.com`) to focus on the email types you actually want
- 📈 **Maximize efficiency with `maxEmails`:** Stops once the `maxEmails` limit is reached to help control scraping time and cost
- 🛡️ **Resilient extraction flow:** Includes retries and stop conditions when results slow down or page returns are empty
- 💾 **Real-time data saving:** Each discovered email is pushed immediately to the dataset
- 🔄 **Progress persistence:** Saves progress (including a cursor and `seen_emails`) so reruns can continue where they left off
- 🌐 **Structured context per email:** Every email row includes the keyword, result title/description, and the page url that led to the email
- ⚙️ **Proxy support for consistent runs:** You can configure proxies using `proxyConfiguration`, and the actor supports different scraping `engine` options

---

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "keywords": ["founder", "marketing"],
  "location": "",
  "platform": "Twitter",
  "customDomains": ["@gmail.com"],
  "maxEmails": 20,
  "engine": "legacy",
  "proxyConfiguration": {}
}
````

#### Input Fields

| Field | Required | Description |
|---|---:|---|
| `keywords` | ✅ | A list of keywords to search for. The scraper uses these to find Twitter bios and posts related to your topic. |
| `location` | ❌ | Location to filter search results. Leave it empty for broader discovery. |
| `platform` | ❌ | Select platform. The only supported value is `Twitter`. |
| `customDomains` | ❌ | List of custom email domains used as a filter for extracted emails (for example `@gmail.com`). |
| `maxEmails` | ❌ | Maximum number of emails to collect. The scraper stops once this limit is reached. Higher values may take longer and don’t guarantee you’ll reach that exact number. |
| `engine` | ❌ | Choose scraping engine. `cost-effective` uses residential proxies with async requests, while `legacy` uses a different proxy approach with traditional selectors (more reliable but slower and more expensive). |
| `proxyConfiguration` | ❌ | Configure proxies for this Actor. Use this when you want custom proxy settings. |

***

### Output

The actor pushes each discovered email record to the dataset as a JSON object with consistent fields.

Example pushed output row:

```json
{
  "network": "Twitter.com",
  "keyword": "founder",
  "title": "No title",
  "description": "No data",
  "url": "https://example.com/some-result",
  "email": "name@gmail.com",
  "proxyGroups": []
}
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `network` | string | Always set to `Twitter.com` for the source network. |
| `keyword` | string | The keyword currently being processed when the email was found. |
| `title` | string | The title text associated with the result where the email appeared. |
| `description` | string | The description/snippet text where the email was extracted from. |
| `url` | string | The result URL tied to the content that led to the email extraction. |
| `email` | string | The extracted email address. |
| `proxyGroups` | array | Proxy group info associated with the run (as provided by the actor’s proxy configuration). |

> Note: The actor stops when `maxEmails` is reached, so your dataset size depends on how many unique emails match your `customDomains` filters.

***

### How to use Twitter Email Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at [console.apify.com](https://console.apify.com) and open the **Actors** tab.

2. **Find Twitter Email Scraper**\
   Search for **Twitter Email Scraper** and open the actor details page.

3. **Enter your input**\
   In the **INPUT** section, use the form or paste JSON. You must provide `keywords` (a list).\
   Set `customDomains` to target specific inbox providers (for example `@gmail.com`), and optionally adjust `maxEmails`.

4. **Choose your engine (optional but recommended)**\
   Pick `engine` as either `legacy` (more reliable but slower/expensive) or `cost-effective` (uses residential proxies with async requests for faster/cheaper scraping).

5. **Configure proxies (optional)**\
   If you have special requirements, set `proxyConfiguration` to match your environment.

6. **Run the actor**\
   Start the run. You can watch logs to see progress, pushes, and when the actor stops due to limits or result conditions.

7. **Access results in the dataset**\
   After the run finishes, open the **OUTPUT** tab and view the dataset with the pushed records.

8. **Export your data**\
   Export as **JSON** (and typically CSV via Apify UI export options) for use in your CRM, spreadsheets, or analysis pipelines.

*No coding required—get Twitter email scraping results in minutes with Twitter Email Scraper.*

***

### Advanced features & SEO optimization

- 🚀 **Engine choice for your workflow:** `Twitter Email Scraper` supports both `cost-effective` and `legacy` engine options so you can tune for speed or stability depending on your needs—useful for a **Twitter email scraper** setup for lead generation at scale.
- 🧠 **Better targeting with domains:** Pair `keywords` with `customDomains` to create a **Twitter contact email extractor** workflow that focuses on the email types you actually want.
- 🔄 **Resilience under changing page responses:** Includes retries and stop conditions to avoid wasting time when results stop improving—great for **Twitter email harvesting automation**.
- 💾 **Progress-aware reruns:** Uses persisted progress (including a cursor and `seen_emails`) so repeated runs are more efficient for larger jobs.

***

### Best use cases

- 📈 **Growth teams building outbound lists:** Quickly compile a **Twitter prospecting email scraper** dataset of emails matching your target keywords and domains.
- 🧠 **Market researchers mapping brands and niches:** Extract emails tied to specific topics using `keywords` and then analyze outreach potential by dataset fields.
- 💼 **Recruiters finding hiring contacts:** Use `Twitter contact email extractor` logic with targeted keywords (roles, functions) to find contact emails from publicly available bios/posts.
- 🎯 **B2B marketers running lead generation tests:** Pull a controlled list using `maxEmails`, test deliverability, and iterate on keywords/customDomains.
- 🧾 **Data analysts enriching contact datasets:** Combine `keyword`, `title`, `description`, and `url` context with the email field for downstream enrichment and validation.
- 🛠️ **Developers integrating into pipelines:** Use the actor’s structured dataset output to automate **Twitter lead generation email scraper** workflows in your own systems.
- 📣 **Sales teams validating prospect email domains:** Narrow results to preferred inbox providers via `customDomains` to reduce friction in outreach.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `keywords` as an array (required)
  - ✅ `location` as a string
  - ✅ `platform` as `Twitter`
  - ✅ `customDomains` as an array (email-domain filters)
  - ✅ `maxEmails` as an integer (1–10000)
  - ✅ `engine` as `cost-effective` or `legacy`
  - ✅ `proxyConfiguration` as an object

- **Proxy Support**
  - ✅ Yes — configure via `proxyConfiguration`
  - ✅ Engine option `cost-effective` is designed for residential-proxy use with async requests
  - ✅ Engine option `legacy` uses an alternative proxy approach with traditional selectors

- **Retry Mechanism**
  - ✅ Retries and fallbacks are built in when pages return empty/no results for a period of time

- **Dataset Structure**
  - ✅ One dataset row per pushed email with fields: `network`, `keyword`, `title`, `description`, `url`, `email`, `proxyGroups`

- **Rate Limits & Performance**
  - ⏱️ Large searches or high `maxEmails` may take longer
  - ⏳ You can increase timeouts in Run Options for large jobs (default is noted as 3600s / 1 hr in the actor input description)

- **Limitations**
  - ❌ The actor only extracts emails that are present in publicly available Twitter content (bios/posts) matching your keyword/domain filters
  - ❌ Setting a higher `maxEmails` doesn’t guarantee you’ll reach that exact number—results depend on what’s available publicly

***

### FAQ

#### What does the Twitter Email Scraper extract?

✅ The **Twitter Email Scraper** extracts email addresses from publicly available Twitter bios and posts related to your provided `keywords`. It also filters extracted emails using your `customDomains`.

#### Do I have to provide `keywords`?

✅ Yes. `keywords` is required, and the actor uses them to find relevant Twitter content to search for emails.

#### How do `customDomains` help?

🎯 `customDomains` works like a focus filter. For example, if you set `["@gmail.com"]`, the actor will only collect email addresses that match the provided domain patterns.

#### Can I control how many emails I get?

✅ Yes. Use `maxEmails` to set a cap on the number of emails to collect. The actor will stop once it reaches this limit.

#### Which engine should I use: `legacy` or `cost-effective`?

💡 Use `legacy` if you want a more reliable option (noted as slower and more expensive). Use `cost-effective` if you want faster, cheaper scraping using residential proxies with async requests.

#### Do I need to configure proxies?

❌ No, not required. But if you want more control over network routing or run stability, you can configure `proxyConfiguration`.

#### What if results seem low?

❌ If you see low results, the actor’s input guidance recommends re-running with broader keywords and more related terms, or adding more domains to `customDomains`.

#### Can I use this for lead generation and outreach?

✅ Yes—this actor is designed for **Twitter prospecting email scraper** and **Twitter lead generation email scraper** use cases by collecting emails paired with helpful context like `keyword`, `title`, `description`, and `url`. Always ensure your outreach complies with applicable laws and platform rules.

***

### Support & feature requests

If you’re using **Twitter Email Scraper** and want to share feedback, improvements, or feature requests, we’d love to hear from you. 💡

- 💡 **Feature Requests:** For example, enhancements like additional export formats, more flexible email filtering, or better pipeline-friendly outputs for your **Twitter email scraper** workflow.
- 📧 **Contact:** Reach out at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for Twitter email harvesting tools built for real-world prospecting and research.

***

### Closing CTA / Final thoughts

*Twitters run fast—your **Twitter Email Scraper** results should too.*\
If you’re looking for a reliable, SEO-optimized **Twitter email scraper** for prospecting-grade email discovery, this actor is built to deliver structured results at scale.

***

### Disclaimer

**This tool only accesses publicly accessible sources.** It does not access private profiles, authenticated data, or password-protected pages.

You are responsible for ensuring your use complies with applicable laws and regulations (including GDPR, CCPA, and spam regulations) and respects platform terms and conditions.

For data removal requests, contact <dataforleads@gmail.com>.

Use Twitter Email Scraper responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `keywords` (type: `array`):

A list of keywords to search for.

## `location` (type: `string`):

Location to filter search results.

## `platform` (type: `string`):

Select platform.

## `customDomains` (type: `array`):

List of custom email domains

## `maxEmails` (type: `integer`):

Maximum number of emails to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.

## `engine` (type: `string`):

Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE\_SERP proxy with traditional selectors - more reliable but slower and more expensive.

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

Configure proxies for this Actor.

## Actor input object example

```json
{
  "keywords": [
    "founder",
    "marketing"
  ],
  "location": "",
  "platform": "Twitter",
  "customDomains": [
    "@gmail.com"
  ],
  "maxEmails": 20,
  "engine": "legacy"
}
```

# 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 = {
    "keywords": [
        "founder",
        "marketing"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/twitter-email-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 = {
    "keywords": [
        "founder",
        "marketing",
    ],
    "location": "",
    "customDomains": ["@gmail.com"],
}

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/twitter-email-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 '{
  "keywords": [
    "founder",
    "marketing"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com"
  ]
}' |
apify call solid-scraper/twitter-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitter Email Scraper",
        "description": "📧 Twitter Email Scraper helps you find verified emails from relevant Twitter profiles fast—using keywords, niches, and locations. Great for B2B prospecting, outreach, and growth teams. ⚡ Save time. Boost conversions.",
        "version": "0.0",
        "x-build-id": "PkxCR7Y1XJNyclT3C"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solid-scraper~twitter-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solid-scraper-twitter-email-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/solid-scraper~twitter-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solid-scraper-twitter-email-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/solid-scraper~twitter-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solid-scraper-twitter-email-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",
                "required": [
                    "keywords"
                ],
                "properties": {
                    "keywords": {
                        "title": "Keywords",
                        "type": "array",
                        "description": "A list of keywords to search for.",
                        "default": [
                            "founder",
                            "marketing"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location to filter search results.",
                        "default": ""
                    },
                    "platform": {
                        "title": "Platform",
                        "enum": [
                            "Twitter"
                        ],
                        "type": "string",
                        "description": "Select platform.",
                        "default": "Twitter"
                    },
                    "customDomains": {
                        "title": "Custom Email Domains",
                        "type": "array",
                        "description": "List of custom email domains",
                        "default": [
                            "@gmail.com"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxEmails": {
                        "title": "Max Emails",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of emails to collect. The scraper will stop once this limit is reached. Setting a higher limit allows for more potential results but doesn't guarantee reaching that number. This helps save costs by controlling scraping time.",
                        "default": 20
                    },
                    "engine": {
                        "title": "Engine",
                        "enum": [
                            "cost-effective",
                            "legacy"
                        ],
                        "type": "string",
                        "description": "Choose scraping engine. 🚀 Cost Effective (New): Uses residential proxies with async requests for faster, cheaper scraping. 🔧 Legacy: Uses GOOGLE_SERP proxy with traditional selectors - more reliable but slower and more expensive.",
                        "default": "legacy"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxies for this Actor."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
