G2 Product Search Scraper avatar

G2 Product Search Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
G2 Product Search Scraper

G2 Product Search Scraper

Scrape software products, categories, and listings from G2.com with support for search, category, and direct product URL modes.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Search G2's public product index by product name. The Actor returns only fields evidenced by the live JSON response: stable G2 product ID, product name, vendor name, favicon URL, match context, and HTTP provenance.

This Actor deliberately does not guess product slugs or claim pricing, ratings, features, reviews, or detail-page URLs that the public search response does not provide. It does not sign in or bypass CAPTCHA, WAF, login, rate, device, paywall, or geographic controls.

Input

FieldDefaultLimitsPurpose
queries["slack"]1–5 strings, 1–100 charactersProduct-name searches.
searchQuery1–100 charactersOptional backward-compatible single query combined with queries.
maxItems201–100Global unique-product cap.
maxPagesPerQuery11–3Per-query pagination safety cap.
pageSize501–100Requested page size; G2 may return a different bounded count.
requestDelayMs300250–10,000Spacing between consecutive requests.
requestTimeoutMs120005,000–30,000Per-request timeout.
maxAttempts21–2Attempts for transient network, server, or invalid-response failures.

Example:

{
"queries": ["slack", "crm"],
"maxItems": 20,
"maxPagesPerQuery": 1
}

The schema and runtime reject unknown fields, numeric strings, empty queries, duplicate queries after case normalization, and excessive workloads.

Output

Each product row contains:

  • recordId and integer productId from G2
  • productName, optional vendorName, and optional public faviconUrl
  • matchedQueries, first query, result position, and response page
  • exact source API URL, public search URL, response count, HTTP/content/byte/attempt evidence
  • source domain, endpoint path, extraction method, request identity, and timestamp
{
"recordType": "g2Product",
"status": "success",
"dataAvailable": true,
"found": true,
"recordId": "g2:154880",
"productId": 154880,
"productName": "Bored on Slack",
"vendorName": "SuperGaming",
"matchedQueries": ["slack"],
"queryResultPosition": 1,
"httpStatus": 200,
"sourceDomain": "www.g2.com",
"provenance": "public_g2_product_index"
}

Products appearing under multiple queries are deduplicated by G2 product ID and retain every matched query. Optional blank values are omitted instead of emitted as null placeholders.

If a request fails or hits an access boundary, the Actor writes one typed diagnostic row and fails without publishing partial product records. If all queries return no matches, it similarly records NO_RESULTS and fails. The named OUTPUT key-value record summarizes status, items, unique IDs, query progress, requests, and duration.

Cost and limits

The Actor uses direct sequential HTTPS requests and no browser or proxy. Cost depends mainly on request count, compute, and storage. The global result cap can end the run before later queries are requested; limits are caps, not guaranteed quotas.

Local development

npm ci
npm test
apify validate-schema
apify run --purge --input-file qa-inputs/local-single.json
npm run validate -- storage/datasets/default

The semantic validator checks every declared type, required evidence, product-ID uniqueness, success status, and absence of diagnostics.

Responsible use

Only data returned by G2's public product lookup is collected. Review G2's terms and applicable law. The Actor is an independent adapter and does not represent G2. For support, include query, HTTP status, and diagnostic code without sharing credentials.