Review site scraper

Scrape product reviews from G2, Capterra, and Trustpilot using Apify.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit gooseworks-ai/goose-skills/skills/monitoring/capabilities/review-site-scraper#main ~/.claude/skills/review-site-scraper

For one project only, change the path to .claude/skills/review-site-scraper.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text121 lines
review-site-scraper/SKILL.md121 lines3.4 KBpushed 96d agoRawView on GitHub

Review Site Scraper

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"

# Capterra reviews (uses company name, not URL)
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:

{
  "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://..."
}
1---
2name: review-site-scraper
3description: >
4 Scrape product reviews from G2, Capterra, and Trustpilot using Apify.
5 Single script with platform dispatch. Use when you need to monitor competitor
6 reviews, track product sentiment, or gather customer feedback from review sites.
7---
8 
9# Review Site Scraper
10 
11Scrape product reviews from G2, Capterra, and Trustpilot using platform-specific Apify actors.
12 
13## Quick Start
14 
15Requires `APIFY_API_TOKEN` env var (or `--token` flag). No external dependencies needed (uses stdlib `urllib`).
16 
17```bash
18# Trustpilot reviews
19python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py \
20 --platform trustpilot \
21 --url "https://www.trustpilot.com/review/example.com" \
22 --max-reviews 10 --output summary
23 
24# G2 reviews with keyword filter
25python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py \
26 --platform g2 \
27 --url "https://www.g2.com/products/example/reviews" \
28 --keywords "pricing,support"
29 
30# Capterra reviews (uses company name, not URL)
31python3 skills/capabilities/review-site-scraper/scripts/scrape_reviews.py \
32 --platform capterra \
33 --company-name "HubSpot CRM" \
34 --max-reviews 20
35```
36 
37## Supported Platforms
38 
39| Platform | Actor | Input | Cost |
40|----------|-------|-------|------|
41| G2 | `focused_vanguard/g2-reviews-scraper` | `--url` (G2 product page URL) | Free tier available |
42| Capterra | `getdataforme/capterra-reviews-scraper-bulk` | `--company-name` (company name, not a URL) | Pay-per-result |
43| Trustpilot | `agents/trustpilot-reviews` | `--url` (Trustpilot review page URL) | ~$0.20/1k reviews |
44 
45## CLI Reference
46 
47| Flag | Default | Description |
48|------|---------|-------------|
49| `--platform` | *required* | `g2`, `capterra`, or `trustpilot` |
50| `--url` | none | Product review page URL (required for G2 and Trustpilot) |
51| `--company-name` | none | Company name to search (Capterra only) |
52| `--max-reviews` | 50 | Max reviews to scrape |
53| `--keywords` | none | Keywords to filter (comma-separated, OR logic) |
54| `--days` | none | Only include reviews from last N days |
55| `--output` | json | Output format: `json` or `summary` |
56| `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) |
57| `--timeout` | 300 | Max seconds for Apify run |
58 
59## Normalized Output Schema
60 
61All platforms are normalized but each has platform-specific fields.
62 
63**G2 output fields:**
64 
65```json
66{
67 "platform": "g2",
68 "id": "review-id",
69 "product_name": "Product Name",
70 "title": null,
71 "text": "Review body text",
72 "rating": 4,
73 "author": "Reviewer Name",
74 "author_title": "Job Title",
75 "author_company": "Company Name",
76 "author_company_size": "51-200",
77 "author_industry": "Software",
78 "date": "2026-02-18",
79 "source": "organic",
80 "url": "https://..."
81}
82```
83 
84**Capterra output fields:**
85 
86```json
87{
88 "platform": "capterra",
89 "title": "Review title",
90 "text": "Review body text",
91 "overall_rating": 4,
92 "ease_of_use": 5,
93 "customer_service": 3,
94 "features": 4,
95 "author": "Reviewer Name",
96 "job_title": "Marketing Manager",
97 "industry": "Marketing and Advertising",
98 "usage_duration": "1-2 years",
99 "date": "2026-02-18",
100 "url": "https://..."
101}
102```
103 
104**Trustpilot output fields:**
105 
106```json
107{
108 "platform": "trustpilot",
109 "id": "review-id",
110 "title": "Review title",
111 "text": "Review body text",
112 "rating": 4,
113 "author": "Reviewer Name",
114 "date": "2026-02-18T12:00:00.000Z",
115 "experienced_date": "2026-02-15T00:00:00.000Z",
116 "likes": 2,
117 "input_source": "organic",
118 "url": "https://..."
119}
120```
121 

Discussion

Alternatives

Also in Company & contact data