# Avvo Reviews Scraper (`solidcode/avvo-reviews-scraper`) Actor

\[💰 $1.50 / 1K] Extract reviews from Avvo lawyer profiles by URL or by lawyer-and-location search.

- **URL**: https://apify.com/solidcode/avvo-reviews-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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

## Avvo Reviews Scraper

Pull client reviews from Avvo lawyer profiles at scale — star ratings, review titles, full review bodies, reviewer names and relationships, posted dates, and the lawyer's official replies. Built for legal-marketing agencies, reputation-management consultants, and attorney-search platforms that need fresh, structured Avvo client feedback delivered straight to a spreadsheet, CRM, or BI dashboard.

### Why This Scraper?

- **Two input modes — URLs or free-text search** — paste lawyer profile URLs directly, or describe lawyers as `"divorce lawyers, San Francisco CA"` / `"John Smith attorney, Austin TX"` and the actor resolves each query to a real Avvo profile automatically.
- **One row per review, with parent context inlined** — every row carries `lawyerName`, `lawyerCity`, `lawyerState`, and `lawyerProfileUrl`, so a multi-lawyer run drops straight into a spreadsheet without a join.
- **Star-rating filter (1–5) for reputation triage** — set `minRating: 1` to surface the lowest-star reviews for outreach and response strategy, or `minRating: 4` to pull testimonial-grade reviews for marketing copy.
- **Lawyer replies captured as structured data** — every review row carries a nested `lawyerResponse` object with the response body and posted date when the attorney has replied, so you can measure how proactively each lawyer engages with criticism.
- **"Hired Attorney" badge captured per row** — every review row carries `reviewerRelationship: "Hired Attorney"` when Avvo shows the verified-client badge on the review header, or `null` when the badge is absent — useful for filtering testimonials down to confirmed paying clients.
- **ISO 8601 posted dates on every review** — dates parsed from Avvo's free-text format into machine-sortable timestamps so review trends, recency analysis, and time-series dashboards just work.
- **Lawyer profiles resolved from verified directory data** — lawyer name, city, and state are pulled from Avvo's own structured listing record, not guessed from page headlines, so the parent context columns stay accurate even when Avvo redesigns the profile page.
- **Scales to lawyers with 1 000+ reviews** — top-rated personal-injury and family-law attorneys can carry thousands of client reviews; the actor walks every page and stops cleanly the moment your `maxReviewsPerLawyer` or `maxReviewsTotal` cap is hit.
- **Two overlapping safety caps** — `maxReviewsPerLawyer` bounds each individual lawyer, `maxReviewsTotal` bounds the whole run, so a single mistyped URL pointing at a 5 000-review profile can never blow past your budget.

### Use Cases

**Reputation Management & Monitoring**
- Track new reviews on a roster of attorney clients and flag negative ones the moment they appear
- Benchmark a single lawyer's review trend against firm partners or regional peers
- Pull every 1- and 2-star review for a partner so the response strategy can be drafted in one sitting
- Audit how often a lawyer replies to negative reviews vs. positive ones

**Lead Generation & Sales Intelligence**
- Build target lists of high-rated attorneys by practice area and city for legal-tech outreach
- Identify lawyers in specific states whose reviews mention pain points your product solves
- Source customer-quote material for case studies — filter to 5-star reviews mentioning specific outcomes

**Market Research & Competitive Intelligence**
- Compare average client satisfaction across practice areas (personal injury vs. family law vs. criminal defense)
- Map regional differences in client review patterns — coastal metros vs. heartland markets
- Quantify how often clients mention price, communication, or outcome in their reviews

**Academic & Journalistic Research**
- Study client satisfaction patterns in legal services at scale
- Analyse how lawyers frame their replies to negative feedback
- Measure review volume and recency as proxies for an attorney's online visibility

**Aggregator Platforms & Legal Directories**
- Feed Avvo client reviews into a multi-source attorney comparison tool
- Power a lawyer-discovery app with verified third-party feedback
- Augment internal CRM records with public review counts and average star ratings per attorney

### Getting Started

#### Single Lawyer by URL

The simplest run — pull every review on one profile:

```json
{
    "lawyerUrls": [
        "https://www.avvo.com/attorneys/95827-ca-james-arrasmith-5150864.html"
    ],
    "maxReviewsPerLawyer": 50
}
````

#### Multiple Lawyers, Negative Reviews Only

Reputation triage across a roster of clients — pull just the 1- and 2-star reviews:

```json
{
    "lawyerUrls": [
        "https://www.avvo.com/attorneys/94104-ca-john-doe-12345.html",
        "https://www.avvo.com/attorneys/10001-ny-jane-roe-67890.html",
        "https://www.avvo.com/attorneys/60601-il-mark-smith-24680.html"
    ],
    "minRating": 1,
    "maxReviewsPerLawyer": 100
}
```

#### Search by Practice Area + City

When you don't have profile URLs in hand — describe each lawyer in plain English:

```json
{
    "lawyerSearch": [
        "personal injury, Los Angeles, CA",
        "divorce lawyers, San Francisco, CA",
        "criminal defense, Houston, TX"
    ],
    "maxReviewsTotal": 100
}
```

#### Mixed Input — URLs and Searches Together

```json
{
    "lawyerUrls": [
        "https://www.avvo.com/attorneys/94104-ca-john-doe-12345.html"
    ],
    "lawyerSearch": [
        "estate planning, Boston, MA"
    ],
    "minRating": 4,
    "maxReviewsPerLawyer": 200,
    "maxReviewsTotal": 500
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `lawyerUrls` | string\[] | `[]` | Avvo lawyer profile URLs (e.g. `https://www.avvo.com/attorneys/94104-ca-john-doe-12345.html`). Paste one URL per lawyer. Each URL produces one set of review rows. |
| `lawyerSearch` | string\[] | `[]` | Free-text queries like `"divorce lawyers, San Francisco CA"` or `"John Smith attorney, Austin TX"`. Each query is resolved to its top matching Avvo lawyer profile, and that lawyer's reviews are collected. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `minRating` | integer (1–5) | unset | When set, only emit reviews with a star rating at or above this value. Leave empty to keep all reviews. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxReviewsPerLawyer` | integer | `100` | Cap on reviews collected per lawyer. Set to `0` (or leave empty) to collect every available review. |
| `maxReviewsTotal` | integer | unset | Optional safety cap on the total number of reviews across all lawyers. Useful for bounding a large run. |

### Output

One row per review. Lawyer-context fields are inlined on every row so a multi-lawyer dataset drops straight into a spreadsheet.

```json
{
    "lawyerName": "James Arrasmith",
    "lawyerProfileUrl": "https://www.avvo.com/attorneys/95827-ca-james-arrasmith-5150864.html",
    "lawyerSlug": "james-arrasmith",
    "lawyerCity": "Sacramento",
    "lawyerState": "CA",
    "reviewId": "12345678",
    "reviewerName": "Maria",
    "reviewerRelationship": "Hired Attorney",
    "stars": 5,
    "title": "Outstanding family law representation",
    "body": "James handled my custody case with compassion and skill. He kept me informed at every step, returned calls the same day, and the outcome exceeded my expectations.",
    "postedAt": "2024-09-12",
    "lawyerResponse": {
        "body": "Thank you Maria — it was a privilege working with you and your family.",
        "postedAt": "2024-09-15"
    },
    "recordType": "review"
}
```

#### Lawyer Context

| Field | Type | Description |
|-------|------|-------------|
| `lawyerName` | string | Lawyer's display name as listed on Avvo |
| `lawyerProfileUrl` | string | Canonical Avvo profile URL |
| `lawyerSlug` | string | URL slug segment of the lawyer (e.g. `james-arrasmith`) |
| `lawyerCity` | string | Lawyer's primary office city |
| `lawyerState` | string | Two-letter US state code (e.g. `CA`) |

#### Review Content

| Field | Type | Description |
|-------|------|-------------|
| `reviewId` | string | Avvo's stable identifier for the review |
| `stars` | integer (1–5) | Star rating chosen by the reviewer |
| `title` | string | Headline the reviewer gave the review |
| `body` | string | Full review text |
| `postedAt` | string | Date the review was posted, ISO 8601 (`YYYY-MM-DD`) |
| `recordType` | string | Always `"review"` — present for forward compatibility with future record types |

#### Reviewer & Lawyer Response

| Field | Type | Description |
|-------|------|-------------|
| `reviewerName` | string | Reviewer's display name. May be the literal `"anonymous"` when the reviewer chose anonymity |
| `reviewerRelationship` | string | null | `"Hired Attorney"` when Avvo shows the verified-client badge on the review header, otherwise `null`. Useful for filtering down to reviews from confirmed paying clients. |
| `lawyerResponse` | object | null | The lawyer's official reply when present, with `body` and `postedAt` (ISO 8601). `null` when the lawyer has not replied |

### Tips for Best Results

- **Start small** — run a single lawyer URL with `maxReviewsPerLawyer: 20` first to confirm the data shape matches your downstream pipeline, then scale up.
- **Use `minRating: 1` or `minRating: 2` for reputation triage** — these are the most actionable reviews for outreach, response drafting, and crisis monitoring. Most actors only care about averages; the negative-review subset is where the real lift lives.
- **Use `maxReviewsTotal` to bound large runs** — Avvo profile sizes vary wildly: some lawyers have 5 reviews, top-rated personal-injury attorneys can have over 1 000. If you're running 50 lawyers and only have budget for 5 000 rows, set `maxReviewsTotal: 5000` as a hard ceiling.
- **Mine `lawyerResponse` for engagement signals** — a lawyer who replies to most negative reviews behaves very differently from one who never replies. The nested `lawyerResponse` field is rich material for benchmarking attorney engagement.
- **Prefer `lawyerUrls` when you know the specific attorney** — `lawyerSearch` resolves each query to the FIRST matching Avvo profile for that practice area + city + state. If you need a specific named lawyer, paste the URL.
- **Combine input types in one run** — mixing `lawyerUrls` and `lawyerSearch` in a single run is fully supported; both arrays are deduplicated and processed end-to-end.
- **Reviewer names of `"anonymous"` are real, not bugs** — Avvo lets reviewers post anonymously, and the actor preserves the literal value. Filter them out client-side if you need named-only reviews.

### Pricing

**$1.50 per 1,000 reviews** — pay only for review rows you actually receive. No compute charges — you only pay per review returned.

| Reviews | Estimated Cost |
|---------|----------------|
| 100 | $0.15 |
| 1,000 | $1.50 |
| 10,000 | $15.00 |
| 100,000 | $150.00 |

A "result" is one review row in the output dataset. Apify platform fees (storage, transfer) are additional and depend on your plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation, no-code pipelines
- **Google Sheets** — Direct spreadsheet export for analysts and ops teams
- **Slack** / **Email** — Notifications on new negative reviews or run completion
- **Webhooks** — Trigger your own systems on each scheduled run
- **Apify API** — Full programmatic access for embedding into your own product

### Legal & Ethical Use

This actor collects only data that is publicly visible to any visitor of an Avvo lawyer profile — client reviews, star ratings, posted dates, and lawyer replies that Avvo itself displays without authentication. Users are responsible for complying with Avvo's Terms of Service and applicable laws around personal data, attorney advertising, and fair use. Do not use extracted reviews for harassment, defamation, deceptive advertising, or any illegal purpose, and respect reviewer anonymity where it is preserved on the source page.

# Actor input Schema

## `lawyerUrls` (type: `array`):

Avvo lawyer profile URLs (e.g. https://www.avvo.com/attorneys/94104-ca-john-doe-12345.html). Paste one URL per lawyer. Each URL produces one set of review rows.

## `lawyerSearch` (type: `array`):

Free-text queries like 'divorce lawyers, San Francisco CA' or 'John Smith attorney, Austin TX'. Each query is resolved to its top matching Avvo lawyer profile, and that lawyer's reviews are scraped. Use this when you don't have profile URLs in hand.

## `minRating` (type: `integer`):

When set, only emit reviews with a star rating at or above this value (1-5). Leave empty to keep all reviews.

## `maxReviewsPerLawyer` (type: `integer`):

Cap on the number of reviews captured per lawyer. Set to 0 (or leave empty) to collect every available review. The actor stops requesting new pages once the cap is reached but keeps the full last page if it slightly overshoots.

## `maxReviewsTotal` (type: `integer`):

Optional safety cap on the total number of reviews collected across all lawyers. Useful for bounding a large run. Leave empty for no cap.

## Actor input object example

```json
{
  "lawyerUrls": [],
  "lawyerSearch": [],
  "minRating": null,
  "maxReviewsPerLawyer": 100
}
```

# Actor output Schema

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

Compact table of reviews: lawyer, stars, title, and posted date.

## `detail` (type: `string`):

Full review rows including reviewer info and the lawyer's response (when available).

# 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 = {
    "lawyerUrls": [],
    "lawyerSearch": [],
    "maxReviewsPerLawyer": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/avvo-reviews-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 = {
    "lawyerUrls": [],
    "lawyerSearch": [],
    "maxReviewsPerLawyer": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/avvo-reviews-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 '{
  "lawyerUrls": [],
  "lawyerSearch": [],
  "maxReviewsPerLawyer": 100
}' |
apify call solidcode/avvo-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Avvo Reviews Scraper",
        "description": "[💰 $1.50 / 1K] Extract reviews from Avvo lawyer profiles by URL or by lawyer-and-location search.",
        "version": "1.0",
        "x-build-id": "dfF0dUXpnMyg8H0WK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~avvo-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-avvo-reviews-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/solidcode~avvo-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-avvo-reviews-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/solidcode~avvo-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-avvo-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "lawyerUrls": {
                        "title": "Lawyer profile URLs",
                        "type": "array",
                        "description": "Avvo lawyer profile URLs (e.g. https://www.avvo.com/attorneys/94104-ca-john-doe-12345.html). Paste one URL per lawyer. Each URL produces one set of review rows.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "lawyerSearch": {
                        "title": "Search queries (lawyer name + location)",
                        "type": "array",
                        "description": "Free-text queries like 'divorce lawyers, San Francisco CA' or 'John Smith attorney, Austin TX'. Each query is resolved to its top matching Avvo lawyer profile, and that lawyer's reviews are scraped. Use this when you don't have profile URLs in hand.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minRating": {
                        "title": "Minimum star rating (1-5)",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "When set, only emit reviews with a star rating at or above this value (1-5). Leave empty to keep all reviews.",
                        "default": null
                    },
                    "maxReviewsPerLawyer": {
                        "title": "Max reviews per lawyer",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the number of reviews captured per lawyer. Set to 0 (or leave empty) to collect every available review. The actor stops requesting new pages once the cap is reached but keeps the full last page if it slightly overshoots.",
                        "default": 100
                    },
                    "maxReviewsTotal": {
                        "title": "Max reviews total (across all lawyers)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional safety cap on the total number of reviews collected across all lawyers. Useful for bounding a large run. Leave empty for no cap."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
