# Softwareadvice Reviews Scraper (`reviewly/softwareadvice-reviews-scraper`) Actor

Scrapes verified reviews from any Software Advice product page. Extracts ratings, pros/cons, reviewer profiles, sub-scores, and product metadata — with automatic Cloudflare bypass

- **URL**: https://apify.com/reviewly/softwareadvice-reviews-scraper.md
- **Developed by:** [Reviewly](https://apify.com/reviewly) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Software Advice Reviews Scraper — Export Any Product's Reviews to JSON, CSV & Excel

**Scrape every verified review from any Software Advice product page — ratings, pros & cons, reviewer profiles, and sub-scores — in one run. No login, no code, no blocks.**

- ✅ **All reviews, not just page one** — automatic pagination pulls the full history (hundreds per product).
- ✅ **Built-in Cloudflare bypass** — handles the anti-bot wall for you, so runs just work.
- ✅ **Clean, structured data** — ratings, written review, pros, cons, sub-ratings, reviewer industry & company size.
- ✅ **Export anywhere** — JSON, CSV, Excel, or straight into Google Sheets, Make, Zapier, and n8n.
- ✅ **Beginner-friendly** — paste a URL, click Start. Developers get a full REST API too.

---

### 📌 What This Actor Does

The **Software Advice Reviews Scraper** is an [Apify Actor](https://apify.com/actors) that extracts customer reviews from any product listing on [Software Advice](https://www.softwareadvice.com) — the popular B2B software review site in the Gartner Digital Markets network (alongside Capterra and GetApp).

Give it a product URL and it returns **all** of that product's reviews as clean, ready-to-use data: the star rating, the full written review, pros and cons, detailed sub-ratings (ease of use, functionality, value for money, customer support), and reviewer details like industry, company size, and how long they used the product.

**Who it's for:**

- **Product & marketing teams** monitoring their own and competitors' reputation.
- **Market researchers & analysts** studying software categories and buyer sentiment.
- **SaaS founders** collecting real customer voice for positioning and messaging.
- **Data teams & developers** who need review data in a pipeline without maintaining a fragile scraper.
- **Agencies** delivering competitive intelligence and review analysis to clients.

**Real-world examples:** track how your rating trends over time, pull competitor pros/cons for a battlecard, feed thousands of reviews into an AI model for sentiment analysis, or build a category benchmark report.

---

### ✨ Key Features

- **Full-history extraction** — paginates automatically to collect every review on a product, not just the first page.
- **Rich per-review data** — overall rating, title, date, full text, pros, cons, and four sub-ratings.
- **Reviewer context** — industry, company size, validation status, usage frequency, and how long they used the product.
- **Product-level metadata** — average rating, total review count, star breakdown, and category, included in every result.
- **Automatic anti-bot handling** — clears the Cloudflare protection that normally blocks scrapers, with automatic IP rotation on retries.
- **Incremental runs** — use the target date filter to collect only reviews newer than your last run.
- **Any export format** — download JSON, CSV, Excel, XML, or RSS, or pull results via the Apify API.

---

### 🧠 Why This Actor Is Different

Most DIY scraping scripts break on Software Advice within minutes — the site is protected by Cloudflare and loads its reviews through a modern JavaScript framework, so a simple HTTP request just returns a "403 Blocked" page.

This Actor is built specifically to solve that:

- **Reliable bypass, not luck.** It earns a genuine browser clearance and reuses it on the same connection, then rotates to a fresh IP automatically if a request is blocked — so runs finish instead of failing halfway.
- **Complete data.** It reads the site's own internal data feed rather than scraping rendered HTML, so you get accurate, fully-structured fields — including data that isn't even visible on the page.
- **Zero maintenance for you.** No proxies to configure, no headless browser to babysit, no selectors to fix when the site changes its design.
- **Fast where it counts.** After the one-time bypass, pagination uses a lightweight client, so large products are collected quickly.

---

### ⚙️ Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `startUrls` | Array | ✅ Yes | One or more Software Advice product URLs. Accepts both the profile page and the reviews page. |
| `maxReviews` | Integer | No | Max reviews to collect **per product**. `0` (default) means no limit — collect everything. |
| `targetDate` | String (ISO date) | No | Only keep reviews written on or after this date, e.g. `2025-01-01`. Great for incremental runs. |
| `proxyConfiguration` | Object | Recommended | Proxy settings. **Residential proxies are strongly recommended** for reliable runs. |

#### Example input

```json
{
  "startUrls": [
    { "url": "https://www.softwareadvice.com/data-extraction/apify-profile/reviews/" }
  ],
  "maxReviews": 0,
  "targetDate": "2025-01-01",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
````

#### Tips for best results

- **Use residential proxies** (`RESIDENTIAL` group). Datacenter IPs are far more likely to be blocked by Cloudflare.
- **Both URL formats work** — `…/apify-profile/` and `…/apify-profile/reviews/` are both accepted and normalized automatically.
- **For incremental monitoring**, set `targetDate` to the date of your last run to fetch only new reviews.
- **Scrape multiple products at once** by adding several URLs to `startUrls`.

***

### 📤 Output Format

The Actor produces **one dataset record per product URL**. Each record contains the product's metadata plus a `reviews` array. Download it as JSON, CSV, Excel, XML, or RSS, or fetch it via the API.

#### Sample output

```json
{
  "name": "Apify",
  "productUrl": "https://www.softwareadvice.com/data-extraction/apify-profile/reviews/",
  "seoId": "198361",
  "slug": "apify",
  "category": "Data Extraction",
  "logoUrl": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/....png",
  "rating": 4.84,
  "reviewCount": 502,
  "ratingBreakdown": [
    { "value": 5, "count": 431 },
    { "value": 4, "count": 65 },
    { "value": 3, "count": 5 },
    { "value": 2, "count": 0 },
    { "value": 1, "count": 1 }
  ],
  "subRatingAverages": {
    "easeOfUse": 4.66,
    "functionality": 4.75,
    "valueForMoney": 4.60,
    "customerSupport": 4.58,
    "likelihoodToRecommend": 0.94
  },
  "reviews": [
    {
      "id": "Capterra___7157151",
      "source": "Capterra",
      "title": "apify scrapping",
      "date": "2026-05-26T19:02:21Z",
      "rating": 5,
      "reviewBody": "My overall experience with Apify has been extremely positive...",
      "pros": "The time of scraping is very fast and it helps you do what you want in a few minutes without problems.",
      "cons": "The dashboard can become a bit cluttered when managing many actors.",
      "subRatings": {
        "easeOfUse": 5,
        "functionality": 5,
        "valueForMoney": 5,
        "customerSupport": 5
      },
      "timeUsed": "LessThan6Months",
      "frequencyOfUse": "Daily",
      "reasonsForChoosing": null,
      "reasonsForSwitching": null,
      "incentive": "NoIncentive",
      "vendorReply": null,
      "reviewer": {
        "name": "Souhail B.",
        "anonymous": false,
        "industry": "Accounting",
        "companySize": "B",
        "isValidated": true,
        "profilePictureUrl": "https://reviews.capterra.com/cdn/profile-images/..."
      }
    }
  ]
}
```

#### Field reference

**Product-level fields**

| Field | Description |
|-------|-------------|
| `name` | Product name |
| `productUrl` | Canonical reviews URL |
| `category` | Software category (e.g. "Data Extraction") |
| `logoUrl` | Product logo image URL |
| `rating` | Average overall rating (out of 5) |
| `reviewCount` | Total number of reviews on the product |
| `ratingBreakdown` | Count of reviews per star value (1–5) |
| `subRatingAverages` | Average ease of use, functionality, value for money, customer support, and likelihood to recommend |

**Per-review fields (`reviews[]`)**

| Field | Description |
|-------|-------------|
| `id` | Unique review ID |
| `source` | Origin network (e.g. "Capterra") |
| `title` | Review headline |
| `date` | When the review was written (ISO 8601) |
| `rating` | Overall star rating (1–5) |
| `reviewBody` | Full written review / overall comments |
| `pros` | What the reviewer liked |
| `cons` | What the reviewer disliked |
| `subRatings` | Ease of use, functionality, value for money, customer support |
| `timeUsed` | How long the reviewer used the product |
| `frequencyOfUse` | How often they use it (Daily, Weekly, etc.) |
| `reasonsForChoosing` | Why they chose this product |
| `reasonsForSwitching` | What they switched from |
| `incentive` | Whether the review was incentivized |
| `vendorReply` | The vendor's response, if any |
| `reviewer` | Reviewer profile: name, anonymity, industry, company size, validation status, profile picture |

***

### ▶️ How to Use

1. **Open the Actor** on the Apify Store and click **Try for free**.
2. **Find your product** on [softwareadvice.com](https://www.softwareadvice.com) and copy its URL (the product or reviews page).
3. **Paste the URL** into the `startUrls` field.
4. *(Optional)* Set `maxReviews` or a `targetDate`, and keep proxies on **Residential**.
5. **Click Start** and wait for the run to finish.
6. **Download your data** from the **Storage** tab as JSON, CSV, or Excel — or grab it via the API.

#### Common workflows

- **One-off export:** paste a URL, run, download CSV. Done.
- **Competitor tracking:** add several product URLs and schedule the Actor to run weekly.
- **Incremental sync:** set `targetDate` to your last run date to pull only new reviews into your database.
- **Automation:** connect the Actor to Make, Zapier, or n8n to push reviews into Sheets, Slack, or your CRM.

***

### 📈 Use Cases

- **Competitive intelligence** — pull competitor pros, cons, and ratings to build sales battlecards and positioning docs.
- **Reputation monitoring** — track your product's rating and new reviews over time, and get alerted to negative feedback.
- **Voice-of-customer & AI analysis** — feed hundreds of real reviews into an LLM or sentiment model to surface themes, feature requests, and complaints.
- **Market research** — benchmark an entire software category to understand buyer priorities and satisfaction drivers.
- **Content & social proof** — collect verified testimonials and rating data for landing pages, case studies, and reports.

***

### 🛠️ Advanced Tips

- **Proxies:** Residential proxies give the highest success rate against Cloudflare. Datacenter IPs work occasionally but are blocked more often.
- **Run timeout:** Allow generous time — the anti-bot bypass adds a warm-up per product before fast pagination begins. A timeout of **15 minutes or more** is recommended for large products.
- **Batching:** You can pass many product URLs in one run, but for very large jobs, splitting them across scheduled runs keeps each run short and easy to monitor.
- **Scheduling:** Use Apify **Schedules** for hands-off weekly or daily monitoring, paired with `targetDate` for efficient incremental collection.
- **Integrations:** Every run's dataset is available via the [Apify API](https://docs.apify.com/api/v2), webhooks, and native connectors for Make, Zapier, and n8n.

***

### ❓ FAQ & Troubleshooting

**Is scraping Software Advice reviews legal?**
The Actor collects only **publicly available** review data. As with any scraping, use the data responsibly, respect the platform's terms, and avoid collecting personal data beyond what's needed. You are responsible for how you use the output.

**The run returned few or no reviews — what happened?**
Almost always a proxy issue. Enable **Residential** proxies and try again. If a product genuinely has few reviews, that's expected — check `reviewCount` in the output.

**Why do I need proxies?**
Software Advice uses Cloudflare bot protection. Residential proxies let the Actor earn a legitimate browser clearance and avoid blocks. Without good proxies, requests are far more likely to be rejected.

**Can I scrape more than one product at a time?**
Yes — add multiple URLs to `startUrls`. Each becomes its own dataset record.

**How many reviews can it collect?**
By default, all of them. Use `maxReviews` to cap the count per product if you only need a sample.

**Some review text has odd characters (like `â€™`).**
That's a data-quality quirk in Software Advice's own stored reviews (the same text appears that way on their live site). The Actor returns the data faithfully. You can clean it downstream if needed.

**Which URL should I use?**
Either the product page (`…/apify-profile/`) or the reviews page (`…/apify-profile/reviews/`). Both are accepted.

***

### 📞 Support

Questions, feature requests, or found a bug? I'd love to hear from you.

- 📧 [**Email:**](mailto:me@ahmedhrid.com)
- 🐛 **Issues:** Report problems (with your input and run ID) via the Actor's **Issues** tab on the Apify Store.

If you report an issue, please include the product URL you used and your run ID — it makes fixing things much faster.

***

#### Related keywords

Software Advice scraper, Software Advice reviews scraper, web scraping, Apify actor, review scraping, B2B software reviews, Capterra reviews, GetApp reviews, competitor analysis, sentiment analysis, lead research, data extraction, export reviews to CSV / JSON / Excel.

# Actor input Schema

## `startUrls` (type: `array`):

Software Advice product URLs to scrape. Accepts both the product page (…/<category>/<seoId>-<slug>-profile/) and the reviews page (…/reviews/).

## `maxReviews` (type: `integer`):

Maximum number of reviews to scrape per product URL. 0 means no limit (all reviews).

## `targetDate` (type: `string`):

Only keep reviews written on or after this date (ISO 8601, e.g. 2025-01-01). Useful for incremental runs. Note: Software Advice sorts by completeness, not date, so all pages are still fetched — reviews older than this are filtered out.

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

Residential proxy is recommended — the same session is shared between the Cloudflare bypass browser and all subsequent fetch requests, so the clearance cookie stays valid.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.softwareadvice.com/accounting/stax-bill-profile/reviews/"
    }
  ],
  "maxReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Each record contains product info (name, rating, reviewCount, category, logoUrl, sub-rating averages) and a reviews array with title, date, rating, sub-ratings (Ease of Use, Functionality, Value for Money, Customer Support), reviewBody, pros, cons, reasons for choosing/switching, vendor reply, and reviewer details (name, industry, company size, usage duration).

# 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 = {
    "startUrls": [
        {
            "url": "https://www.softwareadvice.com/accounting/stax-bill-profile/reviews/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("reviewly/softwareadvice-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 = {
    "startUrls": [{ "url": "https://www.softwareadvice.com/accounting/stax-bill-profile/reviews/" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("reviewly/softwareadvice-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 '{
  "startUrls": [
    {
      "url": "https://www.softwareadvice.com/accounting/stax-bill-profile/reviews/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call reviewly/softwareadvice-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Softwareadvice Reviews Scraper",
        "description": "Scrapes verified reviews from any Software Advice product page. Extracts ratings, pros/cons, reviewer profiles, sub-scores, and product metadata — with automatic Cloudflare bypass",
        "version": "0.0",
        "x-build-id": "aYvD3wjKSUTF1cfBe"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/reviewly~softwareadvice-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-reviewly-softwareadvice-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/reviewly~softwareadvice-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-reviewly-softwareadvice-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/reviewly~softwareadvice-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-reviewly-softwareadvice-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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Software Advice product URLs to scrape. Accepts both the product page (…/<category>/<seoId>-<slug>-profile/) and the reviews page (…/reviews/).",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per product",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of reviews to scrape per product URL. 0 means no limit (all reviews).",
                        "default": 0
                    },
                    "targetDate": {
                        "title": "Target date",
                        "type": "string",
                        "description": "Only keep reviews written on or after this date (ISO 8601, e.g. 2025-01-01). Useful for incremental runs. Note: Software Advice sorts by completeness, not date, so all pages are still fetched — reviews older than this are filtered out."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Residential proxy is recommended — the same session is shared between the Cloudflare bypass browser and all subsequent fetch requests, so the clearance cookie stays valid."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
