How to Scrape Product Reviews
Product reviews are spread across paginated review sections, often loaded lazily or hidden behind "Show more" interactions. Collecting a complete review dataset requires handling JavaScript rendering, pagination, and possibly scroll-triggered loading.
Step-by-Step Guide
Find the review section URL pattern
Many sites load reviews on a separate paginated URL (e.g., /product/123/reviews?page=2) or via a dedicated API endpoint visible in browser DevTools Network tab.
Fetch reviews with JavaScript rendering
Send the review page URL to AlterLab with render_js enabled to ensure lazy-loaded review content is included in the response.
Extract review metadata
Parse each review for: rating (numeric), review text, reviewer name, date, and verified purchase status when available.
Paginate through all reviews
Follow the review pagination to collect all available reviews. Sort by 'most recent' to prioritize fresh data.
Code Example
import requests
from bs4 import BeautifulSoup
def scrape_reviews(product_url: str, api_key: str) -> list[dict]:
response = requests.post(
"https://alterlab.io/api/v1/scrape",
headers={"X-API-Key": api_key, "Content-Type": "application/json"},
json={"url": product_url, "render_js": True},
)
html = response.json().get("html", "")
soup = BeautifulSoup(html, "html.parser")
reviews = []
for review in soup.select(".review-item"):
reviews.append({
"rating": review.select_one("[data-rating]")?.get("data-rating"),
"text": review.select_one(".review-body")?.get_text(strip=True),
"author": review.select_one(".reviewer-name")?.get_text(strip=True),
"date": review.select_one("time")?.get("datetime"),
})
return reviewsReplace YOUR_API_KEY with your key from the dashboard. No credit card required.
Ready to try it?
Run this tutorial on live websites with AlterLab's API. Start free — no credit card required.
Frequently Asked Questions
Responsible Use
AlterLab is designed for extracting publicly available data. Always review the terms of service for any website you access, respect robots.txt directives, and ensure your use case complies with applicable laws in your jurisdiction.
More tutorials
Browse all how-to guides for web scraping — from beginner extractions to advanced multi-page pipelines.
Your first scrape.
Sixty seconds.
$1 free balance. No credit card. No SDK.
Just a POST request.
No credit card required · Up to 5,000 free scrapes · Balance never expire