# Goodreads Email Scraper (`scraperoka/goodreads-email-scraper`) Actor

📧 Goodreads Email Scraper extracts email addresses from Goodreads profiles and author pages. ⚡ Fast, targeted data for outreach, lead generation, and marketing campaigns. 🔒 Built for efficient research—turn readers into your next customers!

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

## Pricing

from $0.01 / 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

### Goodreads Email Scraper 📬

**Goodreads Email Scraper** automates the task of extracting emails from Goodreads profile bios and posts that match your chosen keywords and email-domain filters. If you’re looking for a **Goodreads email scraper**, this actor helps you find relevant contacts faster—whether you’re a marketer, researcher, or data analyst building lead lists, running outreach, or enriching CRM data at scale. It’s a practical **Goodreads contact email extractor** and **Goodreads user email finder** designed to save you hours of manual searching.

---

### Why choose Goodreads Email Scraper?

| Feature | Benefit |
|---|---|
| ✅ Keyword-based email harvesting | Lets you use your chosen keywords to discover relevant Goodreads bios/posts that contain emails |
| ✅ Custom email domain targeting | Helps you focus on emails from specific domains via **Custom Email Domains** (e.g., `@gmail.com`) |
| ✅ Proxy support + resilient execution | Includes built-in proxy configuration so runs can stay reliable across more pages |
| ✅ Smart stopping using limits | Stops when **Max Emails** is reached to help control runtime and cost |
| ✅ Structured dataset output | Pushes consistent records including `network`, `keyword`, `title`, `url`, and `email` for easy downstream use |
| ✅ Works as an automated pipeline component | Outputs one email record per match, which you can immediately export as JSON/CSV in Apify |

---

### Key features

- 🔎 **Keyword-driven discovery**: Uses your **keywords** to locate Goodreads bios and posts related to your search terms  
- 🗂️ **Email-domain filtering**: Extracts only emails that match your provided **customDomains** (email domains like `@gmail.com`)  
- 🛡️ **Proxy configuration support**: Includes the **proxyConfiguration** input so you can run with your preferred proxy setup  
- ⏹️ **Controlled collection with Max Emails**: Stops once the collected emails reach **maxEmails** (helpful for predictable scraping runs)  
- 📊 **Clean, structured records**: Each discovered email is pushed with clear context fields (keyword, title, description, URL)  
- 💾 **Progress persistence**: Saves crawl progress into an internal key-value store (so reruns can continue)  

---

### Input

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

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

#### Input Fields

| Field | Required | Description |
|---|---:|---|
| `keywords` | ✅ | A list of keywords to search for. These keywords drive where the scraper looks for relevant Goodreads bios/posts that may contain emails. |
| `location` | ❌ | Location to filter search results. Leave it empty to search without a location filter. |
| `platform` | ❌ | Select platform. The only supported value is `Goodreads`. |
| `customDomains` | ❌ | List of custom email domains to target. Example: `["@gmail.com"]`. The scraper uses this to focus email extraction on specific domains. |
| `maxEmails` | ❌ | Maximum number of emails to collect. The scraper stops once this limit is reached (higher values may take longer and still don’t guarantee reaching the exact number). |
| `engine` | ❌ | Choose scraping engine. Options are `cost-effective` (Cost Effective (New)) or `legacy` (Legacy). Default is `legacy`. |
| `proxyConfiguration` | ❌ | Configure proxies for this Actor using Apify’s proxy editor. |

***

### Output

The actor pushes email findings as structured JSON records (one pushed item per discovered email match).

```json
{
  "network": "Goodreads.com",
  "keyword": "founder",
  "title": "Example result title",
  "description": "Example snippet/description text",
  "url": "https://example.com/page",
  "email": "contact@example.com",
  "proxyGroups": []
}
```

#### Output Fields

| Field | Type | Description |
|---|---|---|
| `network` | string | The source network label for each record. For this actor it is always `Goodreads.com`. |
| `keyword` | string | The keyword that led to the discovered contact. |
| `title` | string | The title text from the relevant listing/search result context. |
| `description` | string | The description/snippet text associated with the listing where the email was found. |
| `url` | string | The URL associated with that listing context. |
| `email` | string | The extracted email address. |
| `proxyGroups` | array | Proxy group info carried from the run’s proxy configuration inputs (present as `user_proxy_group` in the source). |

> Note: The source code pushes data via `Actor.push_data(row)` and does not show any additional output keys beyond the `row` object fields above.

***

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

1. **Open Apify Console**\
   Go to [console.apify.com](https://console.apify.com) and sign in, then open the Actors page.

2. **Select Goodreads Email Scraper**\
   Find the actor titled **Goodreads Email Scraper** and open its details.

3. **Add your keywords**\
   In the **INPUT** panel, set `keywords` to the topics you want to search for (example: `["founder", "marketing"]`).

4. **Target the right email types with custom domains**\
   Optionally fill in `customDomains` with domains you care about (example: `["@gmail.com"]`). This helps the actor focus email extraction to those domains.

5. **Adjust limits for faster runs**\
   Set `maxEmails` to control how many email matches the actor collects before stopping.

6. **Choose engine and proxy configuration**\
   Use `engine` (`cost-effective` or `legacy`) if you need to switch strategies. If you have custom proxy requirements, configure them under `proxyConfiguration`.

7. **Run and monitor logs**\
   Start the run. You’ll see progress through actor logs while it fetches and extracts matches, and it will stop early once `maxEmails` is reached.

8. **Export results**\
   After the run completes, open the output dataset in Apify Console and export the data as **JSON** or **CSV** for your outreach or analysis pipeline.

No coding required—get accurate Goodreads email extraction results in minutes.

***

### Advanced features & SEO optimization

- 🚀 **Engine selection for Goodreads email harvesting**: Use `engine` to choose between `cost-effective` (Cost Effective (New)) and `legacy` (Legacy) approaches, depending on your reliability vs. speed needs—handy for a **Goodreads lead generation email scraper** workflow.
- 🎯 **Keyword + domain targeting**: Combines `keywords` with `customDomains` to support **Goodreads contact email extractor** use cases where you want only specific email types.
- 📌 **Progress persistence for long runs**: Includes progress saving so reruns can be more resilient when searching across larger inputs (especially relevant for **Goodreads profile email scraper** tasks).
- 🧠 **Practical “stop when enough” control**: `maxEmails` helps keep runs efficient and predictable for **automated Goodreads email extraction**.
- 🧾 **Structured rows for easy export**: Every match is pushed with consistent fields (`network`, `keyword`, `title`, `description`, `url`, `email`, `proxyGroups`) so it fits cleanly into downstream tools.

***

### Best use cases

- 📈 **Lead generation for startups**: Use **Goodreads email harvesting tool** workflows to collect founder or marketing contact emails tied to relevant Goodreads profiles and posts.
- 🧪 **Market research & audience mapping**: Gather **Goodreads contact information scraper** data to understand who’s active in specific niches and who lists emails publicly.
- ✉️ **Outreach list building**: Build targeted lists using `customDomains` (for example, `@gmail.com`) with a **Goodreads user email finder** approach.
- 📚 **Author or reviewer outreach**: Find potential author or book reviewer contacts with a **Goodreads author email scraper** use case, using carefully chosen keywords.
- 🧰 **CRM enrichment automation**: Feed results directly into your pipeline since the dataset fields include `keyword`, `url`, and `email` for quick matching.
- 📊 **Data analysis & validation**: Use the structured output to measure how often emails appear for different keyword themes—useful for **Goodreads scraping for email addresses** experiments.
- 💼 **Agency research workflows**: Run the **Goodreads profile email scraper** repeatedly for client campaigns while controlling runtime via `maxEmails`.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `input.json` matching the actor schema (keywords-driven extraction)
- **Proxy Support**
  - ✅ Yes, via the `proxyConfiguration` input
- **Retry Mechanism**
  - ✅ Retries and fallbacks are included for resilience when encountering failures during scraping runs
- **Dataset Structure**
  - ✅ Each discovered email match is pushed as a JSON object containing: `network`, `keyword`, `title`, `description`, `url`, `email`, `proxyGroups`
- **Rate Limits & Performance**
  - ⚠️ Performance depends on the size of your keyword/domain search and the `maxEmails` limit; larger runs can take longer
- **Limitations**
  - ❌ Results depend on publicly available emails present in Goodreads bios/posts and may vary by keyword targeting
  - ❌ Email counts are not guaranteed to reach `maxEmails` even if a higher limit is set

***

### FAQ

#### Do I need to provide an email pattern or regex?

No—you don’t enter a regex. Instead, you provide `customDomains` (for example `@gmail.com`), and the scraper extracts emails that match the provided email-domain targets.

#### Where do the emails come from on Goodreads?

✅ The scraper finds emails from Goodreads bios and posts related to your keywords, then extracts matching email addresses based on your `customDomains`.

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

✅ Yes. Use `maxEmails` to cap the total number of collected email matches. The scraper stops once this limit is reached.

#### Is a location filter supported?

✅ Yes. You can set `location` to filter search results. Leaving it empty means the actor will not apply a location filter.

#### What are the supported platform values?

`platform` supports `Goodreads` (and the schema default is `Goodreads`).

#### Do I need special setup to use proxies?

Not required, but supported. You can configure `proxyConfiguration` in the Apify Console input. You can also choose `engine` between `cost-effective` and `legacy`.

#### Can I use the results for outreach or lead generation?

✅ You can use the extracted emails for legitimate outreach and lead generation workflows. However, you must comply with applicable laws (including GDPR/CCPA where relevant) and platform rules. Only use the tool responsibly and for lawful purposes.

#### Can you export to CSV or JSON?

Apify Console lets you export dataset results. The actor pushes records as JSON objects with the fields shown in the Output section, which you can export as JSON or CSV from the dataset.

***

### Support & feature requests

Want to improve your **Goodreads Email Scraper** experience? 💡 Send feedback and enhancement ideas—we read them.

- **💡 Feature Requests:** Examples include CSV export improvements, additional fields, or more configurable email-domain handling.
- **📧 Contact:** Reach out at <dataforleads@gmail.com>.

Your feedback helps shape the roadmap for future Goodreads email extraction improvements.

***

### Goodreads Email Scraper — final thoughts

*Goodreads Email Scraper*\* is built to make **Goodreads email scraper** workflows faster, structured, and scalable for real outreach and analysis.\*\
If you want an **SEO-optimized Goodreads contact email extractor**, this is a strong starting point.

***

### Disclaimer

**This tool only accesses publicly accessible sources.** It does not access private profiles, authenticated data, or password-protected content. It is your responsibility to ensure your use complies with applicable laws (including GDPR/CCPA), spam regulations, and the relevant platform terms of service.

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

Please use this actor 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": "Goodreads",
  "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("scraperoka/goodreads-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("scraperoka/goodreads-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 scraperoka/goodreads-email-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Goodreads Email Scraper",
        "description": "📧 Goodreads Email Scraper extracts email addresses from Goodreads profiles and author pages. ⚡ Fast, targeted data for outreach, lead generation, and marketing campaigns. 🔒 Built for efficient research—turn readers into your next customers!",
        "version": "0.0",
        "x-build-id": "OIHp3yxvibqYw4Taq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scraperoka~goodreads-email-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scraperoka-goodreads-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/scraperoka~goodreads-email-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scraperoka-goodreads-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/scraperoka~goodreads-email-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scraperoka-goodreads-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": [
                            "Goodreads"
                        ],
                        "type": "string",
                        "description": "Select platform.",
                        "default": "Goodreads"
                    },
                    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
