G2 Reviews Monitor - Latest Reviews & Alerts
Pricing
$10.00 / 1,000 product checkeds
G2 Reviews Monitor - Latest Reviews & Alerts
Monitor the latest G2 product reviews through public RSS feeds. RSS-only, no browser or proxy, honest partial results, and no charge for failed, blocked, or empty products.
Pricing
$10.00 / 1,000 product checkeds
Rating
0.0
(0)
Developer
Constantine
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Monitor the latest G2 reviews for one or more products through G2's public RSS feed.
This actor is intentionally narrow:
- RSS only: no browser, no proxy, no HTML scraping.
- Latest only: G2 RSS currently exposes about 25 latest reviews per product.
- Honest partial results: one blocked or missing product does not fail the whole run.
- PPE-safe: failed, blocked, invalid, and empty products are free.
What it is for
- Monitor your own G2 product reviews.
- Track competitor review changes.
- Feed recent reviews into LLM/RAG pipelines.
- Send incremental review records to webhooks, Sheets, or downstream actors.
What it is not
This is not a full-history G2 scraper. The verified access path is:
https://www.g2.com/products/{slug}/reviews.rss
The feed has no pagination. ?page=2 returns no useful history. The HTML /reviews page is WAF-blocked and this actor never fetches it.
Input
{"products": ["slack", "https://www.g2.com/products/zoom/reviews"],"mode": "latest","knownReviewIds": [],"maxReviewsPerProduct": 25}
Fields
products- G2 product slugs or full G2 product/reviews URLs. Required. Default:["slack"].mode-latestemits all current RSS reviews;new-since-lastemits only IDs not inknownReviewIds.knownReviewIds- Review IDs you already processed.maxReviewsPerProduct- 1 to 25. G2 RSS currently exposes only about 25 latest reviews.
Output
The default dataset contains one record per review:
{"type": "review","productSlug": "slack","reviewId": "slack-review-123","title": "Great team chat","body": "Fast collaboration and search.","bodyHtml": "<p>Review from Ada L.</p><p>Fast collaboration...</p>","reviewerName": "Ada L.","rating": null,"date": "2026-07-07T10:00:00.000Z","sourceUrl": "https://www.g2.com/products/slack/reviews/slack-review-123"}
It also pushes one run_summary record:
{"type": "run_summary","productsRequested": 2,"productsOk": 1,"productsFailed": 1,"reviewsEmitted": 25,"perProduct": [{ "slug": "slack", "status": "OK", "reviews": 25 },{ "slug": "bad-slug", "status": "FAILED", "reviews": 0, "code": "PRODUCT_NOT_FOUND" }],"durationMs": 1400}
Error codes
| Code | Meaning |
|---|---|
INVALID_PRODUCT | The input could not be normalized to a G2 product slug. |
PRODUCT_NOT_FOUND | G2 returned 404 after redirects. |
BLOCKED | G2 returned 403 or Cloudflare/WAF markers. |
RATE_LIMITED | G2 returned 429. |
RSS_PARSE_FAILED | The RSS body was empty or malformed. |
FETCH_FAILED | Network or unexpected HTTP failure. |
Per-product errors are recorded in run_summary. Only a totally invalid input exits non-zero.
Pricing
Draft PPE event: product-checked at $0.01.
Charged once per product that was successfully fetched and returned at least one emitted review. Failed, blocked, invalid, and empty products are free. Verify Apify Console's average usage cost banner before publishing.
FAQ
Can this fetch all historical G2 reviews?
No. G2 RSS exposes only the latest reviews and has no pagination. This actor is a monitoring/latest-reviews tool.
Does it use a browser or proxy?
No. If RSS becomes blocked from Apify cloud IPs, the actor reports BLOCKED. That is an explicit kill signal for this low-maintenance approach.
Why is rating often null?
The observed RSS feed may not include star rating. The actor keeps rating nullable and only fills it when a rating-like field exists in the feed.
How do I run incremental monitoring?
Store the emitted reviewId values from the previous run and pass them as knownReviewIds with mode set to new-since-last.