Review Scraper API: Public Review Pages from Any Site
ProxyField's Web Scraping API is designed to fetch the G2, Capterra and Trustpilot review pages of a whole competitor list in batches of up to 1,000 URLs, at $0.50 per 1,000 successful results ($0.20 from 10,000 results in one purchase): 50 competitors × 3 sites × 10 review pages is 1,500 pages, $0.75. It returns each page, not parsed review fields; the parser on this page turns the pages into a CSV of competitor, site, rating, date and text. G2's and Trustpilot's terms require their permission for automated collection, so get it first. The API is in development (Contact sales); to run your own scraper today, start with residential proxies on the Easy Trial: 1 GB for $2.95.
Through the sales team on our 24/7 live chat
| Fetch | Entry | Volume, from |
|---|---|---|
| HTTP | $0.50 | $0.20 |
| JS rendering | $2.00 | $1.00 |
Billed on successful results only.
What this is, and what it is not
| What you send | A list of review page URLs, one per page, with the site's own filters in the URL |
|---|---|
| What you get back | The page: HTML, Markdown, text or a JSON envelope with status code, final URL, headers, cookies and content |
| Parsed review fields | Not included: your parser reads rating, date and text (a ready parser is below) |
| Price per page | $0.50 per 1,000 successful results (HTTP) or $2.00 (JS rendering); $0.20 and $1.00 from 10,000 results in one purchase |
| Price per review | About $0.025 to $0.05 per 1,000 reviews over plain HTTP, if a page holds 10 to 20 reviews (count them on your target's page) |
| Volume | 20 concurrent requests per account, batches of up to 1,000 URLs, results kept 48 hours |
| Status | In development: Contact sales; the design is in the API documentation |
| Site terms | Public pages only, and follow each site's terms: G2's and Trustpilot's terms forbid scraping without their permission (below) |
When a parsed review service fits better: you want rating, pros and cons as ready fields and do not want to maintain a parser. When this API fits better: you track many sites or your own list of pages, and want to pay per page, from $0.20 per 1,000.
Pull G2, Trustpilot and Capterra reviews for a list of competitors
Four steps, about $0.75 for 1,500 pages: build the review page URLs, send them as one batch, fetch the finished pages, parse them into a CSV. The API returns pages, so the parsing is yours: one function covers every page that carries schema.org review data, and a site without it needs a function of its own.
Read moreShow less
First, the terms:
- G2's terms of use (last updated July 9, 2026), section 9: without G2's express prior written consent you may not "access, collect, copy, scrape, harvest … or otherwise extract any content or data from the Site … through automated, programmatic, or mechanical means", nor "disguise, rotate, or misrepresent your identity, access origin, or technical characteristics (including by using proxies …)".
- Trustpilot's terms of use for consumers (version 8.0, in effect from October 1, 2026), section 4: no "text mining, data mining or web scraping of our platform for any purpose without our express permission".
- Capterra and any other site: read its terms before you add it to the list.
For G2 and Trustpilot, get the platform's permission or a data agreement first. ProxyField's rule for every site: public pages only, and follow the site's terms.
| Site | Review page URL pattern | What a logged-out visitor sees |
|---|---|---|
| G2 | g2.com/products/<product>/reviews?page=2 | Star rating, title, what the reviewer likes and dislikes, date, reviewer's role and company size, verification labels |
| Capterra | capterra.com/p/<id>/<product>/reviews/ | Overall and sub-ratings (ease of use, support, value), pros and cons, date, reviewer's industry and company size |
| Trustpilot | trustpilot.com/review/<domain>?page=2 | TrustScore, star rating, title, text, date of experience, country, the company's reply |
| BBB | bbb.org/us/<state>/<city>/profile/<category>/<business> | BBB letter grade, accreditation, customer review stars and text, complaints and the business's responses |
| Store and brand sites | product pages | Ratings and reviews per product, often in schema.org data |
Step 1 and 2: send the list as a batch (the API's design; access through Contact sales). Each item overrides the shared params; the answer lists one job id per item, in order, and a signed callback arrives for every finished page:
import json, requests
API = "https://api.proxyfield.io/v1"
HEADERS = {"Authorization": "Bearer <api_key>"}
# Review pages you may collect: sites whose terms allow it, or that gave you permission
competitors = {
"competitor-a": {"site-1": "https://www.example-reviews.com/company/competitor-a?page={n}"},
"competitor-b": {"site-1": "https://www.example-reviews.com/company/competitor-b?page={n}"},
}
items, meta = [], []
for comp, sites in competitors.items():
for site, pattern in sites.items():
for n in range(1, 11): # 10 review pages each
items.append({"url": pattern.format(n=n)})
meta.append({"competitor": comp, "site": site, "page": n})
jobs = []
for start in range(0, len(items), 1000): # up to 1,000 items per batch
r = requests.post(f"{API}/jobs/batch", headers=HEADERS, timeout=60, json={
"api": "web_scrape",
"params": {"render": False, "country": "us", "output": "json"},
"items": items[start:start + 1000],
"callback_url": "https://your-app.example/hooks/reviews",
"tag": "competitor-reviews"})
jobs += [j["id"] for j in r.json()["jobs"]] # one job per item, in order
json.dump([dict(m, job=j) for m, j in zip(meta, jobs)], open("jobs.json", "w"))Step 3 and 4: fetch the finished pages and write the CSV. GET /v1/jobs/{id} returns the job with its result once its status is done, for 48 hours, and is not billed; the parser reads every schema.org Review on the page:
import csv, json, requests
from bs4 import BeautifulSoup
API, HEADERS = "https://api.proxyfield.io/v1", {"Authorization": "Bearer <api_key>"}
def nodes(data):
"""Every JSON-LD object, including those inside @graph, lists and 'review'."""
if isinstance(data, list):
for d in data:
yield from nodes(d)
elif isinstance(data, dict):
yield data
for key in ("@graph", "review", "itemReviewed"):
yield from nodes(data.get(key, []))
def reviews(html):
for tag in BeautifulSoup(html, "html.parser").find_all("script", type="application/ld+json"):
try:
data = json.loads(tag.string or "")
except ValueError:
continue
for n in nodes(data):
if n.get("@type") == "Review":
yield {"rating": (n.get("reviewRating") or {}).get("ratingValue"),
"date": n.get("datePublished"),
"text": " ".join((n.get("reviewBody") or "").split())[:2000]}
with open("reviews.csv", "w", newline="") as f:
out = csv.DictWriter(f, ["competitor", "site", "page", "rating", "date", "text"])
out.writeheader()
for job in json.load(open("jobs.json")):
res = requests.get(f"{API}/jobs/{job['job']}", headers=HEADERS, timeout=30).json()
if res.get("status") != "done":
print(res.get("status"), job) # queued, running or failed: fetch it later
continue
rows = list(reviews(res["result"].get("content", "")))
if not rows:
print("no reviews on", job) # save the page, check it, add a site parser
for row in rows:
out.writerow({"competitor": job["competitor"], "site": job["site"],
"page": job["page"], **row})What reviews.csv looks like (illustrative values):
competitor,site,page,rating,date,text
competitor-a,site-1,1,5,2026-10-21,"Setup took an afternoon and support answered the same day."
competitor-a,site-1,1,2,2026-10-19,"Reporting is slow once you pass a few thousand rows."
competitor-b,site-1,1,4,2026-10-20,"Good value for a small team; the mobile app lags behind the web."The CSV keeps rating, date and text and leaves out reviewer names, which are personal data. A page with no schema.org reviews prints a line: save one such page, read where it keeps the reviews (an embedded JSON block or the HTML) and add a function for that site. Re-check each parser on a saved page every week, since review sites change their pages.
What's the best proxy for scraping Trustpilot or G2 reviews?
Where a review site allows automated collection, or you have its permission, use rotating residential proxies in the country of the review pages: ProxyField residential costs $2.95/GB for 1 GB and falls to $1.95/GB from 1,000 GB. For G2 and Trustpilot themselves, a proxy does not change whether you may collect: both terms forbid automated collection without permission, and G2's names proxy rotation as a breach (quoted above). So the first choice for those two is a permission route, and the proxy choice comes after it. Proxies for other targets: proxies by use case.
Read moreShow less
| Permission route | What you get | Who it suits |
|---|---|---|
| The platform's business API | Reviews of your own company or products, under the platform's terms | The reviewed business |
| A data agreement or partner program with the platform | Data the platform agrees to share, on its terms | Teams that need competitors' reviews on that platform |
| Public pages of a site whose terms allow collection | The pages a logged-out visitor sees | Everyone, with the proxies below |
| Proxy option | Price | When |
|---|---|---|
| Residential proxies, rotating | $2.95/GB for 1 GB, down to $1.95/GB from 1,000 GB | The default for permitted public review pages |
| Mobile 5G/4G proxies | $3.45/GB for 1 GB, down to $2.45/GB from 1,000 GB | When residential IPs get challenged |
| Web Scraping API | $0.50 per 1,000 successful results, from $0.20 | When you do not want to manage IPs and retries (in development; Contact sales) |
How to run it: a new IP per request, a few seconds apart per IP, in the country whose reviews you read; a sticky session (30 s to 36 h, 20 minutes by default) only if the site needs the same IP across pages. Review platforms protect their pages from bulk copying: a fast run from one IP or a datacenter range gets a challenge page, an error or pages without reviews, and sites that build pages in the browser return little to plain HTTP. Render only where needed, and check each page for reviews before you store it.
How the Web Scraping API is designed to fetch review pages
You send a review page URL and choose plain HTTP or JS rendering; the API returns the page. In its design, the API takes a POST to https://api.proxyfield.io/v1/scrape with your API key in an Authorization: Bearer <api_key> header and a JSON body: url, render (false for plain HTTP, true for JS rendering), country and output (html, markdown, text or json). For reviews that a site builds in the browser, wait_for takes a CSS selector to wait for before the rendered page is returned. Parameter reference: API documentation.
# The request as the Web Scraping API is designed (in development; access through Contact sales)
curl https://api.proxyfield.io/v1/scrape \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"url": "https://shop.example.com/products/espresso-machine", "render": false, "country": "us", "output": "json"}'Example response in the API's design (shortened; content is the page's HTML):
{
"metadata": {"id": "req_7d2e19b4a6c05f83", "api": "web_scrape", "status": "success", "billed": true},
"status_code": 200,
"final_url": "https://shop.example.com/products/espresso-machine",
"content_type": "text/html; charset=utf-8",
"content": "<!DOCTYPE html><html lang=\"en-US\">…</html>"
}| Mode | Price per 1,000 successful results | Use it for |
|---|---|---|
| Plain HTTP | $0.50, or $0.20 from 10,000 results in one purchase | Review pages that carry the reviews in the HTML or in an embedded JSON block |
| JS rendering | $2.00, or $1.00 from 10,000 results in one purchase | Reviews that load as you scroll or click "Show more", and sites that build pages in the browser |
Filters you set on a review site, such as star rating, language or sort by newest, usually become part of the page URL; send that URL to fetch only the reviews you need.
Pricing: $0.50 per 1,000 review pages, from $0.20
One result is one page. If a page shows 10 to 20 reviews, 1,000 pages are 10,000 to 20,000 reviews: about $0.025 to $0.05 per 1,000 reviews over plain HTTP. The reviews per page differ by site, so count them on your target before you budget. From 10,000 successful results in one purchase, the price is $0.20 (HTTP) or $1.00 (JS).
- Billed: a page the site returned, including a target's 404 or 410 and a sign-in page served with a 200 status.
- Not billed: error responses, blocked and timed-out requests, and our internal retries.
- In the API's design, every response says whether it was billed.
Payment: the same crypto balance as proxies (USDT, BTC, ETH and 10 other coins), which never expires; there is no subscription, plan or monthly fee. All prices: pricing. Contact sales through the sales team on our 24/7 live chat.
Through the sales team on our 24/7 live chat
| Workload (30-day month) | Pages a month | Plain HTTP at $0.50 | JS rendering at $2.00 |
|---|---|---|---|
| 50 competitors × G2, Capterra and Trustpilot × 10 review pages, once | 1,500 | $0.75 | $3 |
| 200 software products, about 10 review pages each, monthly | 2,000 | $1 | $4 |
| 5,000 business profiles, once a month | 5,000 | $2.50 | $10 |
| 1,000 businesses on a review site, newest page daily | 30,000 | $15 ($6 at $0.20) | $60 ($30 at $1.00) |
Review site APIs or scraping?
Most review platforms have APIs, but for the reviewed company, not for the market. Trustpilot's and G2's APIs let a business read and manage reviews of its own products or company under their terms, and their partner programs share more with approved partners. For competitors' reviews on those two platforms, ask the platform about a data agreement; on sites whose terms allow it, teams read the public pages.
| Item | Review platforms' business APIs | Web Scraping API |
|---|---|---|
| Who can use it | The reviewed business and approved partners | ProxyField customers (in development; Contact sales) |
| Data | Reviews of your own company or products | Public review pages you may collect |
| Parsed fields | Yes | No: the page, parsed by you (parser above) |
| Cost | Set by the platform | $0.50 per 1,000 successful results, from $0.20 |
What teams use review data for
- Product research: what users of a software category praise and complain about.
- Competitive analysis: your rating trend against competitors', and the topics behind it.
- Reputation monitoring: new reviews and complaints about your brand, daily.
- Sentiment analysis and AI training sets built from review text, within the sites' terms and copyright.
Posting, editing or rating reviews through a script is not data collection: fake accounts and fake engagement are forbidden under ProxyField's acceptable use policy.
Scrape product reviews with Python and ProxyField proxies
The same reviews() function works on your own scraper: fetch a public product page through a rotating residential IP and read its schema.org Review data. Check one page by hand first.
import requests
# reviews(): as in the parser above
proxy = "http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000"
url = "https://shop.example.com/products/espresso-machine" # a public product page
resp = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30,
headers={"User-Agent": "Mozilla/5.0", "Accept-Language": "en-US"})
for row in reviews(resp.text):
print(row["rating"], row["date"], row["text"][:80])ProxyField gives you 412M+ residential IPs in 195+ countries, a new IP on every request or a sticky session from 30 s to 36 h, and unlimited concurrent threads; for sites that need a browser, use Playwright with the same gateway. Residential proxies cost $2.95/GB for 1 GB and from $1.95/GB at volume; the traffic never expires, and all purchases are final.
Terms, copyright and personal data
A site's terms are a separate question from the law: a breach of terms can cost you access or bring a contract claim even where no law is broken. G2's and Trustpilot's current terms, quoted above, forbid automated collection without permission. Review texts can be protected by copyright, and reviewers' names and profiles are personal data under EU and UK data protection law. Store ratings, dates and the text you need for analysis, quote short excerpts, and drop names unless your purpose needs them. More in Web scraping and GDPR and Is Web Scraping Legal? US, EU and UK Rules (2026). This is not legal advice.
More scrapers
- Amazon scraper API: Amazon product pages with their reviews, $0.60 per 1,000 successful results, from $0.30.
- Google Maps scraper API: Google Maps search results, for local businesses and their ratings.
- Yelp scraper, Glassdoor scraper and Google Play scraper: review sites with their own pages.
- Travel review scraper: hotel, restaurant and attraction reviews on travel sites.
- All scrapers: scrapers.
Review Scraper API FAQ
24/7 support by live chat, including help with setup and integration.
Which review scraper API can pull Trustpilot, G2 and Capterra reviews for a list of competitors?
ProxyField's Web Scraping API is designed to take a competitor list as review page URLs, in batches of up to 1,000, and return each page for $0.50 per 1,000 successful results: 50 competitors × 3 sites × 10 pages is $0.75, about $0.025 to $0.05 per 1,000 reviews at 10 to 20 reviews a page. It returns pages, not parsed fields, and the parser on this page writes them to a CSV of competitor, site, rating, date and text. The API is in development (Contact sales), and G2's and Trustpilot's terms require their permission first.
What is a review scraper API?
ProxyField's review scraper API is its Web Scraping API used on review pages, priced at $0.50 per 1,000 successful results, or $0.20 from 10,000 results; it is in development, with access through Contact sales. In general, a review scraper API fetches review pages through its own IPs so you can collect ratings, texts and dates without running your own proxies; some return parsed fields, while ProxyField's returns the page for your parser.
How do I scrape reviews with an API?
Build the list of review page URLs for the companies or products you track, including the page numbers and any filter in the URL, send them to the API, and parse each returned page into rows of rating, date and text. Run it on a schedule and keep only reviews you have not stored yet.
Why scrape customer reviews?
Reviews tell you what customers like and dislike in their own words, for your products and your competitors'. Teams use them for product research, competitive analysis, reputation monitoring and sentiment analysis.
What filters and limits does a review scraper have?
The filters are the site's own: star rating, language, date or sort order, set in the review page URL you send. The limits are the site's too: it shows a fixed number of reviews per page and may cap how far back you can page, and a scraper only sees what a logged-out visitor sees.
Can a review scraper pull reviews for a specific business or marketplace?
Yes, where the site's terms allow it: every business or product has its own review URL, so you collect exactly the ones you list. Marketplaces work the same way, page by page per product.
What does a G2 scraper do?
A G2 scraper collects a software product's public reviews on G2: star rating, title, likes and dislikes, date, the reviewer's role and company size. G2's terms of use (updated July 9, 2026, section 9) forbid automated collection and the use of proxies to rotate your origin, so it needs G2's written consent or a data agreement.
How many G2 reviews can I get per product?
As many as the product's public review pages show; a product with 300 reviews at 10 per page is about 30 pages. G2's terms forbid automated collection, so arrange it with G2 before you collect at any volume.
What does scraping G2 reviews cost per product?
On ProxyField's Web Scraping API, one product with about 30 review pages costs about $0.015 over plain HTTP, at $0.50 per 1,000 successful results ($2.00 with JS rendering). That assumes G2's permission, which its terms require for automated collection.
Do I need a G2 account or a browser to scrape G2?
G2's review pages are public, but its terms forbid automated collection without permission, so the first thing you need is G2's agreement, not an account. With it, a scraper stays logged out; test plain HTTP first and render only if the reviews are missing.
Show 11 more questionsShow fewer questions
How do I scrape Trustpilot reviews?
Ask Trustpilot first: its terms for consumers (version 8.0, in effect from October 1, 2026, section 4) forbid text mining, data mining and web scraping without express permission. With permission, the pages are trustpilot.com/review/<domain> and ?page=2, ?page=3 and so on; for reviews of your own company, Trustpilot's business API is the route.
What data can you scrape from Trustpilot?
A Trustpilot company page shows the TrustScore and review count, and per review the star rating, title, text, date of experience, the reviewer's country and the company's reply. Collecting it needs Trustpilot's permission under its terms, and reviewer names are personal data, so keep them only if you need them.
Can I scrape Capterra reviews?
Read Capterra's terms first. Each product's reviews page shows the overall and sub-ratings, pros and cons, date and the reviewer's industry and company size, page by page, and Capterra protects its pages, so any permitted run needs a slow pace and a check of each page for reviews.
What is a BBB scraper?
A tool that collects public Better Business Bureau profiles: the business's BBB letter grade, accreditation, contact details, customer review stars and text, and complaints with the business's responses. It is used for vetting businesses and monitoring a brand's complaints, within BBB's terms.
Is the BBB grade the same as the customer star rating?
No: the BBB letter grade, from A+ to F, is BBB's own assessment of the business, including how it handles complaints, while the stars are the average of customer reviews. Store them as two separate fields.
Can I extract customer reviews and complaints from BBB?
Both are on the public profile, usually on separate tabs with their own pages; read BBB's terms before you collect them. Keep the date, the text and the business's response for each, and leave out the names of the people who wrote them unless you need them.
Is there a BBB API?
Check BBB's own site for an API or a data partnership, which is the cleanest route at scale. Without one, the source is the public profile pages, under BBB's terms.
Can I scrape only negative reviews, or only new ones?
Usually yes, through the site's own filters: most review sites let you filter by star rating and sort by newest, and the filter shows up in the URL. For new reviews, sort by newest and stop paging when you reach a review you already have.
Can I scrape reviews in other languages and countries?
Yes, where the site allows it: many review sites show reviews in all languages or let you filter by language in the URL, and some show country-specific views. Fetch from an IP in the country you need; ProxyField has residential IPs in 195+ countries.
How often should I re-scrape reviews?
Daily for reputation monitoring of your own brand, weekly or monthly for market research. Sort by newest and fetch only the first pages each time, so a frequent run stays small.
What should I know before I start scraping reviews?
Check the site's terms, decide which fields you need, and leave out reviewer names unless your purpose requires them, since they are personal data. Plan for paging, filters in the URL and the site's bot checks, and validate every page before you store it.
Related pages
Start collecting public pages with the Web Scraping API
Billed on successful results only. Contact sales for the Web Scraping API and the volume you need, or run your own scraper on residential proxies. 24/7 live chat helps with setup and integration.