# SoftwareAdvice Reviews Scraper (`solidcode/softwareadvice-scraper`) Actor

\[💰 $3.0 / 1K] Extract software products and user reviews from SoftwareAdvice: product name, vendor, category, rating, plus full reviews (rating, pros, cons, role, industry, date) as separate rows. Find products by company domain, search term, or URL. Great for product and competitor research.

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

## Pricing

from $3.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## SoftwareAdvice Reviews Scraper

Pull software products and their full user reviews from SoftwareAdvice (a Gartner Digital Markets directory) at scale — product name, vendor, category, overall rating, total review count, plus every review with its overall star rating, pros, cons, and reviewer firmographics. Products and reviews come back as separate, ready-to-join rows. Built for competitive-intelligence teams, product marketers, and SaaS founders who need structured voice-of-customer review data without copy-pasting B2B software profiles one page at a time.

### Why This Scraper?

- **Dual product + review output in one run** — every run returns `product` rows (the software listing) and `review` rows (each user review), linked by `productName` and `productUrl` so you can join them straight into a CRM, BI tool, or warehouse.
- **Reviewer firmographics on every review** — company size (9 bands from Self-Employed to 10,000+ employees), industry, and time-used, so you can segment voice-of-customer feedback by the kind of buyer who wrote it.
- **Pros and cons split into separate fields** — `pros`, `cons`, and full general comments arrive as distinct columns, ready for sentiment analysis without parsing one blob of free text.
- **Per-review star rating plus product-level aggregates** — each review carries its own overall star rating, and each product carries its overall rating and total review count from SoftwareAdvice's own aggregate.
- **Three ways to target software** — paste SoftwareAdvice URLs, enter company website domains (e.g. `postman.com`, auto-resolved to the matching product page), or run free-text category searches like "CRM" or "project management".
- **Domain-to-product auto-resolution** — give a company's website domain and the actor finds its SoftwareAdvice product page for you, and reports a clean no-match rather than silently grabbing the wrong software.
- **Recency filtering on reviews** — set a "from" date (YYYY-MM-DD) to collect only reviews published on or after it, ideal for tracking sentiment since a product launch or release.
- **Per-product review caps to control cost** — popular B2B software can have thousands of reviews; cap how many you collect per product (most recent first) or turn reviews off entirely for a fast product-only run.
- **Pay-per-result split pricing** — products and reviews are billed separately, so pulling every review on a heavily-reviewed product never balloons a single fixed price.

### Use Cases

**Competitive Intelligence**
- Track what real users praise and criticize about a competitor's software
- Monitor a rival's overall rating and review volume over time
- Compare pros and cons across a shortlist of competing products

**Product Marketing**
- Mine pros and cons for messaging, testimonials, and battlecards
- Surface the features customers mention most for positioning
- Quote real reviewer language (by industry and company size) in campaigns

**Voice of Customer & Sentiment Analysis**
- Run sentiment analysis on full review text, pros, and cons at scale
- Segment feedback by company size and industry to find your best-fit buyer
- Detect emerging complaints or praise themes since a specific date

**Lead Generation & Market Research**
- Build lists of software products in a category with ratings and review counts
- Size a market by how many products and reviews exist per category
- Identify high-rated, high-volume products worth partnering with or targeting

**Analytics & Data Platforms**
- Feed a review dataset into a BI dashboard or data warehouse
- Keep an internal software-comparison database current with fresh reviews
- Benchmark your own product's rating against category peers

### Getting Started

#### Simple — one company by domain

Resolve a company's website domain to its SoftwareAdvice product page and pull all its reviews.

```json
{
    "domains": ["postman.com"]
}
````

#### Search — products in a category

Run a free-text search and collect the matching products plus their reviews.

```json
{
    "searchQueries": ["CRM"],
    "maxResults": 25,
    "maxReviewsPerProduct": 100
}
```

#### Advanced — recent reviews, capped, from URLs

Target exact products by URL and collect only recent reviews, capped per product.

```json
{
    "startUrls": [
        "https://www.softwareadvice.com/crm/salesforce-profile/reviews/",
        "https://www.softwareadvice.com/project-management/asana-profile/reviews/"
    ],
    "maxReviewsPerProduct": 50,
    "reviewsStartDate": "2024-01-01"
}
```

#### Product-only — no reviews

Turn reviews off for a fast, cheap run that returns only product and vendor details.

```json
{
    "searchQueries": ["project management"],
    "includeReviews": false,
    "maxResults": 50
}
```

### Input Reference

#### What to Scrape

Pick any combination of URLs, company domains, or search terms. Leave everything blank to scrape the example products.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | SoftwareAdvice URLs — product pages, product review pages, or category/search result pages. The most precise way to target exactly the products you want. |
| `domains` | array | `["postman.com"]` | Company website domains (e.g. `postman.com`, `salesforce.com`). Each is matched to its SoftwareAdvice product page automatically — no manual lookup. |
| `searchQueries` | array | `[]` | Free-text product or category searches (e.g. `CRM`, `project management`, `Slack`). Each term returns its matching products. |

#### Reviews

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeReviews` | boolean | `true` | Collect each product's user reviews (rating, pros, cons, reviewer details, date). Turn off for faster, cheaper product-only runs. |
| `maxReviewsPerProduct` | integer | `0` | Cap reviews captured per product (most recent first). `0` = all reviews, up to a safety ceiling of 5,000 per product. Ignored when reviews are off. |
| `reviewsStartDate` | string | `null` | Only collect reviews published on or after this date (`YYYY-MM-DD`). Blank collects all reviews regardless of date. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Cap on total products collected across all URLs, domains, and search terms. `0` = no cap. |

### Output

Results come back as two record types in one dataset. Each row carries a `recordType` field: `product` rows are the software listings, and `review` rows are individual user reviews linked back to their product. Use the **Products** and **Reviews** dataset views to see each on its own.

#### Product

```json
{
    "recordType": "product",
    "productName": "Postman",
    "vendor": "Postman, Inc.",
    "category": "API Management Software",
    "overallRating": 4.62,
    "totalReviewCount": 510,
    "ratingDistribution": null,
    "startingPrice": null,
    "website": "https://www.postman.com",
    "description": "Postman is an API platform for building and using APIs...",
    "logoUrl": "https://www.softwareadvice.com/imglib/.../postman-logo.png",
    "sourceDomain": "postman.com",
    "productUrl": "https://www.softwareadvice.com/product/123456-Postman/reviews/",
    "scrapedAt": "2026-06-27T09:31:00Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"product"` for these rows |
| `productName` | string | Software product display name |
| `vendor` | string | Vendor / company name (often `null` — SoftwareAdvice does not always list a distinct vendor) |
| `category` | string | Primary software category |
| `overallRating` | number | Overall rating from SoftwareAdvice's aggregate (0–5) |
| `totalReviewCount` | integer | Total number of reviews SoftwareAdvice reports for the product |
| `ratingDistribution` | object | Star-breakdown when published; usually `null` |
| `startingPrice` | string | Starting price when published; usually `null` |
| `website` | string | The product's official website, when available |
| `description` | string | Product description |
| `logoUrl` | string | Product logo image URL |
| `sourceDomain` | string | The input domain this product resolved from, when entered by domain |
| `productUrl` | string | SoftwareAdvice reviews-page URL for the product |
| `scrapedAt` | string | ISO-8601 collection timestamp |

#### Review

```json
{
    "recordType": "review",
    "productName": "Postman",
    "productUrl": "https://www.softwareadvice.com/product/123456-Postman/reviews/",
    "reviewId": "rv_98765",
    "title": "Indispensable for our API team",
    "rating": 5,
    "pros": "Collections and environments make testing painless across the whole team.",
    "cons": "The desktop app can get heavy with very large workspaces.",
    "reviewText": "We adopted Postman two years ago and it has become central to how we ship APIs...",
    "reviewerName": "Jane D.",
    "reviewerRole": null,
    "reviewerIndustry": "Information Technology and Services",
    "companySize": "51-200 employees",
    "usedFor": "More than 2 years",
    "date": "2025-11-14",
    "scrapedAt": "2026-06-27T09:31:00Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"review"` for these rows |
| `productName` | string | Links back to the parent product's `productName` |
| `productUrl` | string | Links back to the parent product's `productUrl` |
| `reviewId` | string | SoftwareAdvice's unique review identifier |
| `title` | string | Review headline |
| `rating` | number | This review's overall star rating (0–5) |
| `pros` | string | What the reviewer liked |
| `cons` | string | What the reviewer disliked |
| `reviewText` | string | Full general-comments body |
| `reviewerName` | string | Reviewer display name |
| `reviewerRole` | string | Reviewer job title when published; usually `null` |
| `reviewerIndustry` | string | Reviewer's industry |
| `companySize` | string | Reviewer's company size band (e.g. `"51-200 employees"`) |
| `usedFor` | string | How long the reviewer has used the product (e.g. `"More than 2 years"`) |
| `date` | string | Review publication date (ISO format) |
| `scrapedAt` | string | ISO-8601 collection timestamp |

### Tips for Best Results

- **Reviews are returned newest-first.** Use `reviewsStartDate` to grab only recent feedback, and `maxReviewsPerProduct` to keep cost predictable on heavily-reviewed software.
- **Pasting a `…/reviews/` URL is the most precise target** — it skips search and goes straight to the exact product you want.
- **Enter a company's website domain, not its brand name, in `domains`** — `postman.com` resolves reliably, and an ambiguous domain returns a clean no-match instead of the wrong product.
- **Turn off `includeReviews` for a quick product census** — you'll get every product's name, category, rating, and total review count without paying for individual reviews.
- **`reviewsStartDate` filters most efficiently on recent windows.** Because reviews are collected newest-first, an older cutoff means more pages are scanned — set a recent date when you only need the latest sentiment.
- **Use search terms for category sweeps** and `startUrls` for a known shortlist — combine both in one run to cover a market and your watchlist at once.
- **`vendor`, `startingPrice`, and `ratingDistribution` may be `null`** — SoftwareAdvice doesn't publish these on every product, so treat them as optional in your pipeline.

### Pricing

**From $0.50 per 1,000 reviews** (plus $3.00 per 1,000 products) at the Gold tier — a transparent, results-based price for a fully structured software review dataset. You are charged per product plus per review collected, so review-heavy products never blow up a single fixed price.

#### Price per event by discount tier

| Event | No discount | Bronze | Silver | Gold |
|-------|-------------|--------|--------|------|
| Product (per 1,000) | $3.55 | $3.35 | $3.20 | $3.00 |
| Review (per 1,000) | $0.59 | $0.55 | $0.53 | $0.50 |

#### Example run cost (Gold tier)

| Scenario | Products | Reviews | Approx. total |
|----------|----------|---------|---------------|
| Quick watchlist | 10 × 100 reviews | 1,000 | ≈ $0.53 |
| Category sweep | 100 × 80 reviews | 8,000 | ≈ $4.30 |
| Large dataset | 1,000 × 50 reviews | 50,000 | ≈ $28.00 |

*Totals cover products plus reviews; a small fixed per-run start fee (about $0.005) applies on top.*

**No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.** Charged per software product plus per review collected. Bronze, Silver, and Gold loyalty discounts apply automatically on the Apify platform, so larger and longer-term usage costs progressively less.

### Integrations

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

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available information from SoftwareAdvice. Use it responsibly and in compliance with SoftwareAdvice's terms of service and all applicable laws, including data-protection regulations such as the GDPR and CCPA. Personal data contained in reviews and reviewer profiles must be handled lawfully — obtain a valid legal basis before processing, and respect the rights of the individuals concerned. You are responsible for how you use the collected data; do not use it for spam, harassment, or any unlawful purpose.

# Actor input Schema

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

Paste one or more SoftwareAdvice URLs — product pages, product review pages, or category/search result pages. This is the most precise way to scrape exactly the products you want. Leave blank to use the domain or search options below.

## `domains` (type: `array`):

Company website domains, for example postman.com or salesforce.com. Each domain is matched to its SoftwareAdvice product page automatically — no manual lookup needed.

## `searchQueries` (type: `array`):

Free-text product or category searches, for example 'CRM', 'project management', or 'Slack'. Each term returns the matching products from SoftwareAdvice.

## `maxResults` (type: `integer`):

Cap on the total number of products collected across all URLs, domains, and search terms. Default 100. Set to 0 for no cap. The actor stops processing new products once the cap is reached.

## `includeReviews` (type: `boolean`):

Collect each product's user reviews (rating, pros, cons, reviewer details, date). Turn off for faster, cheaper runs that return only product and vendor details with no reviews.

## `maxReviewsPerProduct` (type: `integer`):

Cap on the number of reviews captured per product (most recent first). Default 0 = all reviews, up to a safety ceiling of 5,000 per product. A few very popular products (e.g. Salesforce) have more than 5,000 reviews; collection stops at 5,000 for those and the run log notes it. Set a positive number to limit how many you collect per product and cap your cost. Each review is returned as its own result. Ignored when 'Include Reviews' is off.

## `reviewsStartDate` (type: `string`):

Only collect reviews published on or after this date. Use the format YYYY-MM-DD, for example 2024-01-15. Leave blank to collect all reviews regardless of date.

## Actor input object example

```json
{
  "startUrls": [],
  "domains": [
    "postman.com"
  ],
  "searchQueries": [],
  "maxResults": 100,
  "includeReviews": true,
  "maxReviewsPerProduct": 0
}
```

# Actor output Schema

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

Every record from the run in one place — products and reviews — distinguished by `recordType`.

## `products` (type: `string`):

Products only, with name, vendor, category, overall rating, total review count, and links.

## `reviews` (type: `string`):

User reviews only, linking each review to its product. Present only when 'Include Reviews' is enabled.

# 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": [],
    "domains": [
        "postman.com"
    ],
    "searchQueries": [],
    "maxResults": 100,
    "includeReviews": true,
    "maxReviewsPerProduct": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/softwareadvice-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": [],
    "domains": ["postman.com"],
    "searchQueries": [],
    "maxResults": 100,
    "includeReviews": True,
    "maxReviewsPerProduct": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/softwareadvice-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": [],
  "domains": [
    "postman.com"
  ],
  "searchQueries": [],
  "maxResults": 100,
  "includeReviews": true,
  "maxReviewsPerProduct": 0
}' |
apify call solidcode/softwareadvice-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SoftwareAdvice Reviews Scraper",
        "description": "[💰 $3.0 / 1K] Extract software products and user reviews from SoftwareAdvice: product name, vendor, category, rating, plus full reviews (rating, pros, cons, role, industry, date) as separate rows. Find products by company domain, search term, or URL. Great for product and competitor research.",
        "version": "1.0",
        "x-build-id": "4CH6Sn8yxRf4ew2fQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~softwareadvice-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-softwareadvice-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~softwareadvice-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-softwareadvice-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~softwareadvice-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-softwareadvice-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": {
                    "startUrls": {
                        "title": "SoftwareAdvice URLs",
                        "type": "array",
                        "description": "Paste one or more SoftwareAdvice URLs — product pages, product review pages, or category/search result pages. This is the most precise way to scrape exactly the products you want. Leave blank to use the domain or search options below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domains": {
                        "title": "Company Domains",
                        "type": "array",
                        "description": "Company website domains, for example postman.com or salesforce.com. Each domain is matched to its SoftwareAdvice product page automatically — no manual lookup needed.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQueries": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "Free-text product or category searches, for example 'CRM', 'project management', or 'Slack'. Each term returns the matching products from SoftwareAdvice.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max Products",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the total number of products collected across all URLs, domains, and search terms. Default 100. Set to 0 for no cap. The actor stops processing new products once the cap is reached.",
                        "default": 100
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Collect each product's user reviews (rating, pros, cons, reviewer details, date). Turn off for faster, cheaper runs that return only product and vendor details with no reviews.",
                        "default": true
                    },
                    "maxReviewsPerProduct": {
                        "title": "Max Reviews Per Product",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the number of reviews captured per product (most recent first). Default 0 = all reviews, up to a safety ceiling of 5,000 per product. A few very popular products (e.g. Salesforce) have more than 5,000 reviews; collection stops at 5,000 for those and the run log notes it. Set a positive number to limit how many you collect per product and cap your cost. Each review is returned as its own result. Ignored when 'Include Reviews' is off.",
                        "default": 0
                    },
                    "reviewsStartDate": {
                        "title": "Reviews From Date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Only collect reviews published on or after this date. Use the format YYYY-MM-DD, for example 2024-01-15. Leave blank to collect all reviews regardless of date."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
