Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

G2 Scraper API

A G2 scraper API that searches G2 for a keyword and returns the products and service providers it lists: name, star rating, review count, vendor with G2’s own vendor id and seller URL, description, every related category and the logo — both result types labelled, deduplicated on G2’s numeric product id. Paginates twenty per page.

$0.001 per delivered product · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/g2_products/run
$ curl $QD/g2_products/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"query": "crm", "max_results": 40}'
{ "status": "done", "count": 40,
  "results": [
    {
      "product_id": …,
      "product_uuid": "…",
      "name": "…",
      "type": "…" } ],
  "cost": 0.04 }
# 40 products × $0.001 · nothing delivered, nothing charged
G2 Scraper API: query and country in, a residential exit in the middle, delivered rows with rank, product_id and product_uuid on the right, $0.001 per product.
You send query and country; the run goes out through a residential exit and comes back as products with rank, product_id and product_uuid — 15 fields on every row — and you are billed $0.001 for each product actually delivered, nothing for a run that delivers none.
$0.001 / product2,000 products on the free $2 every month
Semantic inputquery, country, max_results — no URL lists
Up to 300products per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Try it

G2 software search, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key

What a G2 scraper API does

G2’s search page publishes no structured data of any kind — no schema block, no hydration payload, and no reachable JSON endpoint — so this collector reads markup, and it says so plainly: the layout classes it has to touch are utilities that encode presentation, and a redesign that changes a column width can break them. Treat a sudden zero-row run as a layout change first and a block second. The most durable anchors carry the weight: G2’s per-row click-tracking payload, a JSON object keyed by data rather than presentation, supplies the id, the decoded name and the result type; the reviews link and the seller link supply rating and vendor.

Row scoping is not optional here. A results page holds 22 seller links against 20 rows — two live outside the list — so a page-wide query shifts every vendor by one from that point on; categories are worse, one to fifteen per card, and cannot be re-associated at all from a flat list. Every field is read inside its own row. Both “Software” products and “Provider” service firms are returned and labelled, and the numeric id is the deduplication key because two providers can share a name.

Limits, in plain numbers

Everything that bounds one run of this collector. No hidden throttles.

Max per run

300 products

Price

$0.001 / product

Per 1,000

$1.00

Failed runs

Free zero rows, zero charge

Free every month

$2 no card

Rate limit

60 req/min on the free tier

What one product looks like

Every delivered product carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankintegerPosition in G2's order for this response, counting across pages.
product_idinteger · nullableG2's numeric product id — stable, and the key used to de-duplicate.
product_uuidstring · nullableG2's internal product UUID, when the row carries one.
namestringProduct or provider name.
typestring · nullableWhat G2 classes the row as: "Software" for a product, "Provider" for a services firm.
ratingnumber · nullableAverage star rating out of 5. Null when G2 states no score — it prints "0/5" as a placeholder, and that is never delivered as a rating of zero.
reviewsinteger · nullableNumber of reviews as G2 states it. 0 is a real value and is kept.
vendorstring · nullableSeller/vendor name as linked on the row.
vendor_idinteger · nullableG2's numeric vendor id.
vendor_urlstring · nullableG2 seller page URL.
descriptionstring · nullableThe product description G2 shows on the result card.
categoriesstring[] · nullableRelated G2 categories for this product (1 to ~37 per row, read per card).
logostring · nullableProduct logo image URL.
slugstring · nullableG2 URL slug for the product.
urlstring · nullableG2 product page URL.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
querystringyesWhat to search G2 for, e.g. "crm", "help desk" or "salesforce consulting". Matches products and service providers alike.
countrystringnoISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool.
max_resultsintegernoHow many products to deliver at most (1–300). You pay only for delivered products.

Pricing

G2 Scraper API pricing

$0.001 per delivered product. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 products before you spend anything.

$0.001per delivered product$1 per 1,000 delivered products
2,000 productson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Pay as you go

$0/mo
  • $2 free credit / month
  • 60 requests / min
  • List unit prices

Starter

$19/mo
  • $15 free credit / month
  • 300 requests / min
  • 10% off unit prices

Scale

$299/mo
  • $250 free credit / month
  • 1,200 requests / min
  • 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/g2_products/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/g2_products/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"crm","max_results":40}'

What people build with the G2 scraper API

Three shapes of work this endpoint was designed around.

Category benchmarking

Every product G2 returns for “crm” with rating, review count and categories — compare with the Capterra rows for the same space.

Vendor lists

Vendor name, G2 vendor id and seller URL per product: an account list for a category, ready for company-data enrichment.

Review-volume tracking

Review counts by product id over time, the proxy for momentum G2 itself uses.

G2 Scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
IdentityText scraped from a headingG2’s click-tracking payload: id, decoded name, type
Vendor alignmentA page-wide list, off by one after the second stray linkRead inside each row
Result typesProducts only, or mixed unlabelledSoftware and Provider rows, labelled
Failure modeSilent zero rowsReported as a failure, never billed

What people search for

Live autocomplete demand around G2 software search, pulled with our own Keyword ideas collector.

G2 Scraper API: the POST to /v1/scraper/collectors/g2_products/run with query and country on the left, and the JSON envelope on the right with 40 products and usage.cost_usd $0.04.
The same call you would paste into a terminal: a Bearer key, query and country in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many products arrived and usage.cost_usd is $0.04, which is 40 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the G2 scraper API.

Something else? Ask us →

Will this break when G2 redesigns?

Possibly, and the page says so rather than pretending otherwise. Identity comes from a data payload that survives re-theming; rating, vendor and description come from the row’s links and text. A zero-row page is reported as a failure, not delivered as an empty success.

Does it include reviews?

Rating and review count per product, plus the reviews link. Review text is on the product page, which this collector does not open.

What is the difference between Software and Provider rows?

G2 lists products and service firms in the same results. Both are delivered with type stating which, and both carry a vendor and categories.

Is there a G2 API?

G2 sells data access to partners. This collector reads the public search page and needs nothing from G2.

Is there a free G2 scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered products on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 300 products — the maximum for this collector — costs $0.3 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the G2 scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Get my free API key