G2 API: Get product reviews
Gets the newest public G2 reviews for a software product, with reviewer details and review text, plus the product's overall rating and review count when G2's profile shows them. The public feed exposes up to 25 recent reviews.
Unofficial. Not affiliated with or endorsed by G2.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Software, required
software Software product name, for example Slack, or a G2 product URL.
Notion
- Max Results optional
max_results Maximum number of reviews to return, for example 10; the feed currently exposes up to 25.
35
Whole number from 1 to 50. Default
10.
Input as JSON
{ "software": "Notion", "max_results": 35}Output
{ "reviews": [ { "date": "2026-09-28", "likes": "With Databases, Relations, and Rollups, we can connect RFCs, projects, tasks, incidents, and technical documentation without having to copy the same context into multiple places. A task can point back to its project, a decision can link to the RFC that explains it, and rollups can surface status or …", "stars": 4.5, "title": "Database Buttons and Rollups helped us turn RFCs into a clearer review workflow", "dislikes": "Notion’s automation layer has some limits that start to show once a workflow becomes more complex. For example, one automation can’t directly trigger another. That does help prevent accidental loops, but it also means certain processes have to be redesigned or handled outside of Notion. Over time, w…", "industry": "Information Technology and Services", "review_link": "https://www.g2.com/products/notion/reviews/notion-review-13637996" , "company_size": "Mid-Market (201-500 emp.)", "reviewer_role": "User" }, { "date": "2026-09-28", "likes": "I love that Notion keeps me organized and makes collaboration across the organization seamless. Working in marketing, collaboration is key and Notion helps our team deliver adequate creatives on time and without stress.", "stars": 5, "title": "Notion Keeps Us Organized and Makes Marketing Collaboration Seamless", "dislikes": "The only thing I dislike is feeling like my dashboard and pages aren't cutesy enough.", "industry": null, "review_link": "https://www.g2.com/products/notion/reviews/notion-review-13633698" , "company_size": "Mid-Market (51-200 emp.)", "reviewer_role": "User" }, { "date": "2026-09-28", "likes": "Allows me to take notes and structure them neatly", "stars": 5, "title": "Neat, Structured Note-Taking That Just Works", "dislikes": "The voice memo function can be laggy and doesn’t transcript while talking", "industry": "Information Technology and Services", "review_link": "https://www.g2.com/products/notion/reviews/notion-review-13629185" , "company_size": "Mid-Market (201-500 emp.)", "reviewer_role": "User" } ], "software": "Notion", "page_link": "https://www.g2.com/products/notion/reviews" , "star_rating": 4.6, "review_count": 13834}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"g2.com/get_product_reviews","input":{"software":"Notion","max_results":35}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "g2.com/get_product_reviews" , "input": { "software": "Notion", "max_results": 35 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "g2.com/get_product_reviews" , "input": { "software": "Notion", "max_results": 35 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run g2.com/get_product_reviews# with {"software":"Notion","max_results":35}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "software" ], "properties": { "software": { "type": "string", "minLength": 1, "description": "Software product name, for example Slack, or a G2 product URL." }, "max_results": { "type": "integer", "default": 10, "maximum": 50, "minimum": 1, "description": "Maximum number of reviews to return, for example 10; the feed currently exposes up to 25." } }}Output schema
{ "type": "object", "required": [ "software", "star_rating", "review_count", "page_link", "reviews" ], "properties": { "reviews": { "type": "array", "items": { "type": "object", "required": [ "reviewer_role", "company_size", "industry", "stars", "title", "likes", "dislikes", "date", "review_link" ], "properties": { "date": { "type": [ "string", "null" ], "format": "date" }, "likes": { "type": [ "string", "null" ] }, "stars": { "type": [ "number", "null" ] }, "title": { "type": [ "string", "null" ] }, "dislikes": { "type": [ "string", "null" ] }, "industry": { "type": [ "string", "null" ] }, "review_link": { "type": "string" }, "company_size": { "type": [ "string", "null" ] }, "reviewer_role": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "software": { "type": "string", "description": "Name shown by G2." }, "page_link": { "type": "string", "description": "G2 product reviews page." }, "star_rating": { "type": [ "number", "null" ], "description": "Overall product stars out of five, if shown on the public G2 product profile." }, "review_count": { "type": [ "integer", "null" ], "description": "Overall number of product reviews, if shown on the public G2 product profile." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
g2.com/get_product_reviews- Returns
- software name, star rating, review count, page link, reviews (role, company size, industry, stars, title, likes, dislikes, date, link)
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method g2.com/get_product_reviews with the inputs above.
Ask your agent
- Pull the 10 most recent G2 reviews for Notion, including what reviewers liked and disliked
- What are people saying lately about HubSpot CRM? Give me the latest user reviews with reviewer role and company size
- I need the overall star rating, total review count, and the 25 newest reviews for Asana
- Show me 5 recent reviews of Zoom from g2.com/products/zoom-workplace so I can check complaints from mid-market users
- Grab the latest 15 user reviews of Monday.com with titles, dates, and links to each review
See more
All G2 methodsCompare two to four G2 software products in your chosen order, with ratings, review counts, pricing, trial availability, and category scores. Pricing and individual scores may be unavailable when G2 does not show them.
g2.com/compare_productsFinds a software product on Capterra by name and returns its ratings, starting price, free version and free trial flags, and the most recent user reviews. Vendor and some review details may be missing from listings.
capterra.com/get_software_reviewsReads recent public Trustpilot reviews for a company by name, website or Trustpilot link, in every language, with its TrustScore, ratings, reviewer details and company replies. Reviews follow the chosen sort (most recent or most relevant) and star filters, starting from a chosen results page.
trustpilot.com/get_company_reviewsFinds a Sephora US product by name or Sephora link and returns its review summary and customer reviews, sorted and optionally filtered by skin type.
sephora.com/get_product_reviewsGets public user reviews for an Android app on Google Play. The app can be given by name, Play Store link, or app ID.
play.google.com/get_app_reviewsGets customer reviews for an iPhone or iPad app, found by name or App Store link, from the selected country's App Store.
apps.apple.com/get_app_reviewsFinds Product Hunt products by name or by what they do, in Product Hunt search order, with tagline, review rating, review count, followers and topics. Ratings are null for products without reviews.
producthunt.com/search_productsGets the latest traveler reviews for a hotel, restaurant or attraction in a city (by name or Tripadvisor listing link), with the place's overall rating and review count. Dates of visit show the month and year when provided.
tripadvisor.com/get_reviews