Extract structured Gartner Peer Insights review data from filtered listing URLs and turn it into analysis-ready datasets. Built to handle complex URL filters and deliver consistent Gartner reviews scraper outputs for research, comparisons, and reporting.
Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for gartner-com-reviews-scraper-0-9-1k you've just found your team — Let’s Chat. 👆👆
This project collects product reviews from Gartner review listing pages, parses the filters embedded in those URLs, and retrieves normalized review records in a structured format. It solves the common problem of inconsistent review page navigation and messy, partially visible Q&A by turning it into clean, queryable review data. It’s designed for analysts, product teams, and engineers who need repeatable Gartner review extraction at scale.
- Parses review listing URLs and preserves sort options like
-helpfulnessand-review_date. - Supports multi-value filters using pipe
|or comma,separation. - Optionally enriches results by visiting each review’s detail page for deeper Q&A sections.
- Paginates automatically based on total available review counts.
- Normalizes review metadata (company size, industry, job roles, regions) into consistent fields.
| Feature | Description |
|---|---|
| Smart URL filter parsing | Reads complex listing URLs and extracts filter parameters reliably. |
| Optimized review retrieval | Constructs efficient requests that reduce redundant page navigation. |
| Multi-value filter support | Accepts `companySize=2 |
| Company size mapping | Maps company size categories to internal identifiers for accurate results. |
| Sort preservation | Keeps the same ordering you select on listing pages (helpfulness, date, etc.). |
| Pagination automation | Detects totals and walks pages to collect complete result sets. |
| Detail page enrichment | Optionally loads review pages to extract additional context and Q&A. |
| Structured JSON exports | Produces consistent output ready for BI, ML, or dashboards. |
| Proxy-ready networking | Designed to operate reliably behind rotating IP infrastructure. |
| Field Name | Field Description |
|---|---|
| reviewId | Unique identifier for the review record. |
| formattedReviewDate | Human-readable review date as displayed on the site. |
| reviewRating | Overall star rating (1–5). |
| productNames | Display name of the reviewed product(s). |
| productSeoNames | Product SEO slugs associated with the review. |
| vendorSeoName | Vendor SEO slug for grouping and comparisons. |
| reviewHeadline | Review headline text. |
| reviewSummary | Review summary text snippet. |
| upVotes | Upvote count associated with the review. |
| partnerReview | Whether the review is partner-related. |
| industryCd | Numeric industry code (when available). |
| industryName | Industry label (when available). |
| companySizeCd | Numeric company size code (when available). |
| companySize | Company size label (e.g., revenue band). |
| jobTitle | Reviewer job title (when available). |
| functionCd | Numeric function code (when available). |
| function | Function label (e.g., IT). |
| reviewSourceCode | Enum-like code indicating how the review was sourced. |
| reviewIncentiveCode | Enum-like code indicating incentive category. |
| sortValue | Internal sort metadata included in some responses. |
| reviewDetails | Optional object enriched from the review detail page. |
| reviewDetails.user | Reviewer metadata (title, industry, company size, function, etc.). |
| reviewDetails.market | Market/category metadata (id, name, seoName). |
| reviewDetails.vendor | Vendor metadata (id, name, seoName). |
| reviewDetails.products | Product objects (id, name, seoName, subscribed flag). |
| reviewDetails.sections | Q&A and ratings sections containing questions, answers, and section ratings. |
[
{
"reviewId": 6075242,
"formattedReviewDate": "Mar 11, 2025",
"reviewSourceCode": 4,
"reviewIncentiveCode": 1,
"productNames": "Grafana Cloud",
"reviewRating": 5,
"industryCd": 258,
"industryName": "Construction",
"companySizeCd": 9902,
"companySize": "10B - 30B USD",
"jobTitle": "Enterprise Architect",
"reviewSummary": "giving insight into software and customer usage takes the confusion out of developer expectation and customer service expectation",
"reviewHeadline": "The user experience isnt what you think it is. Trust the telemetry emissions",
"upVotes": 0,
"functionCd": 233,
"function": "IT",
"partnerReview": false,
"productSeoNames": [
"grafana-cloud"
],
"vendorSeoName": "grafana-labs",
"reviewDetails": {
"headline": "The user experience isnt what you think it is. Trust the telemetry emissions",
"summary": "giving insight into software and customer usage takes the confusion out of developer expectation and customer service expectation",
"submitDate": "Mar 11, 2025",
"rating": 5,
"source": "Invited by vendor (direct, user community)",
"upvote": 0,
"downvote": 0,
"deploymentArchitecture": "Hybrid Cloud and On-premises",
"partnerReview": false,
"user": {
"id": 367080855,
"title": "Enterprise Architect",
"industry": "Construction",
"companySize": "10B - 30B USD",
"function": "IT"
},
"market": {
"id": 21,
"name": "Observability Platforms",
"seoName": "observability-platforms"
},
"vendor": {
"id": 64540,
"name": "Grafana Labs",
"seoName": "grafana-labs"
},
"products": [
{
"id": 135988,
"name": "Grafana Cloud",
"seoName": "grafana-cloud",
"subscribed": false
}
],
"sections": [
{
"id": 2,
"title": "Lessons Learned",
"questions": [
{
"key": "lessonslearned-like-most",
"title": "What do you like most about the product or service?",
"value": "the ease of use and the amount of data and intelligence. remove technical boundaries and allows people to view the products through an agreed upon abstraction",
"type": "text"
},
{
"key": "lessonslearned-dislike-most",
"title": "What do you dislike most about the product or service?",
"value": "out of box experience is still difficult for some users not familiar",
"type": "text"
}
]
},
{
"id": 3,
"slug": "evaluation-contracting",
"title": "Evaluation & Contracting",
"ratingKey": "evaluation-contracting-overall",
"ratingValue": "3",
"questions": [
{
"key": "why-purchase-s24",
"title": "Why did you purchase this product or service?",
"value": [
"Cost management",
"Create internal/operational efficiencies"
],
"type": "checkboxes"
},
{
"key": "factors-drove-decision-s24",
"title": "What were the key factors that drove your decision?",
"value": [
"Product functionality and performance",
"Overall cost"
],
"type": "checkboxes"
},
{
"key": "vendors-considered",
"title": "Which other vendors did you consider in your evaluation?",
"value": [
"Honeycomb",
"Logz.io",
"LogicMonitor",
"Oracle",
"Datadog",
"Elastic",
"New Relic"
],
"type": "checkboxes"
}
]
}
]
}
}
]
gartner-com-reviews-scraper/
├── src/
│ ├── main.py
│ ├── cli.py
│ ├── runner/
│ │ ├── run_actor.py
│ │ └── concurrency.py
│ ├── parsers/
│ │ ├── url_parser.py
│ │ ├── filter_mapper.py
│ │ └── query_encoder.py
│ ├── clients/
│ │ ├── http_client.py
│ │ └── session_pool.py
│ ├── extractors/
│ │ ├── listing_api.py
│ │ ├── review_details.py
│ │ └── sections_normalizer.py
│ ├── models/
│ │ ├── review.py
│ │ ├── review_details.py
│ │ └── inputs.py
│ ├── outputs/
│ │ ├── dataset_writer.py
│ │ └── exporters.py
│ └── config/
│ ├── settings.example.json
│ └── defaults.py
├── data/
│ ├── input.example.json
│ └── sample.output.json
├── tests/
│ ├── test_url_parser.py
│ ├── test_filter_mapper.py
│ └── test_normalizer.py
├── scripts/
│ ├── smoke_test.sh
│ └── format.sh
├── requirements.txt
├── pyproject.toml
├── LICENSE
└── README.md
- Product managers use it to analyze Gartner Peer Insights feedback by segment, so they can prioritize roadmap decisions backed by real user sentiment.
- Competitive intelligence teams use it to compare vendors across the same market filters, so they can spot strengths, weaknesses, and positioning gaps.
- Data analysts use it to build review trend dashboards (ratings, industries, company sizes), so they can track perception changes over time.
- Sales enablement teams use it to extract proof points and recurring Q&A themes, so they can improve messaging and objection handling.
- ML engineers use it to collect labeled Q&A sections and metadata, so they can train models for summarization, classification, or voice-of-customer pipelines.
How do I target a specific product and market? Use a full reviews listing URL for the product/market you want. If you prefer parameterized inputs, provide the market SEO name and product/vendor SEO identifiers so the runner can construct the request automatically.
Can I apply multiple filters like company size and rating at the same time?
Yes. Multi-value filters are supported using | or , separators. For example, you can combine company size and rating filters in a single run and preserve sorting preferences.
What does “detail enrichment” change in the output?
When enabled, each review is additionally opened and parsed to populate reviewDetails, including structured sections (Q&A blocks), deployment architecture, vendor/market metadata, and other contextual fields.
Why do results sometimes vary across markets or categories? Fields may differ depending on the market schema, product configuration, or platform changes. The extractor is designed to tolerate missing fields while keeping the overall output consistent and predictable.
Primary Metric: ~35–70 reviews/minute on filtered listings when detail enrichment is disabled (varies by market size and response latency).
Reliability Metric: 96–99% successful review retrieval on typical runs when using rotating proxies and 2–3 retries per request.
Efficiency Metric: Pagination requests are batched to minimize navigation overhead; enrichment mode increases runtime by ~2–4× due to per-review page loads.
Quality Metric: Enrichment mode typically captures 90%+ of available structured sections and Q&A fields for reviews where the detail page exposes them, improving completeness for downstream analytics.
