Everything you need to integrate PriceFetch into your application.
PriceFetch is a REST API that returns the current price of any product given its URL. Send a product URL from a supported retailer, and get back structured JSON with the price, currency, stock status, and more.
https://api.pricefetch.devAll requests require an API key passed via the X-API-Key header. Sign up for a free account to get your API key.
Authenticate every request by including your API key in the X-API-Key header.
bashcurl -H "X-API-Key: pf_live_abc123..." \ "https://api.pricefetch.dev/v1/price?url=https://amazon.com/dp/B0DFJ5K6JB"
API keys start with pf_live_ followed by 32 hex characters. You can generate and manage keys from your dashboard.
Fetch the current price of a product.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Full product URL from a supported retailer |
| Header | Required | Description |
|---|---|---|
X-API-Key | Yes | Your PriceFetch API key |
bashGET /v1/price?url=https://www.amazon.com/dp/B0DFJ5K6JB HTTP/1.1 Host: api.pricefetch.dev X-API-Key: pf_live_abc123...
All responses follow a consistent envelope format.
json{ "success": true, "data": { "url": "https://www.amazon.com/dp/B0DFJ5K6JB", "price": 29.99, "currency": "USD", "in_stock": true, "retailer": "amazon", "timestamp": "2026-03-22T12:00:00Z" }, "credits_remaining": 487, "request_id": "req_a1b2c3d4" }
| Field | Type | Description |
|---|---|---|
price | number | Product price as a decimal number |
currency | string | ISO 4217 currency code (USD, GBP, EUR, etc.) |
in_stock | boolean | Whether the product is currently in stock |
retailer | string | Detected retailer (amazon, walmart, newegg, iherb) |
timestamp | string | ISO 8601 timestamp of when the price was scraped |
credits_remaining | number | Your remaining credit balance |
When a request fails, the response includes a structured error object.
json{ "success": false, "error": { "code": "UNSUPPORTED_RETAILER", "message": "The provided URL is not from a supported retailer." }, "request_id": "req_xyz789" }
| HTTP | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Missing or invalid url parameter |
| 401 | INVALID_API_KEY | Missing or invalid API key |
| 402 | INSUFFICIENT_CREDITS | No credits remaining — top up on the billing page |
| 422 | UNSUPPORTED_RETAILER | URL is not from a supported retailer |
| 422 | PRICE_NOT_FOUND | Page loaded but no price could be extracted |
| 422 | PAGE_LOAD_FAILED | Could not load the product page (timeout, CAPTCHA, etc.) |
| 429 | RATE_LIMITED | Too many requests — check Retry-After header |
Rate limits are applied per API key.
| Limit | Value |
|---|---|
| Per-second burst | 5 requests/second |
| Monthly cap | 10,000 requests/month |
Every response includes rate limit headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per second |
X-RateLimit-Remaining | Remaining requests in current window |
X-RateLimit-Reset | Seconds until the rate limit resets |
X-Request-Id | Unique request identifier for debugging |
| Retailer | Domains | Currency |
|---|---|---|
| Amazon | amazon.com, amazon.co.uk, amazon.de, amazon.fr, amazon.co.jp, amazon.ca, amazon.com.au, +9 more | USD, GBP, EUR, JPY, CAD, AUD, etc. |
| Walmart | walmart.com | USD |
| Newegg | newegg.com, newegg.ca | USD, CAD |
| iHerb | iherb.com | USD |
More retailers coming soon. Request a retailer.
pythonimport requests response = requests.get( "https://api.pricefetch.dev/v1/price", params={"url": "https://www.amazon.com/dp/B0DFJ5K6JB"}, headers={"X-API-Key": "pf_live_your_key_here"} ) data = response.json() if data["success"]: product = data["data"] print(f"Price: {product['price']} {product['currency']}") print(f"In Stock: {product['in_stock']}") else: print(f"Error: {data['error']['message']}")
javascriptconst response = await fetch( "https://api.pricefetch.dev/v1/price?url=https://www.amazon.com/dp/B0DFJ5K6JB", { headers: { "X-API-Key": "pf_live_your_key_here" } } ); const data = await response.json(); if (data.success) { console.log(`Price: ${data.data.price} ${data.data.currency}`); console.log(`In Stock: ${data.data.in_stock}`); } else { console.error(`Error: ${data.error.message}`); }
bashcurl -s -H "X-API-Key: pf_live_your_key_here" \ "https://api.pricefetch.dev/v1/price?url=https://www.amazon.com/dp/B0DFJ5K6JB" \ | python3 -m json.tool