G2 Product Search Scraper
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
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
| Field | Default | Limits | Purpose |
|---|---|---|---|
queries | ["slack"] | 1–5 strings, 1–100 characters | Product-name searches. |
searchQuery | — | 1–100 characters | Optional backward-compatible single query combined with queries. |
maxItems | 20 | 1–100 | Global unique-product cap. |
maxPagesPerQuery | 1 | 1–3 | Per-query pagination safety cap. |
pageSize | 50 | 1–100 | Requested page size; G2 may return a different bounded count. |
requestDelayMs | 300 | 250–10,000 | Spacing between consecutive requests. |
requestTimeoutMs | 12000 | 5,000–30,000 | Per-request timeout. |
maxAttempts | 2 | 1–2 | Attempts 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:
recordIdand integerproductIdfrom G2productName, optionalvendorName, and optional publicfaviconUrlmatchedQueries, 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 cinpm testapify validate-schemaapify run --purge --input-file qa-inputs/local-single.jsonnpm 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.