
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Scrape G2.com software products from product URLs, category pages or search keywords. Get name, seller, rating, review count, star split, description, categories, pricing editions, alternatives, comparisons, integrations and media. No login needed.
Turn G2.com into a clean software database. Paste product URLs, category pages or search keywords and get each product's rating, review count, seller, pricing editions, categories, alternatives, comparisons and integrations as structured rows. No login, no coding, and you pay only for the products you get.
/categories/crm) or a keyword search and get one row per product, in G2's own order, with position.github).crm or password manager.| Field | Type | Description |
|---|---|---|
startUrls | array | G2 product, category, search or alternatives URLs, or product slugs. |
searchQueries | array | Keywords to search on G2. |
maxItems | integer | Max products per category, search or alternatives input (default 20). |
minRating | string | Only products rated at least this (for example 4.5). |
minReviews | integer | Only products with at least this many reviews. |
scrapeProductDetails | boolean | Open every listed product and return its full record (default off). |
proxyConfiguration | object | Proxy settings. Residential is the default because G2 refuses most datacenter addresses. |
{
"startUrls": [
"https://www.g2.com/products/github/reviews",
"https://www.g2.com/categories/version-control-hosting"
],
"searchQueries": ["password manager"],
"maxItems": 20,
"minRating": "4",
"scrapeProductDetails": false
}
Each row has recordType: product for a full product record and listing for a category, search or alternatives row (without full details).
| Field | Description |
|---|---|
name, slug, url, productId | Product name, G2 slug, G2 URL and G2 product id |
sellerName, sellerUrl, vendorId | The vendor selling the product |
rating, reviewCount, starDistribution | G2 star rating (out of 5), number of reviews, % of reviews per star |
description | The product description shown on G2 |
primaryCategory, categories | Main category and every G2 category the product is listed in |
pricing | Pricing editions: name, price, price text, billing unit, currency |
alternatives | Top-rated alternatives with rating and review count |
comparisons | Head-to-head comparison pages with rating and review count |
integrationsCount, integrations | Number of integrations and the ones G2 shows |
subproducts, featureHighlights, media | Sub-products, feature groups and screenshots or videos |
implementationTime, returnOnInvestment, averageDiscount | G2's averages from user reviews, when shown |
solutionType, claimed, badges | All-in-One or Best-of-Breed, whether the vendor claimed the profile, badges like AI Verified |
userSentimentSummary, topPro, topCon | Category rows: G2's summary of what users say and the top pro and con topics |
source, sourceUrl, searchQuery, position | Where the row came from and its position in the listing |
Full product record (trimmed):
{
"recordType": "product",
"productId": 1392,
"name": "GitHub",
"url": "https://www.g2.com/products/github/reviews",
"sellerName": "GitHub",
"sellerUrl": "https://www.g2.com/sellers/github",
"rating": 4.7,
"reviewCount": 2411,
"starDistribution": { "5": 84, "4": 14, "3": 1, "2": 0, "1": 0 },
"description": "GitHub is where the world builds software. Millions of individuals, organizations and businesses around the world use GitHub to discover, share, and contribute software. ...",
"solutionType": "All-in-One",
"primaryCategory": { "name": "Version Control Hosting", "url": "https://www.g2.com/categories/version-control-hosting" },
"categories": [
{ "name": "Bug Tracking", "slug": "bug-tracking", "url": "https://www.g2.com/categories/bug-tracking" },
{ "name": "DevOps Platforms", "slug": "devops-platforms", "url": "https://www.g2.com/categories/devops-platforms" }
],
"pricing": [
{ "name": "Free for Individuals and Organizations", "price": 0.0, "priceText": "$0.00", "unit": "1 users", "currency": "USD" },
{ "name": "Team", "price": 4.0, "priceText": "$4.00", "unit": "1 users Per Month", "currency": "USD" },
{ "name": "Enterprise", "price": 21.0, "priceText": "$21.00", "unit": "1 Licenses Per Month", "currency": "USD" }
],
"alternatives": [
{ "name": "GitLab", "slug": "gitlab", "url": "https://www.g2.com/products/gitlab/reviews", "rating": 4.5, "reviewCount": 901 }
],
"comparisons": [
{ "name": "GitLab", "url": "https://www.g2.com/compare/github-vs-gitlab", "rating": 4.5, "reviewCount": 901 }
],
"integrationsCount": 80,
"implementationTime": "1 month",
"source": "product"
}
Category row:
{
"recordType": "listing",
"name": "Bitbucket",
"url": "https://www.g2.com/products/bitbucket/reviews",
"sellerName": "Atlassian",
"rating": 4.4,
"reviewCount": 1015,
"userSentimentSummary": "Users consistently praise Bitbucket for its seamless integration with Jira and user-friendly interface, ...",
"topPro": { "topic": "Jira Integration", "mentions": 21 },
"topCon": { "topic": "Slow Speed", "mentions": 14 },
"source": "category",
"position": 2
}
Pay per result:
Platform usage (compute and residential proxy traffic) is billed on top and is small. In our test, 1,200 full product records took about 10 minutes and used 0.11 GB of residential traffic. Example: 1,000 full product records cost about $4 in results plus about $0.20 of usage. Products removed by your filters are not charged.
Is it legal to scrape G2? The actor reads only public pages that anyone can open without an account. It collects product information, not personal data. Check G2's terms and your local law for your use case.
Do I need a G2 account or my own proxy? No. No login is used. The residential proxy is preselected because G2 refuses most datacenter addresses.
How many products can I get? One per product URL. A category returns every product it lists (often hundreds), and a search returns about 1,500 unique products at most (G2 starts repeating results after roughly 80 pages; the run stops there and says so). Set Max products per category or search to the number you need.
Why is a field empty? G2 does not show every section for every product. For example, many products have no pricing editions, and implementation time or ROI appear only when enough reviewers answered.
Can I get reviews too? This actor collects product data. For individual reviews use a G2 reviews scraper.
Can I schedule it or use the API? Yes. Schedule runs in the console and read the dataset from the API, webhooks or integrations.
topPro, topCon).slug and url are always complete.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalG2 URLs
G2 product pages (https://www.g2.com/products/github/reviews), category pages (https://www.g2.com/categories/crm), search pages (https://www.g2.com/search?query=crm), alternatives pages (https://www.g2.com/products/github/competitors/alternatives) or bare product slugs (github). One per line. Leave empty (with no keywords) to run the example.
searchQueriesarrayOptionaldefault []Search keywords
Keywords to search on G2 (for example: crm, password manager). Each keyword returns the matching products.
maxItemsintegerOptionaldefault 20Max products per category or search
How many products to collect from each category, search or alternatives input. Product URLs always return one product each. One keyword search yields about 1,500 unique products at most, because G2 starts repeating results after that; use several keywords or category pages for more.
Skip products below a rating or review count. Filtered products are not charged.
minRatingstringOptionaldefault ""Minimum rating
Only products rated at least this many stars (0 to 5, for example 4.5). Leave empty for all.
minReviewsintegerOptionaldefault 0Minimum number of reviews
Only products with at least this many G2 reviews. 0 means no minimum.
How much to collect for products found in listings.
scrapeProductDetailsbooleanOptionaldefault falseFull details for category and search results
Open every product found in a category, search or alternatives page and return its full record (pricing editions, categories, alternatives, comparisons, integrations, star split, media). Slower and charged as a full product. Off: category and search rows carry name, seller, rating, review count, description, top pro/con and categories.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
G2 refuses most datacenter addresses, so the residential proxy is the default.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| logo | any | Logo |
| name | any | Product |
| sellerName | any | Seller |
| rating | any | Rating |
| reviewCount | any | Reviews |
| primaryCategory.name | any | Main category |
| pricing | any | Pricing |
| description | any | Description |
| userSentimentSummary | any | What users say |
| alternatives | any | Alternatives |
| source | any | Source |
| position | any | Position |
| url | any | G2 URL |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing row | One product row from a category, search or alternatives page (without full details). | $0.001 |
| Product | One product with its full details (product page). | $0.004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/g2-products-scraper').call({
"startUrls": [
"https://www.g2.com/products/github/reviews",
"https://www.g2.com/products/sublime-text/reviews",
"https://www.g2.com/categories/version-control-hosting"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/g2-products-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/g2-products-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Search G2 products with rating and review filters.
Product data from G2 product links.
Competitors listed on a product's alternatives page.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.