Dataspryva

G2 Software Reviews, Product Info & Competitor Extractor

Collects G2 software product reviews with ratings and pros/cons, product profile summaries, or competitor listings from any G2 product page.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringoptionalWhat to collect from G2.
startUrlsarrayrequiredG2 product URLs (e.g. https://www.g2.com/products/notion/reviews) or bare product slugs (e.g. notion). One entry per product.
maxItemsintegeroptionalUpper limit of records to collect for each product. (mode=reviews uses filtering to go far beyond G2's default review feed.)
Show all input fields
FieldTypeRequiredDescription
modestringoptionalWhat to collect from G2.
startUrlsarrayrequiredG2 product URLs (e.g. https://www.g2.com/products/notion/reviews) or bare product slugs (e.g. notion). One entry per product.
maxItemsintegeroptionalUpper limit of records to collect for each product. (mode=reviews uses filtering to go far beyond G2's default review feed.)
starRatingsarrayoptionalKeep reviews with one of the selected star ratings. Leave empty for all ratings. (mode=reviews)
companySizesarrayoptionalKeep reviews from companies of the selected sizes. Leave empty for all sizes. (mode=reviews)
reviewerRolesarrayoptionalKeep reviews written by reviewers with one of the selected roles. Leave empty for all roles. (mode=reviews)
reviewerRegionsarrayoptionalKeep reviews from reviewers in the selected regions. Leave empty for all regions. (mode=reviews)
sortBystringoptionalOrder of the collected reviews. (mode=reviews)
fromDatestringoptionalOnly keep reviews published on or after this date. (mode=reviews)
toDatestringoptionalOnly keep reviews published on or before this date. (mode=reviews)

Download the published input schema

View complete JSON
{
  "description": "Scrape G2 software reviews by URL or slug, plus product info and competitor lists.",
  "properties": {
    "companySizes": {
      "default": [],
      "description": "Keep reviews from companies of the selected sizes. Leave empty for all sizes. (mode=reviews)",
      "editor": "select",
      "items": {
        "enum": [
          "smallBusiness",
          "midMarket",
          "enterprise"
        ],
        "enumTitles": [
          "Small Business (50 or fewer emp.)",
          "Mid-Market (51-1000 emp.)",
          "Enterprise (1001+ emp.)"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Reviewer company size",
      "type": "array"
    },
    "fromDate": {
      "description": "Only keep reviews published on or after this date. (mode=reviews)",
      "editor": "datepicker",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "title": "Reviews from (optional)",
      "type": "string"
    },
    "maxItems": {
      "default": 50,
      "description": "Upper limit of records to collect for each product. (mode=reviews uses filtering to go far beyond G2's default review feed.)",
      "maximum": 50000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum items per product",
      "type": "integer"
    },
    "mode": {
      "default": "reviews",
      "description": "What to collect from G2.",
      "editor": "select",
      "enum": [
        "reviews",
        "productInfo",
        "competitors"
      ],
      "enumTitles": [
        "Reviews for products",
        "Product info & details",
        "Competitors & alternatives"
      ],
      "prefill": "reviews",
      "title": "Mode",
      "type": "string"
    },
    "reviewerRegions": {
      "default": [],
      "description": "Keep reviews from reviewers in the selected regions. Leave empty for all regions. (mode=reviews)",
      "editor": "select",
      "items": {
        "enum": [
          "northAmerica",
          "europe",
          "asia",
          "anz",
          "africa",
          "latinAmerica",
          "middleEast"
        ],
        "enumTitles": [
          "North America",
          "Europe",
          "Asia",
          "ANZ",
          "Africa",
          "Latin America",
          "Middle East"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Reviewer regions",
      "type": "array"
    },
    "reviewerRoles": {
      "default": [],
      "description": "Keep reviews written by reviewers with one of the selected roles. Leave empty for all roles. (mode=reviews)",
      "editor": "select",
      "items": {
        "enum": [
          "user",
          "administrator",
          "executiveSponsor",
          "internalConsultant",
          "consultant",
          "agency",
          "industryAnalyst"
        ],
        "enumTitles": [
          "User",
          "Administrator",
          "Executive Sponsor",
          "Internal Consultant",
          "Consultant",
          "Agency",
          "Industry Analyst / Tech Writer"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Reviewer roles",
      "type": "array"
    },
    "sortBy": {
      "default": "newest",
      "description": "Order of the collected reviews. (mode=reviews)",
      "editor": "select",
      "enum": [
        "newest",
        "oldest",
        "highestRated",
        "lowestRated"
      ],
      "enumTitles": [
        "Newest first",
        "Oldest first",
        "Highest rated first",
        "Lowest rated first"
      ],
      "prefill": "newest",
      "title": "Sort reviews by",
      "type": "string"
    },
    "starRatings": {
      "default": [],
      "description": "Keep reviews with one of the selected star ratings. Leave empty for all ratings. (mode=reviews)",
      "editor": "select",
      "items": {
        "enum": [
          "1",
          "2",
          "3",
          "4",
          "5"
        ],
        "enumTitles": [
          "1 star",
          "2 stars",
          "3 stars",
          "4 stars",
          "5 stars"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Star ratings",
      "type": "array"
    },
    "startUrls": {
      "description": "G2 product URLs (e.g. https://www.g2.com/products/notion/reviews) or bare product slugs (e.g. notion). One entry per product.",
      "editor": "stringList",
      "prefill": [
        "https://www.g2.com/products/notion/reviews"
      ],
      "title": "G2 product URLs or slugs",
      "type": "array"
    },
    "toDate": {
      "description": "Only keep reviews published on or before this date. (mode=reviews)",
      "editor": "datepicker",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "title": "Reviews until (optional)",
      "type": "string"
    }
  },
  "required": [
    "startUrls"
  ],
  "schemaVersion": 1,
  "title": "G2 Product Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
itemsstringoptionalDataset containing all scraped G2 reviews, product records, or competitor records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Dataset of G2 reviews, product profiles, or competitor records, depending on the selected mode.",
  "properties": {
    "items": {
      "description": "Dataset containing all scraped G2 reviews, product records, or competitor records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Items",
      "type": "string"
    }
  },
  "title": "G2 Products Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "fields": {
    "properties": {
      "authorName": {
        "description": "Reviewer name",
        "type": "string"
      },
      "authorRole": {
        "description": "Reviewer role (User, Administrator, etc.)",
        "type": "string"
      },
      "categories": {
        "description": "All G2 categories",
        "type": "array"
      },
      "category": {
        "description": "Primary G2 category",
        "type": "string"
      },
      "companySize": {
        "description": "Reviewer company size segment",
        "type": "string"
      },
      "competitorName": {
        "description": "Competitor product name",
        "type": "string"
      },
      "competitorSlug": {
        "description": "Competitor G2 slug",
        "type": "string"
      },
      "competitorUrl": {
        "description": "Competitor G2 reviews URL",
        "type": "string"
      },
      "cons": {
        "description": "What the reviewer disliked",
        "type": "string"
      },
      "description": {
        "description": "Product or competitor summary",
        "type": "string"
      },
      "imageUrl": {
        "description": "Product image URL",
        "type": "string"
      },
      "pricing": {
        "description": "Pricing plans ({plan, price, currency})",
        "type": "array"
      },
      "productName": {
        "description": "Software product name",
        "type": "string"
      },
      "productSlug": {
        "description": "G2 product slug",
        "type": "string"
      },
      "productUrl": {
        "description": "G2 product reviews URL",
        "type": "string"
      },
      "pros": {
        "description": "What the reviewer liked",
        "type": "string"
      },
      "publishDate": {
        "description": "Review publish date",
        "type": "string"
      },
      "rating": {
        "description": "Star value (0-5)",
        "type": "number"
      },
      "recordType": {
        "description": "review, product or competitor",
        "type": "string"
      },
      "reviewCount": {
        "description": "Number of reviews",
        "type": "integer"
      },
      "reviewId": {
        "description": "Unique G2 review ID",
        "type": "string"
      },
      "reviewTitle": {
        "description": "Review headline",
        "type": "string"
      },
      "reviewUrl": {
        "description": "Direct review URL",
        "type": "string"
      },
      "scrapedAt": {
        "description": "Scrape timestamp (ISO 8601)",
        "type": "string"
      },
      "sourceProduct": {
        "description": "Slug of the compared product",
        "type": "string"
      },
      "starRating": {
        "description": "Star bucket (1-5)",
        "type": "integer"
      },
      "useCase": {
        "description": "Problems the product solves",
        "type": "string"
      },
      "vendorName": {
        "description": "Product vendor (seller) name",
        "type": "string"
      },
      "vendorUrl": {
        "description": "Vendor seller page on G2",
        "type": "string"
      }
    },
    "type": "object"
  },
  "title": "G2 Records",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "authorName": {
            "format": "text",
            "label": "Author"
          },
          "cons": {
            "format": "text",
            "label": "Cons"
          },
          "productName": {
            "format": "text",
            "label": "Product"
          },
          "pros": {
            "format": "text",
            "label": "Pros"
          },
          "publishDate": {
            "format": "text",
            "label": "Date"
          },
          "rating": {
            "format": "number",
            "label": "Rating"
          },
          "reviewTitle": {
            "format": "text",
            "label": "Title"
          },
          "starRating": {
            "format": "number",
            "label": "Stars"
          }
        }
      },
      "title": "Reviews",
      "transformation": {
        "fields": [
          "productName",
          "starRating",
          "rating",
          "authorName",
          "reviewTitle",
          "pros",
          "cons",
          "publishDate"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

G2 Software Reviews, Product Info & Competitor Extractor

Scrape G2 — the B2B software marketplace with millions of verified user reviews — for any product. Pull reviews with ratings, pros, cons and reviewer context; collect a product's profile summary (rating, review count, categories, pricing plans); or list the competitors G2 shows for a product. Works from a G2 product URL or just a slug, no account or setup required.

What this actor does

  • Three modes: collect reviews, product info, or competitor lists for any G2 product.
  • Review filters: star rating, reviewer company size, reviewer role, reviewer region, and publication date range.
  • Deep review coverage: goes beyond the handful of reviews G2 shows by default — request hundreds or thousands per product.
  • Any input shape: full G2 URLs or bare slugs (notion, slack, hubspot-marketing-hub), mixed freely in one run.
  • Empty fields are omitted — every record only contains values G2 actually provides.

Output per review (mode = reviews)

  • reviewId — unique G2 review ID
  • reviewTitle — headline of the review
  • reviewUrl — direct link to the review on G2
  • rating — the reviewer's star value on G2's 0–5 scale (halves included)
  • starRating — the review's star bucket, 1–5
  • authorName — reviewer display name (as published by G2)
  • authorRole — reviewer's stated role, e.g. Administrator
  • companySize — reviewer's company size segment
  • publishDate — publication date from G2
  • pros, cons, useCase — the reviewer's "like best", "dislike" and "problems solved" answers
  • productName, productSlug, productUrl — product identity
  • recordType: "review", scrapedAt

Output per product (mode = productInfo)

  • productName, productSlug, url
  • description — the product summary from its G2 page
  • rating — average rating, reviewCount — total reviews
  • category and categories[] — G2 category listings
  • imageUrl — product logo
  • pricing — array of {plan, price, currency} plans G2 publishes
  • operatingSystem
  • vendorName, vendorUrl — the vendor (seller) shown on the product page
  • recordType: "product", scrapedAt

Output per competitor (mode = competitors)

  • competitorName, competitorSlug, competitorUrl
  • rating, reviewCount — the competitor's standing on G2
  • description — G2's blurb for the competitor
  • sourceProduct — slug of the product whose competitor list this came from
  • recordType: "competitor", scrapedAt

Input

Field Type Default Description
mode string reviews reviews, productInfo, or competitors
startUrls array – G2 product URLs or bare slugs (notion, slack), one per product. Required.
maxItems integer 50 Maximum records per product (1–50,000)
starRatings array – Keep reviews with these star ratings (1–5). (mode=reviews)
companySizes array – Keep reviews from these company sizes: smallBusiness, midMarket, enterprise. (mode=reviews)
reviewerRoles array – Keep reviews by these reviewer roles, e.g. administrator. (mode=reviews)
reviewerRegions array – Keep reviews from these regions, e.g. northAmerica. (mode=reviews)
sortBy string newest newest, oldest, highestRated, lowestRated
fromDate string – Only reviews published on or after this date (YYYY-MM-DD)
toDate string – Only reviews published on or before this date (YYYY-MM-DD)

Example: recent 5-star reviews

{
  "mode": "reviews",
  "startUrls": ["https://www.g2.com/products/notion/reviews"],
  "maxItems": 100,
  "starRatings": [5],
  "sortBy": "newest"
}

Example: deep pull for competitive research

{
  "mode": "reviews",
  "startUrls": ["slack", "microsoft-teams"],
  "maxItems": 1000,
  "companySizes": ["enterprise", "midMarket"],
  "sortBy": "highestRated"
}

Example: product profile

{
  "mode": "productInfo",
  "startUrls": ["https://www.g2.com/products/hubspot-marketing-hub"]
}

Example: competitor lists for several products

{
  "mode": "competitors",
  "startUrls": ["notion", "asana", "monday-com"],
  "maxItems": 20
}

Use cases

  • Voice-of-customer research — export raw pros/cons and use cases to feed qualitative analysis.
  • Competitive battlecards — pull a product's listed alternatives with their ratings and review counts.
  • Review monitoring — schedule runs with fromDate to collect only new reviews since the last run.
  • Vendor shortlisting — compare profiles and pricing plans side by side before deeper evaluation.
  • Sentiment slices — study how enterprise reviewers rate a product versus small-business reviewers.
  • LLM / RAG pipelines — structured review text with metadata, ready for indexing.

FAQ

Do I need a G2 account or API key?

No. The actor reads pages and feeds G2 already makes public.

Can I get more than the reviews G2 shows on a product page?

Yes. For mode=reviews the actor combines G2's own filter views (stars, company size, role, region) while de-duplicating results, so common products yield hundreds to thousands of distinct reviews per run. maxItems caps the output.

Why are some companySize or authorRole values missing?

G2 makes reviewer details optional when someone submits a review. Across a 400-review sample, company size is published for about 80% of reviews, and roughly one in four roles is G2's anonymised "G2 User" placeholder rather than a real job role. Missing values are omitted rather than guessed.

What does rating mean next to starRating?

rating is the exact value G2 publishes on its 0–5 scale (including halves like 4.5). starRating is the star bucket (1–5) the review belongs to — useful for grouping. A few reviews legitimately carry a 0.0 rating; that is G2's lowest value, not missing data.

Does each review include sub-ratings (ease of use, support) or "switched from" data?

No — G2 does not publish per-review sub-ratings, themes, or switching data on any public page; those appear only for signed-in users or through G2's enterprise API. This actor returns the complete public surface: rating, title, pros/cons/problems, reviewer context and dates.

Can I filter by date range?

Yes — set fromDate and/or toDate and only matching reviews are returned. Both are inclusive.

How fresh is the data?

Every run reads G2 live; nothing is cached between runs.

Do I need to set up a proxy?

No. The actor chooses a working connection to G2 automatically. Just fill in the input and run.

Is this affiliated with G2?

No. This actor reads publicly available G2 pages and feeds; it is not operated by or affiliated with G2.com.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build SEfo3afTwaeYxU5xK. Documentation is regenerated from the default published build; private drafts are not included.