G2 API

G2 Reviews API

Pull G2 software reviews for any product: star rating, what reviewers like and dislike, problems solved, market segment, and G2's rating rubric as clean JSON.

POST/v1/run/g2.reviews
Uptime
98.46%
30d · 65 calls
Requests
65
30d · weekly, last 12 wks
Response
5.2s
median · 30d

Try it

Make your first request

requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `productSlug`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Open in
Get a free key
Sample response
Free runs return only the first 3 results. Fund a key to get the full response.
{
  "data": {
    "items": [
      {
        "author": "Alex Rivera",
        "authorCountry": "Alex Rivera",
        "createdUtc": 12.5,
        "dislikes": "example",
        "helpfulVotes": 42,
        "id": "a1b2c3d4",
        "likes": "example",
        "marketSegment": "example",
        "nps": 42,
        "problemsSolved": "example",
        "productName": "Example title",
        "productSlug": "alex_rivera",
        "rating": 4.6,
        "ratings": {
          "easeOfAdmin": 42,
          "easeOfDoingBusinessWith": 42,
          "easeOfSetup": 42,
          "easeOfUse": 42,
          "meetsRequirements": 42,
          "qualityOfSupport": 42
        },
        "responseType": "general",
        "reviewSource": "https://example.com/page",
        "switchedFrom": true,
        "title": "Example title",
        "url": "https://example.com/page"
      }
    ]
  },
  "found": true
}
Response interface
interface G2ReviewsResponse {
  data: {
    items: {
      author?: string;
      authorCountry?: string;
      createdUtc?: number;
      dislikes?: string;
      helpfulVotes?: number;
      id: string;
      likes?: string;
      marketSegment?: string;
      nps?: number;
      problemsSolved?: string;
      productName?: string;
      productSlug?: string;
      rating: number;
      ratings?: {
        easeOfAdmin?: number;
        easeOfDoingBusinessWith?: number;
        easeOfSetup?: number;
        easeOfUse?: number;
        meetsRequirements?: number;
        qualityOfSupport?: number;
      };
      responseType?: string;
      reviewSource?: string;
      switchedFrom?: boolean | null;
      title?: string;
      url?: string;
    }[];
  } | null;
  found: boolean;
}

Full parameter and response reference - every field, type, and example for this endpoint.

Reference

Request, response, and price

Last verified 2026-09-16 · uptime and latency measured over 30d
POST /v1/run/g2.reviews
curl -X POST https://api.getanyapi.com/v1/run/g2.reviews \
  -H "Authorization: Bearer $ANYAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":50,"product":"hubspot-marketing-hub","sortBy":"recent"}'
FieldTypeExample value
Request body
productstring"hubspot-marketing-hub"G2 product slug, for example hubspot-marketing-hub. A full G2 product URL is also accepted and reduced to its slug.
limitinteger50Maximum number of reviews to return. The minimum is 50 because G2 review sources will not serve a smaller page. You are billed per returned result, so a lower limit costs less.
requireFieldsarrayOptional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `productSlug`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
sortByenum"recent"Sort order for the returned reviews: newest first, most helpful first, highest or lowest rated first, or G2's own default ordering.
Response
dataobject
data.itemsobject[]G2 reviews for the requested product. Populated whenever the provider has data for the entity.
data.items[].authorstringReviewer's display name. G2 abbreviates most reviewers, for example Michael D. Populated whenever the provider has data for the entity.
data.items[].authorCountrycan requirestringCountry the reviewer is based in.
data.items[].createdUtcnumberUTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity.
data.items[].dislikesstringThe reviewer's answer to G2's question about what they dislike. Populated whenever the provider has data for the entity.
data.items[].helpfulVotescan requireintegerNumber of readers who marked the review helpful.
data.items[].idstringG2 identifier for the review. Populated whenever the provider has data for the entity.
data.items[].likesstringThe reviewer's answer to G2's question about what they like best. Populated whenever the provider has data for the entity.
data.items[].marketSegmentstringG2 market segment of the reviewer's company: Small-Business, Mid-Market, or Enterprise. Populated whenever the provider has data for the entity.
data.items[].npsintegerLikelihood the reviewer would recommend the product, on a 0 to 10 scale. Populated whenever the provider has data for the entity.
data.items[].problemsSolvedstringThe reviewer's answer to G2's question about what problems the product solves and how that benefits them. Populated whenever the provider has data for the entity.
data.items[].productNamestringName of the product the review is about. Populated whenever the provider has data for the entity.
data.items[].productSlugcan requirestringG2 slug of the product the review is about.
data.items[].ratingnumberStar rating the reviewer gave, on a 0.5 to 5 scale in half-star steps. Populated whenever the provider has data for the entity.
data.items[].ratingscan requireobjectG2's rating rubric, each on a 0 to 10 scale. A reviewer may skip any of them, and the last two are asked far less often.
data.items[].ratings.easeOfAdminintegerRating for how easy the product is to administer.
data.items[].ratings.easeOfDoingBusinessWithintegerRating for how easy the vendor is to do business with.
data.items[].ratings.easeOfSetupintegerRating for how easy the product is to set up.
data.items[].ratings.easeOfUseintegerRating for how easy the product is to use.
data.items[].ratings.meetsRequirementsintegerRating for how well the product meets the reviewer's requirements.
data.items[].ratings.qualityOfSupportintegerRating for the quality of the vendor's support.
data.items[].responseTypecan requirestringForm the review was submitted in, for example text or video.
data.items[].reviewSourcecan requirestringHow G2 collected the review, for example organic or vendor.
data.items[].switchedFromcan requirebooleanWhether the reviewer switched from another product. Null when G2 does not record an answer.
data.items[].titlestringHeadline the reviewer gave the review. Populated whenever the provider has data for the entity.
data.items[].urlstringCanonical G2 URL for the review. Populated whenever the provider has data for the entity.
foundboolean
Price
Price per request (ceiling)USD$0.00446
Price /1k resultsUSD$0.050682

FAQ

About the G2 Reviews API

The AnyAPI G2 Reviews API returns G2 reviews data as normalized JSON from one POST call to /v1/run/g2.reviews. Pull G2 software reviews for any product: star rating, what reviewers like and dislike, problems solved, market segment, and G2's rating rubric as clean JSON. AnyAPI routes each request across 2 sources and falls back automatically when one fails. It costs $0.05 per 1,000 results, and never more than $0.00446 for a single request, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 98.5% of G2 reviews calls through AnyAPI succeeded, with a median response time of 5.2 seconds across 65 measured calls.

It costs $0.05 per 1,000 results, and never more than $0.00446 for a single request, in US dollars with no subscription and no monthly minimum. You fund one USD wallet, each call draws it down, and a failed request costs $0.

Pull G2 software reviews for any product: star rating, what reviewers like and dislike, problems solved, market segment, and G2's rating rubric as clean JSON. The response is normalized JSON with the same envelope every AnyAPI endpoint returns, so parsing a second endpoint is a change of URL and nothing else.

Over the last 30 days, 98.5% of G2 reviews calls through AnyAPI succeeded, with a median response time of 5.2 seconds across 65 measured calls. These are AnyAPI's own measurements of traffic through the gateway, recomputed continuously, not a published service-level target.