Product Listing Page
Extract multiple product items from a category or search results page — names, prices, ratings, and links.
Target URL Pattern
*This template is optimised for URLs matching this pattern, but works with any URL.
Template Configuration
{
"mode": "markdown",
"render_js": true,
"extraction_schema": {
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"name": {
"type": "string"
},
"price": {
"type": "object",
"properties": {
"amount": {
"type": "number"
},
"currency": {
"type": "string"
}
}
},
"rating": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"score": {
"type": "number"
}
}
},
"image_url": {
"type": "string"
},
"availability": {
"type": "string"
}
}
}
},
"page_title": {
"type": "string"
},
"pagination": {
"type": "object",
"properties": {
"total_pages": {
"type": "integer"
},
"current_page": {
"type": "integer"
},
"next_page_url": {
"type": "string"
}
}
},
"total_results": {
"type": "string"
}
}
},
"bypass_cookie_banners": true
}Test the Product Listing Page Template
Template config applied: {"mode":"markdown","render_js":true,"extraction_schema":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"name":{"type":"string"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"rating":{"type":"object","properties":{"count":{"type":"integer"},"score":{"type":"number"}}},"image_url":{"type":"string"},"availability":{"type":"string"}}}},"page_title":{"type":"string"},"pagination":{"type":"object","properties":{"total_pages":{"type":"integer"},"current_page":{"type":"integer"},"next_page_url":{"type":"string"}}},"total_results":{"type":"string"}}},"bypass_cookie_banners":true}
Enter a URL and click Run to see the template in action. for a real API key.
Code Examples
curl -X POST https://api.alterlab.io/v1/scrape \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "YOUR_TARGET_URL",
"formats": ["markdown", "text"],
"mode": "markdown",
"render_js": true,
"extraction_schema": {"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"name":{"type":"string"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"rating":{"type":"object","properties":{"count":{"type":"integer"},"score":{"type":"number"}}},"image_url":{"type":"string"},"availability":{"type":"string"}}}},"page_title":{"type":"string"},"pagination":{"type":"object","properties":{"total_pages":{"type":"integer"},"current_page":{"type":"integer"},"next_page_url":{"type":"string"}}},"total_results":{"type":"string"}}},
"bypass_cookie_banners": true
}'import requests
response = requests.post(
"https://api.alterlab.io/v1/scrape",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"url": "YOUR_TARGET_URL",
"formats": ["markdown", "text"],
"mode": "markdown",
"render_js": true,
"extraction_schema": {"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"name":{"type":"string"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"rating":{"type":"object","properties":{"count":{"type":"integer"},"score":{"type":"number"}}},"image_url":{"type":"string"},"availability":{"type":"string"}}}},"page_title":{"type":"string"},"pagination":{"type":"object","properties":{"total_pages":{"type":"integer"},"current_page":{"type":"integer"},"next_page_url":{"type":"string"}}},"total_results":{"type":"string"}}},
"bypass_cookie_banners": true,
},
)
data = response.json()
print(data["data"]["markdown"])const response = await fetch("https://api.alterlab.io/v1/scrape", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "YOUR_TARGET_URL",
formats: ["markdown", "text"],
mode: "markdown",
render_js: true,
extraction_schema: {"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"name":{"type":"string"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"}}},"rating":{"type":"object","properties":{"count":{"type":"integer"},"score":{"type":"number"}}},"image_url":{"type":"string"},"availability":{"type":"string"}}}},"page_title":{"type":"string"},"pagination":{"type":"object","properties":{"total_pages":{"type":"integer"},"current_page":{"type":"integer"},"next_page_url":{"type":"string"}}},"total_results":{"type":"string"}}},
bypass_cookie_banners: true,
}),
});
const data = await response.json();
console.log(data.data.markdown);Need an API key? — no credit card required.
Responsible Use
AlterLab is designed for extracting publicly available data. Always review the terms of service for any website you access, respect robots.txt directives, and ensure your use case complies with applicable laws in your jurisdiction.
Your first scrape.
Sixty seconds.
$1 free credit — up to 5,000 scrapes. No credit card.
Just a POST request.
No credit card required · $1 free credit, up to 5,000 scrapes · Balance never expires