Oxylabs vs PricesAPI
Follow Shopping results to seller prices and delivery, or read stored offers and observed price history.
Use PricesAPI data to build price comparisons and history views. Coverage varies by product and market; your application handles analysis and pricing decisions.
Oxylabs fits apps that need localized Google Shopping search, variant information and seller-level shipping and condition fields. PricesAPI fits retained seller comparisons and history charts for a selected product and market.
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.
- Shopping search: filters and tokens
- Shopping product: offers, variants and job timestamps (freshness checked 2026-10-01)
- Realtime synchronous delivery (checked 2026-10-01)
- SERP localization and location fallback
- Push-Pull jobs and batch submission
- Scheduler
- Billable results and failures
- HTTP and parser status codes
- Trial and rendered-result pricing
| Feature | PricesAPI | Oxylabs |
|---|---|---|
| Free access | Free, one-time: 300 Searches with merchant offers (3,000 credits); 6 rpm | Trial: up to 2,000 results, no credit card required. Trial extraction was not tested here. |
| Paid access | $49/month: 3,000 Searches with merchant offers (30,000 credits); 20 rpm | Micro: $49/month; rendered results $1.35/1,000. The advertised 98,000 maximum uses a cheaper target rate, not rendered Shopping. |
| 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. A cluster is not an exact product ID. | Search uses query, geo_location, locale and price/sort context. Follow the returned token, not product_id, to product details. Tokens embed locale; unknown location text can silently lose targeting. |
| 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. | pricing.online includes seller, seller_link, price, price_shipping and condition; variants is documented. These fields support comparison, not a guaranteed address- and tax-specific checkout total. |
| Currency | Snapshot and History currency is inferred from the requested market, such as USD for market=us. Compare item prices within the same market. | Search cards and product seller offers document currency alongside numeric price. Currency provenance and cross-market accuracy were not tested. |
| Freshness | Search no_cache=true bypasses stored results but may share an in-flight collection. Snapshot is a retained read: it does not trigger a fresh scrape. Inspect observation time and stale state; neither operation confirms the seller's current checkout price. | Realtime means synchronous delivery. Shopping result created_at and updated_at describe job creation and completion, not the seller's last price change. The reviewed Shopping contracts establish no cache-bypass control. |
| History | Read retained offers for a window with explicit coverage; leave missing days as gaps. Available depth varies by product and market. | These Shopping endpoints do not document a pre-existing price-history window. Push-Pull retains completed results for at least 24 hours; Scheduler can build your own future collections. |
| Pagination and async | Snapshot: up to 60 offers, truncation flag, no offer cursor. History has bound cursors; Batch reads products and Async Bulk Search submits discovery jobs. | Search has start_page/pages. Push-Pull runs asynchronously, supports callbacks and batches up to 5,000 query/URL values. Each becomes a separate job; product follow-ups are separate work. |
| 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. | Retrieved pages/results, not product cards. Rendered search plus one rendered product follow-up is two results. Compare that job, not the unrendered single-page rate. |
| Failures | Distinguish 404 unknown identity, 403 balance, 409 expired History cursor and 429 with Retry-After. Restarting an expired walk can bill again. | Check HTTP, job status and parse_status_code: 12000 means parsed successfully. HTTP 204 means not ready. Target 2xx/4xx can bill even without useful content; 429 and system failures are excluded. |
- Feature
- Free access
- PricesAPI
- Free, one-time: 300 Searches with merchant offers (3,000 credits); 6 rpm
- Oxylabs
- Trial: up to 2,000 results, no credit card required. Trial extraction was not tested here.
- Feature
- Paid access
- PricesAPI
- $49/month: 3,000 Searches with merchant offers (30,000 credits); 20 rpm
- Oxylabs
- Micro: $49/month; rendered results $1.35/1,000. The advertised 98,000 maximum uses a cheaper target rate, not rendered Shopping.
- 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. A cluster is not an exact product ID.
- Oxylabs
- Search uses query, geo_location, locale and price/sort context. Follow the returned token, not product_id, to product details. Tokens embed locale; unknown location text can silently lose targeting.
- 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.
- Oxylabs
- pricing.online includes seller, seller_link, price, price_shipping and condition; variants is documented. These fields support comparison, not a guaranteed address- and tax-specific checkout total.
- 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.
- Oxylabs
- Search cards and product seller offers document currency alongside numeric price. Currency provenance and cross-market accuracy were not tested.
- Feature
- Freshness
- PricesAPI
- Search no_cache=true bypasses stored results but may share an in-flight collection. Snapshot is a retained read: it does not trigger a fresh scrape. Inspect observation time and stale state; neither operation confirms the seller's current checkout price.
- Oxylabs
- Realtime means synchronous delivery. Shopping result created_at and updated_at describe job creation and completion, not the seller's last price change. The reviewed Shopping contracts establish no cache-bypass control.
- Feature
- History
- PricesAPI
- Read retained offers for a window with explicit coverage; leave missing days as gaps. Available depth varies by product and market.
- Oxylabs
- These Shopping endpoints do not document a pre-existing price-history window. Push-Pull retains completed results for at least 24 hours; Scheduler can build your own future collections.
- 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 submits discovery jobs.
- Oxylabs
- Search has start_page/pages. Push-Pull runs asynchronously, supports callbacks and batches up to 5,000 query/URL values. Each becomes a separate job; product follow-ups are separate work.
- 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.
- Oxylabs
- Retrieved pages/results, not product cards. Rendered search plus one rendered product follow-up is two results. Compare that job, not the unrendered single-page rate.
- 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.
- Oxylabs
- Check HTTP, job status and parse_status_code: 12000 means parsed successfully. HTTP 204 means not ready. Target 2xx/4xx can bill even without useful content; 429 and system failures are excluded.
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
- You need stored offers and recorded history without collecting every observation yourself, where coverage exists.
- You want item prices and seller delivery text for a selected product and market, with explicit history coverage and gaps.
Choose Oxylabs when
- You need localized Shopping search, sort/price controls, and documented seller shipping and condition fields.
- You want on-demand rendered product pages or cron collection, and can manage token follow-ups, parser status and your own history.
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. Invented values; parsed-content projection.
POST https://realtime.oxylabs.io/v1/queries
Authorization: Basic BASE64_USERNAME_PASSWORD
Content-Type: application/json
Search body:
{
"source": "google_shopping_search",
"query": "noise cancelling headphones",
"geo_location": "Australia",
"locale": "en-AU",
"render": "html",
"parse": true,
"pages": 1
}
Select the intended variant; copy its returned token.
POST the following to the same endpoint; keep the token's locale.
Product body:
{
"source": "google_shopping_product",
"query": "TOKEN_FROM_SELECTED_CARD",
"render": "html",
"parse": true
}
Parsed content only; transport/job metadata omitted.
Response fragment:
{
"title": "Example headphones",
"pricing": {
"online": [{
"seller": "Example Shop",
"seller_link": "https://shop.example/headphones",
"price": 179,
"currency": "AUD",
"price_shipping": 9.5,
"condition": "New",
"details": "Delivery estimate shown by Google"
}]
},
"variants": [],
"parse_status_code": 12000
}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.