ScrapingBee vs PricesAPI
Search Google Shopping with price and location controls, or read stored seller offers and recorded history.
Use PricesAPI data to build price comparisons and history views. Coverage varies by product and market; your application handles analysis and pricing decisions.
ScrapingBee has a dedicated structured Google Shopping API, not just an HTML scraper. Choose it for filtered Shopping discovery; choose PricesAPI for exact-product retained reads and history charts where coverage exists.
Official-source facts
Reviewed 2026-09-22. Competitor facts below come from these official sources; PricesAPI facts come from our API documentation and pricing rules. Documented fields do not establish coverage, accuracy or performance for your products. We have not run a paid head-to-head benchmark.
| Feature | PricesAPI | ScrapingBee |
|---|---|---|
| Free access | Free, one-time: 300 Searches with merchant offers (3,000 credits); 6 rpm | Check the current trial allowance; this endpoint review does not compare trial account terms. |
| Paid access | $49/month: 3,000 Searches with merchant offers (30,000 credits); 20 rpm | Choose a credit plan for Google API usage. Credits are not Shopping searches: light and regular requests have different costs. |
| Identity and market | Known IDs skip discovery: send id, id_type (pricesapi or catalog), and market directly to Snapshot or History. Free Catalog text search finds candidate products. Name matches do not confirm physical variants, and Catalog summaries do not prove History availability. | search plus search_type=shopping; country_code and paired coordinates with optional radius target geography. The maintained reference lists language; the HTML table omits it and documents extra_params.locale for interface language, not result language. Their precedence is unverified. min_price, max_price, sort_by and nfpr refine discovery. A product-follow-up identifier contract was not established. |
| Seller offers and delivery | Snapshot provides seller IDs and URLs. Snapshot and History have no numeric shipping field: price is the item price; delivery_info is seller delivery text (null means unknown, not free). Delivery depends on the buyer's location. Condition is not published on either retained read. | Structured Shopping search is documented. Exact seller, variant, condition and shipping item fields are unknown in the reviewed references, not proven absent. |
| Currency | Snapshot and History currency is inferred from the requested market, such as USD for market=us. Compare item prices within the same market. | Price filters use the market's local currency. The reviewed docs do not establish per-offer ISO currency fields or currency provenance. |
| Freshness | Snapshot exposes observation time, age and stale state. Reading it does not request a fresh scrape or confirm the seller's current price. | The API acquires search results on request. light_request=true is browserless and may omit data; false uses a browser. Actual age and per-offer timestamps were not verified. |
| History | Read recorded offers in a date window with explicit coverage. Leave unobserved days as gaps; depth varies by product and market. | This Google endpoint does not document a retained product-price-history window. date_range filters publication recency on other search types; it is not Shopping price history. |
| Pagination and async | Snapshot: up to 60 offers, truncation flag, no offer cursor. History has bound cursors; Batch reads products and Async Bulk Search runs discovery jobs. | page selects the starting page; pages is the count to aggregate. page=2&pages=3 combines pages 2–4. The count can be up to ten; the vendor recommends at most three. This is a synchronous query; an async Shopping job or keyword-array contract was not established. |
| Billing unit | Search Products: 10 credits per response with at least one merchant offer; Product Snapshot: 1 credit per product; Price History: 1 credit per day with recorded offers. History reserves requested days, then refunds days without offers; valid continuations add no charge. A known-product Snapshot with no offers still bills. | Successful light requests cost 10 credits; regular requests 15. Check Spb-cost. Multi-page billing is unresolved in the vendor's reference notes; do not assume pages are free. |
| Failures | Distinguish 404 unknown identity, 403 balance, 409 expired History cursor and 429 with Retry-After. Restarting an expired walk can bill again. | Google search retries failures server-side for up to 30 seconds. Unsupported extra_params keys produce HTTP 400 with errors.query.extra_params; duplicate keys are also rejected. This validation example establishes no billing or refund rule. A complete Shopping error/refund matrix remains unverified; general HTML API status rules are not a Shopping guarantee. |
- Feature
- Free access
- PricesAPI
- Free, one-time: 300 Searches with merchant offers (3,000 credits); 6 rpm
- ScrapingBee
- Check the current trial allowance; this endpoint review does not compare trial account terms.
- Feature
- Paid access
- PricesAPI
- $49/month: 3,000 Searches with merchant offers (30,000 credits); 20 rpm
- ScrapingBee
- Choose a credit plan for Google API usage. Credits are not Shopping searches: light and regular requests have different costs.
- Feature
- Identity and market
- PricesAPI
- Known IDs skip discovery: send id, id_type (pricesapi or catalog), and market directly to Snapshot or History. Free Catalog text search finds candidate products. Name matches do not confirm physical variants, and Catalog summaries do not prove History availability.
- ScrapingBee
- search plus search_type=shopping; country_code and paired coordinates with optional radius target geography. The maintained reference lists language; the HTML table omits it and documents extra_params.locale for interface language, not result language. Their precedence is unverified. min_price, max_price, sort_by and nfpr refine discovery. A product-follow-up identifier contract was not established.
- Feature
- Seller offers and delivery
- PricesAPI
- Snapshot provides seller IDs and URLs. Snapshot and History have no numeric shipping field: price is the item price; delivery_info is seller delivery text (null means unknown, not free). Delivery depends on the buyer's location. Condition is not published on either retained read.
- ScrapingBee
- Structured Shopping search is documented. Exact seller, variant, condition and shipping item fields are unknown in the reviewed references, not proven absent.
- Feature
- Currency
- PricesAPI
- Snapshot and History currency is inferred from the requested market, such as USD for market=us. Compare item prices within the same market.
- ScrapingBee
- Price filters use the market's local currency. The reviewed docs do not establish per-offer ISO currency fields or currency provenance.
- Feature
- Freshness
- PricesAPI
- Snapshot exposes observation time, age and stale state. Reading it does not request a fresh scrape or confirm the seller's current price.
- ScrapingBee
- The API acquires search results on request. light_request=true is browserless and may omit data; false uses a browser. Actual age and per-offer timestamps were not verified.
- Feature
- History
- PricesAPI
- Read recorded offers in a date window with explicit coverage. Leave unobserved days as gaps; depth varies by product and market.
- ScrapingBee
- This Google endpoint does not document a retained product-price-history window. date_range filters publication recency on other search types; it is not Shopping price history.
- Feature
- Pagination and async
- PricesAPI
- Snapshot: up to 60 offers, truncation flag, no offer cursor. History has bound cursors; Batch reads products and Async Bulk Search runs discovery jobs.
- ScrapingBee
- page selects the starting page; pages is the count to aggregate. page=2&pages=3 combines pages 2–4. The count can be up to ten; the vendor recommends at most three. This is a synchronous query; an async Shopping job or keyword-array contract was not established.
- Feature
- Billing unit
- PricesAPI
- Search Products: 10 credits per response with at least one merchant offer; Product Snapshot: 1 credit per product; Price History: 1 credit per day with recorded offers. History reserves requested days, then refunds days without offers; valid continuations add no charge. A known-product Snapshot with no offers still bills.
- ScrapingBee
- Successful light requests cost 10 credits; regular requests 15. Check Spb-cost. Multi-page billing is unresolved in the vendor's reference notes; do not assume pages are free.
- Feature
- Failures
- PricesAPI
- Distinguish 404 unknown identity, 403 balance, 409 expired History cursor and 429 with Retry-After. Restarting an expired walk can bill again.
- ScrapingBee
- Google search retries failures server-side for up to 30 seconds. Unsupported extra_params keys produce HTTP 400 with errors.query.extra_params; duplicate keys are also rejected. This validation example establishes no billing or refund rule. A complete Shopping error/refund matrix remains unverified; general HTML API status rules are not a Shopping guarantee.
Credits, searches and extracted records are different billing units. Compare the work each request does, not just the number included in a plan. The recommendations below are our assessment.
Choose PricesAPI when
- Your app needs typed product references, stored seller offers and coverage-aware history, not only search results.
- You can handle unknown shipping and market-inferred currency, and want explicit observation age and missing-history gaps.
Choose ScrapingBee when
- You need a simple structured Shopping request with price sorting, filtering and geographic controls.
- You can validate the Shopping response fields and light-mode completeness for your own use case before relying on them.
Building a price tracker?
Already have a product ID? Use id, id_type=pricesapi|catalog and market directly with Snapshot or History, both in public Beta. Choose the read your app needs; History does not require a Snapshot request.
- Find candidates for free. If you need an ID, search by product or seller text and market. Check that the result matches your product. Catalog summaries do not guarantee History availability.
- Compare stored seller prices. Read a product’s latest retained offers. Show when each offer was observed; a stored offer is not a live-price guarantee.
- Chart recorded prices. Read a date window and follow the remaining pages. Compare a headphone promotion with its earlier recorded prices, leaving unobserved days as gaps.
History reports coverage for your requested window. It first reserves credits for the full window, then refunds days without offers; continuation pages add no charge. Check the billing rules before choosing a long window.
Response shape
Product Search API returns matched products with available merchant offers inline. Carry a result’s product_ref into Snapshot or History; free product lookup is another starting point. Both examples are illustrative and based on the linked contracts; values are not live measurements or current commercial data.
GET /api/v1/products/search?q=Sony%20WH-1000XM5&market=us
{
"success": true,
"data": {
"query": "Sony WH-1000XM5",
"market": "us",
"products": [{
"position": 1,
"pid": 100569554,
"product_ref": { "id": "100569554", "id_type": "pricesapi", "market": "us" },
"cluster_id": "123456789",
"catalog_id": "987654321",
"title": "Sony WH-1000XM5 Wireless Headphones",
"image": "https://example.com/headphones.jpg",
"headline_price": 348,
"headline_currency": "USD",
"condition_label": null,
"source": "Amazon.com",
"multi_store": true,
"rating": 4.7,
"reviews": 8523,
"delivery": "Free delivery",
"tags": [],
"nearby_distance_km": null,
"offers": [{
"seller": "Amazon.com",
"seller_url": "https://amazon.com",
"price": 348,
"currency": "USD",
"product_title": "Sony WH-1000XM5",
"stock_status": "In stock",
"delivery_info": "Free delivery",
"url": "https://example.com/product"
}],
"offerCount": 1
}]
},
"meta": { "latency_ms": 842, "raw_count": 3, "gid_bearing_count": 2 }
}
Carry product_ref.id, id_type and market to the read you need:
GET /api/v1/products?id=100569554&id_type=pricesapi&market=us
GET /api/v1/products/history?id=100569554&id_type=pricesapi&market=us&from=2026-09-01&to=2026-09-07
Already have a catalog ID? Skip discovery and choose one read:
Snapshot:
GET /api/v1/products?id=987654321&id_type=catalog&market=us
History (no Snapshot request needed):
GET /api/v1/products/history?id=987654321&id_type=catalog&market=us&from=2026-09-01&to=2026-09-07
Snapshot: inspect observation and offers_page.truncated.
History: inspect coverage and follow page.next_cursor with the same parameters.
Null product_ref means no usable product identity; do not substitute cluster_id.Illustrative, not executed. No live prices or seller coverage measured.
GET https://app.scrapingbee.com/api/v1/google?search=noise%20cancelling%20headphones&search_type=shopping&country_code=au&sort_by=price_asc&min_price=100&max_price=300&page=1&pages=1&light_request=true
Authorization: Bearer YOUR_API_KEY
Common Google metadata projection only, not a verified Shopping item schema.
The reviewed references do not establish seller/price/variant field names.
Vendor notes flag flat standard JSON versus a statusCode/body add_html example.
That optional envelope is not runtime-verified here.
Response fragment:
{
"meta_data": {
"location": null,
"url": "https://www.google.com/search?q=noise+cancelling+headphones&gl=au"
}
}Try the Product Search API
3,000 free credits, granted once. That covers 300 Searches returning at least one merchant offer at 10 credits each. Searches with no products or no merchant offers, and failed requests, cost nothing. Snapshot and History use different billing units.
Need more? Developer is $49/month for 30,000 credits, with a limit of 20 requests per minute.