G2 APIg2.com ↗
Access G2.com software products, user reviews, pricing plans, and categories via API. Search by name, browse by category, and retrieve paginated reviews.
What is the G2 API?
The G2.com API exposes 6 endpoints covering software product discovery, category browsing, user reviews, and pricing data sourced from G2's catalog of thousands of products. Use search_software to find products by name or keyword, get_product_reviews to pull paginated review text with author, rating, and structured feedback fields, or get_product_pricing to retrieve plan-level pricing details for any product slug.
curl -X GET 'https://api.parse.bot/scraper/cd773381-055d-4f08-8800-b29ca4edaa55/search_software?query=slack' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace g2-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: G2 Software Reviews SDK — search products, browse categories, read reviews and pricing."""
from parse_apis.g2_software_reviews_api import G2, StarRating, ProductNotFound
client = G2()
# Search for products by keyword — limit caps total items fetched.
for product in client.products.search(query="project management", limit=5):
print(product.name, product.rating, product.review_count)
# Drill into a single product by slug for full details.
slack = client.products.get(slug="slack")
print(slack.name, slack.description[:80], slack.rating)
# Read reviews for the product, filtered by star rating.
for review in slack.reviews.list(star_rating=StarRating._5, limit=3):
print(review.author, review.date, review.likes[:60])
# Get pricing plans for the product.
for plan in slack.pricing.list(limit=4):
print(plan.name, plan.price, len(plan.features), "features")
# Browse categories and list products in one.
category = client.categories.list(limit=1).first()
if category:
for prod in category.products(limit=3):
print(prod.name, prod.rating)
# Typed error handling for a nonexistent product.
try:
client.products.get(slug="nonexistent-product-xyz-12345")
except ProductNotFound as exc:
print(f"Product not found: {exc.slug}")
print("exercised: products.search / products.get / reviews.list / pricing.list / categories.list / category.products")
Full-text search over G2's software product catalog. Returns matching products with name, slug, rating, review count, and description. Brand-name queries (e.g. 'slack') return detailed results with descriptions; category-style queries (e.g. 'project management') return products listed in that category. Results are returned in a single page.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword or query string (e.g. 'slack', 'hubspot', 'project management') |
{
"type": "object",
"fields": {
"total": "integer total number of products returned",
"products": "array of product objects with name, slug, rating, review_count, and description"
},
"sample": {
"data": {
"total": 20,
"products": [
{
"name": "Slack",
"slug": "slack",
"rating": 4.5,
"description": "Slack brings all your communication together in one place.",
"review_count": 39089
}
]
},
"status": "success"
}
}About the G2 API
Product Search and Category Browsing
The search_software endpoint accepts a query string and returns an array of product objects, each containing name, slug, rating, review_count, and description. Brand-name queries like slack return richer descriptions; category-style queries like project management return a broader product list. To browse by taxonomy, get_categories returns the full G2 category tree in a single response — every category includes a name, slug, and url. Pass any category slug to get_category_products to list products within that category, with pagination supported via a page integer parameter; each page returns approximately 15 products.
Product Details and Pricing
The get_product_overview endpoint takes a product slug (obtained from search or category results) and returns name, description, rating out of 5, review_count, logo_url, and vendor_id. Pricing is available through get_product_pricing, which returns an array of plan objects — each with name, price, period, description, and a features list. Not all G2 products publish pricing information, so plans may be an empty array for some slugs.
Reviews
The get_product_reviews endpoint returns paginated reviews for a given slug. Each review object includes author, designation, segment (company size tier), title, date, rating, likes, dislikes, and problems_solved. An optional star_rating parameter (1–5) filters reviews by score, making it straightforward to isolate negative or top-rated feedback for a given product.
The G2 API is a managed, monitored endpoint for g2.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when g2.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official g2.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a software comparison tool using
rating,review_count, anddescriptionfields fromsearch_software - Aggregate user sentiment by extracting
likes,dislikes, andproblems_solvedfields fromget_product_reviews - Populate a vendor database with product slugs and
vendor_idvalues fromget_product_overview - Track pricing tier structures across competitors using
get_product_pricingplan objects - Map the G2 software taxonomy by pulling the full category list via
get_categories - Filter low-rated reviews using the
star_ratingparameter inget_product_reviewsto surface recurring complaints - Enumerate products in a niche vertical by paginating through
get_category_productswith a specificcategory_slug
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does G2 have an official public developer API?+
What does `get_product_reviews` return, and can I filter by reviewer company size?+
author, designation, segment, title, date, rating, likes, dislikes, and problems_solved. The segment field reflects the company-size tier the reviewer belongs to. You can filter reviews by star_rating (1–5), but there is no direct parameter to filter by segment. You can apply that filter client-side on the returned array.Is verified-purchase or source-badge data included in reviews?+
get_product_reviews response currently includes author, designation, segment, rating, and structured feedback text, but does not expose G2's reviewer verification badges or LinkedIn-linked profile data. You can fork this API on Parse and revise it to add the missing fields if that data is present in the source response.Does the API return historical rating trends or only current aggregate ratings?+
rating and review_count snapshot for each product via get_product_overview and search_software. Historical rating timeseries are not currently exposed. You can fork the API on Parse and revise it to add a time-series endpoint if that level of tracking is needed.How does pagination work in `get_category_products`?+
page parameter to get_category_products alongside a required category_slug. Each page returns approximately 15 product objects with name, slug, rating, and review_count. The response includes the current page number but does not include a total product count or total page count for the category, so you will need to paginate until an empty or undersized result is returned.