G2 Reviews Monitor - Latest Reviews & Alerts avatar

G2 Reviews Monitor - Latest Reviews & Alerts

Pricing

$10.00 / 1,000 product checkeds

Go to Apify Store
G2 Reviews Monitor - Latest Reviews & Alerts

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

Constantine

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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 - latest emits all current RSS reviews; new-since-last emits only IDs not in knownReviewIds.
  • 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

CodeMeaning
INVALID_PRODUCTThe input could not be normalized to a G2 product slug.
PRODUCT_NOT_FOUNDG2 returned 404 after redirects.
BLOCKEDG2 returned 403 or Cloudflare/WAF markers.
RATE_LIMITEDG2 returned 429.
RSS_PARSE_FAILEDThe RSS body was empty or malformed.
FETCH_FAILEDNetwork 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.