Scrape product reviews from G2, Capterra, and Trustpilot using platform-specific Apify actors.
Quick Start
Requires APIFY_API_TOKEN env var (or --token flag). No external dependencies needed (uses stdlib urllib).
# Trustpilot reviews
python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py \
--platform trustpilot \
--url "https://www.trustpilot.com/review/example.com" \
--max-reviews 10 --output summary
G2 reviews with keyword filter
python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py
--platform g2
--url "https://www.g2.com/products/example/reviews"
--keywords "pricing,support"
python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py
--platform capterra
--company-name "HubSpot CRM"
--max-reviews 20
## Supported Platforms
| Platform | Actor | Input | Cost |
|----------|-------|-------|------|
| G2 | `focused_vanguard/g2-reviews-scraper` | `--url` (G2 product page URL) | Free tier available |
| Capterra | `getdataforme/capterra-reviews-scraper-bulk` | `--company-name` (company name, not a URL) | Pay-per-result |
| Trustpilot | `agents/trustpilot-reviews` | `--url` (Trustpilot review page URL) | ~$0.20/1k reviews |
## CLI Reference
| Flag | Default | Description |
|------|---------|-------------|
| `--platform` | *required* | `g2`, `capterra`, or `trustpilot` |
| `--url` | none | Product review page URL (required for G2 and Trustpilot) |
| `--company-name` | none | Company name to search (Capterra only) |
| `--max-reviews` | 50 | Max reviews to scrape |
| `--keywords` | none | Keywords to filter (comma-separated, OR logic) |
| `--days` | none | Only include reviews from last N days |
| `--output` | json | Output format: `json` or `summary` |
| `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) |
| `--timeout` | 300 | Max seconds for Apify run |
## Normalized Output Schema
All platforms are normalized but each has platform-specific fields.
**G2 output fields:**
```json
{
"platform": "g2",
"id": "review-id",
"product_name": "Product Name",
"title": null,
"text": "Review body text",
"rating": 4,
"author": "Reviewer Name",
"author_title": "Job Title",
"author_company": "Company Name",
"author_company_size": "51-200",
"author_industry": "Software",
"date": "2026-02-18",
"source": "organic",
"url": "https://..."
}
Capterra output fields:
{
"platform": "capterra",
"title": "Review title",
"text": "Review body text",
"overall_rating": 4,
"ease_of_use": 5,
"customer_service": 3,
"features": 4,
"author": "Reviewer Name",
"job_title": "Marketing Manager",
"industry": "Marketing and Advertising",
"usage_duration": "1-2 years",
"date": "2026-02-18",
"url": "https://..."
}
Trustpilot output fields:
{
"platform": "trustpilot",
"id": "review-id",
"title": "Review title",
"text": "Review body text",
"rating": 4,
"author": "Reviewer Name",
"date": "2026-02-18T12:00:00.000Z",
"experienced_date": "2026-02-15T00:00:00.000Z",
"likes": 2,
"input_source": "organic",
"url": "https://..."
}