# Product Pages (PDP) > Source: https://scrape.do/documentation/amazon-scraper-api/pdp/ Extract structured product data from Amazon product detail pages The Product Detail Page (PDP) endpoint extracts comprehensive product information from any Amazon product page. It returns structured JSON data including the product title, pricing, ratings, images, long-form description, best seller rankings, and technical specifications (all parsed and ready to use without any HTML processing on your end). --- ## Endpoint ``` GET https://api.scrape.do/plugin/amazon/pdp ``` --- ## Input Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `token` | string | * | Your Scrape.do API authentication token | | `asin` | string | * | Amazon Standard Identification Number (10-character product ID) | | `geocode` | string | * | Amazon marketplace country code (e.g., `us`, `gb`, `de`, `jp`) | | `zipcode` | string | | Postal code formatted according to country requirements for ZIP-level marketplaces. Use either `zipcode` or `countryName`, not both. | | `countryName` | string | | Country-level location for marketplaces without ZIP-level delivery. Passing the marketplace's own country name (for example, `countryName=Turkey` with `geocode=tr`) is unnecessary and ignored. | | `super` | boolean | | Enable residential/mobile proxies for higher success rates. Costs 10x credits (default: `false`) | | `language` | string | | Language code in ISO 639-1 format (e.g., `EN`, `DE`, `FR`) | | `include_html` | boolean | | When `true`, the response includes the full raw HTML of the page after the structured JSON output (default: `false`) | --- ## Response Parameters | Field | Type | Description | |-------|------|-------------| | `asin` | string | Product ASIN number | | `parent_asin` | string | Parent ASIN for the product variation family. Use it to group sibling size, color, style, or bundle ASINs. For products without variations, it matches `asin`. | | `is_sponsored` | boolean | Whether the product is a sponsored listing | | `brand` | string | Brand name | | `name` | string | Full product title | | `url` | string | Canonical product URL | | `thumbnail` | string | Primary product image URL | | `rating` | number | Average star rating (0-5) | | `total_ratings` | number | Total number of customer ratings | | `price` | number | Current selling price | | `list_price` | number | Original list price (if discounted) | | `currency` | string | Currency code (e.g., `USD`, `EUR`, `GBP`) | | `currency_symbol` | string | Currency symbol (e.g., `$`, `€`, `£`) | | `is_prime` | boolean | Whether Prime shipping is available | | `in_stock` | boolean \| null | Whether the product can be purchased right now, from the buy box or, when the buy box is suppressed, from another seller. A listing without a buy box but with live offers still counts as in stock. `null` means the page shows no stock signal at all (for example, Prime Video titles), so treat it as unknown rather than out of stock. | | `availability_text` | string | Raw availability string exactly as Amazon displays it, in the marketplace's language (e.g., `In Stock`, `Only 3 left in stock`, `Currently unavailable.`). Use it when you also need the wording shown on the page. Omitted when the page shows no availability text. | | `all_badges` | array | Promotional badges shown above the buy box. Badge text is returned exactly as shown on the selected Amazon marketplace. | | `amazon_choice` | boolean | Whether the product carries an Amazon's Choice badge | | `best_seller` | boolean | Whether the product carries a #1 Best Seller badge. #1 New Release badges do not set this field. | | `description` | string | Long-form product description parsed from the PDP, when Amazon exposes it | | `shipping_info` | array | Shipping and delivery information strings | | `more_buying_choices` | object | Alternative seller options with links | | `images` | array | All product images with URLs and dimensions | | `best_seller_rankings` | array | Category rankings with rank numbers | | `technical_details` | object | Key-value pairs of product specifications | | `status` | string | Request status (`success` or `error`) | | `errorMessage` | string | Error message if request failed | | `html` | string | Full raw HTML of the Amazon page (only present when `include_html=true`) | --- ## Example Usage ### Step 1: Find the Target Product Navigate to any Amazon product page. For this example, we'll use an adjustable laptop stand: ![Amazon Product Page](/uploads/amazon-pdp.png) ### Step 2: Get the ASIN The ASIN (Amazon Standard Identification Number) is the unique 10-character identifier for each product. You can find it in: - The product URL: `amazon.com/dp/B0C7BKZ883` (the ASIN is `B0C7BKZ883`) - The product details section on the page ### Step 3: Send the API Request **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/amazon/pdp?token=&asin=B0C7BKZ883&geocode=US' ``` **Python (API mode)** ```python import requests import json token = "" asin = "B0C7BKZ883" geocode = "US" url = f"https://api.scrape.do/plugin/amazon/pdp?token={token}&asin={asin}&geocode={geocode}" response = requests.request("GET", url) print(json.dumps(response.json(), indent=2)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const asin = "B0C7BKZ883"; const geocode = "US"; const url = `https://api.scrape.do/plugin/amazon/pdp?token=${token}&asin=${asin}&geocode=${geocode}`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* ### Step 4: Receive Structured Data The API returns a complete JSON object with all product information: ```json { "asin": "B0C7BKZ883", "parent_asin": "B0HBW3QDGK", "is_sponsored": false, "brand": "Gogoonike", "name": "Adjustable Laptop Stand for Desk, Metal Foldable Laptop Riser Holder...", "url": "https://www.amazon.com/dp/B0C7BKZ883", "thumbnail": "https://m.media-amazon.com/images/I/71Jz2L1pV6L._AC_SX679_.jpg", "rating": 4.6, "total_ratings": 2712, "price": 14.99, "list_price": 39.99, "currency": "USD", "currency_symbol": "$", "is_prime": true, "in_stock": true, "availability_text": "In Stock", "all_badges": ["#1 Best Seller"], "amazon_choice": false, "best_seller": true, "description": "Raise your laptop to a comfortable viewing angle with a foldable aluminum stand designed for desks, travel, and daily work.", "shipping_info": [ "FREE delivery Monday, December 16", "Or fastest delivery Friday, December 13" ], "more_buying_choices": { "heading": "More Buying Choices", "offer_text": "New from $14.99", "offer_link": "https://www.amazon.com/gp/offer-listing/B0C7BKZ883" }, "images": [ { "url": "https://m.media-amazon.com/images/I/71Jz2L1pV6L._AC_SX679_.jpg", "width": 679, "height": 679 } ], "best_seller_rankings": [ { "category": "Office Products", "rank": 249 }, { "category": "Laptop Stands", "rank": 2 } ], "technical_details": { "Brand": "Gogoonike", "Compatible Devices": "Laptop", "Material": "Aluminum", "Item Weight": "1.1 Pounds" }, "status": "success", "errorMessage": null } ``` > [!NOTE] > Images are automatically converted to high-resolution URLs. The response is limited to a maximum of 8MB. > [!NOTE] > The `description` field is returned as a single prose string when Amazon exposes a product description. It falls back to enhanced manufacturer content when the standard description block is absent, and it can be omitted for listings that do not publish a description. > [!NOTE] > Add `include_html=true` to your request to receive the full raw HTML of the Amazon page alongside the structured JSON output. The HTML will be included in an `html` field at the end of the response.