Product Search Scraper
The Product Search scraper type generates scrapers that extract product listings from search results pages. This includes every product in the search results along with search metadata, pagination information, and related searches.
When to Use
Use the Product Search scraper type when your target URLs are search results pages — pages that display a list of products matching a search query.
Example URLs:
https://www.amazon.com/s?k=wireless+headphoneshttps://www.walmart.com/search?q=laptophttps://www.ebay.com/sch/i.html?_nkw=iphone+casehttps://www.target.com/s?searchTerm=running+shoes
Improving Scraper Accuracy
Provide 2–5 search result URLs from the same website with different search queries. This helps the AI understand variations in the page layout and generate more robust extraction code.
Data Schema
The Product Search scraper extracts the following fields:
Search Metadata
| Field | Type | Description |
|---|---|---|
searchMetadata.query | string | The search query or keywords used |
searchMetadata.totalResults | number | Total number of search results found |
searchMetadata.resultsDisplayed | number | Number of results displayed on current page |
searchMetadata.searchUrl | string | URL of the current search page |
searchMetadata.searchType | string | Type of search: keyword, category, brand, or filtered |
Pagination
| Field | Type | Description |
|---|---|---|
pagination.currentPage | number | Current page number |
pagination.totalPages | number | Total number of pages available |
pagination.hasNextPage | boolean | Whether there is a next page |
pagination.hasPreviousPage | boolean | Whether there is a previous page |
pagination.nextPageUrl | string | URL to the next page of results |
pagination.previousPageUrl | string | URL to the previous page of results |
Breadcrumbs
| Field | Type | Description |
|---|---|---|
breadcrumbs | array | Navigation breadcrumbs for the search page |
breadcrumbs[].name | string | Name of the breadcrumb item |
breadcrumbs[].url | string | URL of the breadcrumb link |
Related Searches
| Field | Type | Description |
|---|---|---|
relatedSearches | array | Related or suggested search terms |
relatedSearches[].searchTerm | string | Related search term |
relatedSearches[].url | string | URL for the related search |
Products
Each product in the products array contains:
| Field | Type | Description |
|---|---|---|
name | string | Product name as displayed in search results |
productId | string | Unique identifier for the product |
url | string | URL to the product detail page |
brand | string | Brand name, if displayed |
price | number | Current price |
currency | string | Currency code (e.g., USD, GBP) |
preDiscountPrice | number | Original price before discount, if shown |
priceRange.minPrice | number | Minimum price for products with variants |
priceRange.maxPrice | number | Maximum price for products with variants |
priceRange.currency | string | Currency for the price range |
availability | string | Availability status: in_stock, out_of_stock, pre_order, or discontinued |
availabilityMessage | string | Additional availability text (e.g., "Ships in 2–3 days") |
images | array | Product images from search results |
images[].url | string | Absolute image URL |
images[].altText | string | Alternative text for the image |
aggregateRating.ratingValue | number | Average rating value |
aggregateRating.reviewCount | number | Number of reviews |
shipping.freeShipping | boolean | Whether free shipping is available |
shipping.shippingCost | number | Shipping cost, if displayed |
shipping.estimatedDelivery | string | Estimated delivery information |
Example JSON Output
{
"searchMetadata": {
"query": "wireless headphones",
"totalResults": 10000,
"resultsDisplayed": 48,
"searchUrl": "https://www.amazon.com/s?k=wireless+headphones",
"searchType": "keyword"
},
"pagination": {
"currentPage": 1,
"totalPages": 20,
"hasNextPage": true,
"hasPreviousPage": false,
"nextPageUrl": "https://www.amazon.com/s?k=wireless+headphones&page=2",
"previousPageUrl": null
},
"breadcrumbs": [
{
"name": "Electronics",
"url": "https://www.amazon.com/electronics/b?node=172282"
}
],
"relatedSearches": [
{
"searchTerm": "bluetooth headphones",
"url": "https://www.amazon.com/s?k=bluetooth+headphones"
},
{
"searchTerm": "noise cancelling headphones",
"url": "https://www.amazon.com/s?k=noise+cancelling+headphones"
}
],
"products": [
{
"name": "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
"productId": "B0BX2L8PCS",
"url": "https://www.amazon.com/dp/B0BX2L8PCS",
"brand": "Sony",
"price": 328.00,
"currency": "USD",
"preDiscountPrice": 399.99,
"priceRange": null,
"availability": "in_stock",
"availabilityMessage": null,
"images": [
{
"url": "https://m.media-amazon.com/images/I/51aXvjzcukL._AC_UL320_.jpg",
"altText": "Sony WH-1000XM5 Wireless Noise Canceling Headphones"
}
],
"aggregateRating": {
"ratingValue": 4.6,
"reviewCount": 12543
},
"shipping": {
"freeShipping": true,
"shippingCost": 0,
"estimatedDelivery": "Tomorrow"
}
},
{
"name": "Apple AirPods Max Wireless Over-Ear Headphones",
"productId": "B08PZHYWJS",
"url": "https://www.amazon.com/dp/B08PZHYWJS",
"brand": "Apple",
"price": 449.00,
"currency": "USD",
"preDiscountPrice": 549.00,
"priceRange": null,
"availability": "in_stock",
"availabilityMessage": null,
"images": [
{
"url": "https://m.media-amazon.com/images/I/81-58z+YelL._AC_UL320_.jpg",
"altText": "Apple AirPods Max Wireless Over-Ear Headphones"
}
],
"aggregateRating": {
"ratingValue": 4.5,
"reviewCount": 34210
},
"shipping": {
"freeShipping": true,
"shippingCost": 0,
"estimatedDelivery": "Wed, Feb 19"
}
}
]
}
Usage Tips
- Use different search queries — When providing multiple URLs, use different search terms on the same site to help the AI handle varied result layouts
- Pagination support — The scraper extracts pagination data so you can iterate through all result pages programmatically
- Country geotargeting — Set the country to match your target market for accurate localized search results, prices, and availability
- Not all fields on every site — Some fields (e.g.,
priceRange,shipping,relatedSearches) may return empty depending on the website