cURL
# Check execution status
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: $CATALOG_API_KEY"
# Get results with pagination
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000?page=1&limit=50" \
-H "x-api-key: $CATALOG_API_KEY"
// Check execution status
const executionId = 'products-batch-550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://api.getcatalog.ai/v1/products/${executionId}?page=1&limit=50`,
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.status === 'completed') {
const meta = data.results.meta;
console.log(`Successful: ${meta.total_successful}, Failed: ${meta.total_failed}, Invalid: ${meta.total_invalid}`);
const retriableUrls = data.results.products
.filter(item => item.retry)
.map(item => item.url);
if (retriableUrls.length > 0) {
console.log('Retriable URLs:', retriableUrls);
}
data.results.products
.filter(item => !item.success && !item.retry)
.forEach(item => console.warn(`${item.outcome}: ${item.url} — ${item.message}`));
} else if (data.status === 'running') {
console.log(`Progress: ${data.progress.percent_complete}%`);
} else if (data.status === 'failed') {
console.error('Error:', data.error);
}
import requests
import time
execution_id = 'products-batch-550e8400-e29b-41d4-a716-446655440000'
# Poll for completion
while True:
response = requests.get(
f'https://api.getcatalog.ai/v1/products/{execution_id}',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'page': 1, 'limit': 50}
)
data = response.json()
if data['status'] == 'completed':
meta = data['results']['meta']
print(f"Successful: {meta['total_successful']}, Failed: {meta['total_failed']}, Invalid: {meta['total_invalid']}")
retriable = [item for item in data['results']['products'] if item.get('retry')]
if retriable:
print('Retriable URLs:', [item['url'] for item in retriable])
for item in data['results']['products']:
if not item['success'] and not item.get('retry'):
print(f"{item['outcome']}: {item['url']} — {item['message']}")
break
elif data['status'] == 'running':
progress = data.get('progress', {})
print(f"Progress: {progress.get('percent_complete', 0)}%")
time.sleep(5) # Wait 5 seconds before next poll
elif data['status'] == 'failed':
print('Error:', data.get('error'))
break
{
"status": "completed",
"progress": {
"products_processed": 1,
"urls_completed": 1,
"total_urls": 1,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"description": "Comfortable, durable and timeless—it's number one for a reason. ... Style: CW2288-111",
"vendor": "nike.com",
"brand": "Nike",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"handle": "cw2288-111",
"is_available": true,
"attributes": {
"additional_attributes": [
"classic '80s construction",
"bold design details",
"smooth leather upper",
"... more ..."
],
"age_group": "adult",
"gender": "unisex",
"summary": "Timeless Nike Air Force 1 '07 sneakers combining classic '80s construction with smooth leather and durable, comfortable design.",
"features": "Durable construction, cushioned midsole for support, and iconic silhouette suitable for various occasions.",
"care_instructions": "Wipe clean with a damp cloth, avoid heavy cleaning solutions, air dry away from direct heat.",
"color": { "iscc_family": "white", "merchant_label": "White/White" },
"material": { "primary": "leather", "merchant_label": "Smooth Leather" },
"pattern": "solid",
"closure_type": "lace-up",
"season": ["year-round"],
"style": ["casual", "classic", "streetwear"],
"mood": ["confident", "timeless"],
"occasion": ["everyday", "casual", "sports-event"],
"additional_product_information": "Benefits: ...\nProduct details: ...\nFit note: Fits large; we recommend ordering a half size down."
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": 115 },
"images": [
{
"id": "img-1769639694151-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 product image (primary)",
"position": 1,
"variant_ids": ["variant-1769639694153-0", "..."],
"attributes": null
},
"..."
],
"options": [
{ "name": "Color", "values": ["White/White"], "position": 1 },
{ "name": "Size", "values": ["6", "6.5", "7", "...", "18"], "position": 2 }
],
"variants": [
{
"id": "variant-1769639694153-0",
"sku": "CW2288-111",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-jBrhbr/CW2288-111#size-6",
"image": {
"id": "img-variant-variant-1769639694153-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 - White/White - 6 variant image",
"position": 1,
"variant_ids": ["variant-1769639694153-0"]
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": null },
"title": "Nike Air Force 1 '07 - White/white - 6",
"option1": "White/White",
"option2": "6",
"is_available": true,
"affiliate_link": "https://wild.link/e?...#size-6"
},
"..."
],
"store_canonical_url": "https://www.nike.com/",
"store_domain": "www.nike.com",
"platform": null,
"platform_id": "CW2288-111",
"description_html": "<html>...</html>",
"product_type": "FOOTWEAR",
"google_product_category_id": "187",
"google_product_category_path": "Apparel & Accessories > Shoes",
"tags": ["FOOTWEAR"],
"video_url": null,
"review_count": null,
"average_rating": null,
"rating_scale": null,
"faqs": null,
"reviews": null,
"updated_at": "2026-01-28T22:53:52.255Z",
"similar_products": null,
"affiliate_link": "https://wild.link/e?...CW2288-111"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
}
],
"meta": {
"total_requested": 1,
"total_successful": 1,
"total_failed": 0,
"total_failed_by_reason": {},
"total_invalid": 0,
"total_invalid_by_reason": {},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "completed",
"progress": {
"products_processed": 3,
"urls_completed": 3,
"total_urls": 3,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"_truncated": "Full product object omitted for display"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
},
{
"url": "https://www.example.com/products/limited-edition",
"product": null,
"success": false,
"outcome": "non_product_url",
"retry": false,
"message": "This URL does not point to a product page.",
"final_url": "https://www.example.com/collections/all"
},
{
"url": "https://protected-store.com/products/item-42",
"product": null,
"success": false,
"outcome": "automated_access_not_permitted",
"retry": true,
"message": "The site could not be reached. Please retry this URL."
}
],
"meta": {
"total_requested": 3,
"total_successful": 1,
"total_failed": 1,
"total_failed_by_reason": {
"automated_access_not_permitted": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "running",
"progress": {
"products_processed": 45,
"urls_completed": 45,
"total_urls": 100,
"percent_complete": 45
},
"error": null,
"results": {
"meta": {
"total_requested": 100,
"total_successful": 40,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 2,
"total_invalid_by_reason": {
"non_product_url": 1,
"malformed_url": 1
},
"total_pending": 55
}
}
}
{
"status": "failed",
"progress": {
"products_processed": 12,
"urls_completed": 12,
"total_urls": 100,
"percent_complete": 12
},
"error": "The operation failed. Please retry or contact support with this execution ID.",
"results": {
"meta": {
"total_requested": 100,
"total_successful": 8,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 88
}
}
}
Extract
Get Execution Status
Get extract status and results for an asynchronous extract job.
GET
/
v1
/
products
/
{execution_id}
cURL
# Check execution status
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: $CATALOG_API_KEY"
# Get results with pagination
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000?page=1&limit=50" \
-H "x-api-key: $CATALOG_API_KEY"
// Check execution status
const executionId = 'products-batch-550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://api.getcatalog.ai/v1/products/${executionId}?page=1&limit=50`,
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.status === 'completed') {
const meta = data.results.meta;
console.log(`Successful: ${meta.total_successful}, Failed: ${meta.total_failed}, Invalid: ${meta.total_invalid}`);
const retriableUrls = data.results.products
.filter(item => item.retry)
.map(item => item.url);
if (retriableUrls.length > 0) {
console.log('Retriable URLs:', retriableUrls);
}
data.results.products
.filter(item => !item.success && !item.retry)
.forEach(item => console.warn(`${item.outcome}: ${item.url} — ${item.message}`));
} else if (data.status === 'running') {
console.log(`Progress: ${data.progress.percent_complete}%`);
} else if (data.status === 'failed') {
console.error('Error:', data.error);
}
import requests
import time
execution_id = 'products-batch-550e8400-e29b-41d4-a716-446655440000'
# Poll for completion
while True:
response = requests.get(
f'https://api.getcatalog.ai/v1/products/{execution_id}',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'page': 1, 'limit': 50}
)
data = response.json()
if data['status'] == 'completed':
meta = data['results']['meta']
print(f"Successful: {meta['total_successful']}, Failed: {meta['total_failed']}, Invalid: {meta['total_invalid']}")
retriable = [item for item in data['results']['products'] if item.get('retry')]
if retriable:
print('Retriable URLs:', [item['url'] for item in retriable])
for item in data['results']['products']:
if not item['success'] and not item.get('retry'):
print(f"{item['outcome']}: {item['url']} — {item['message']}")
break
elif data['status'] == 'running':
progress = data.get('progress', {})
print(f"Progress: {progress.get('percent_complete', 0)}%")
time.sleep(5) # Wait 5 seconds before next poll
elif data['status'] == 'failed':
print('Error:', data.get('error'))
break
{
"status": "completed",
"progress": {
"products_processed": 1,
"urls_completed": 1,
"total_urls": 1,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"description": "Comfortable, durable and timeless—it's number one for a reason. ... Style: CW2288-111",
"vendor": "nike.com",
"brand": "Nike",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"handle": "cw2288-111",
"is_available": true,
"attributes": {
"additional_attributes": [
"classic '80s construction",
"bold design details",
"smooth leather upper",
"... more ..."
],
"age_group": "adult",
"gender": "unisex",
"summary": "Timeless Nike Air Force 1 '07 sneakers combining classic '80s construction with smooth leather and durable, comfortable design.",
"features": "Durable construction, cushioned midsole for support, and iconic silhouette suitable for various occasions.",
"care_instructions": "Wipe clean with a damp cloth, avoid heavy cleaning solutions, air dry away from direct heat.",
"color": { "iscc_family": "white", "merchant_label": "White/White" },
"material": { "primary": "leather", "merchant_label": "Smooth Leather" },
"pattern": "solid",
"closure_type": "lace-up",
"season": ["year-round"],
"style": ["casual", "classic", "streetwear"],
"mood": ["confident", "timeless"],
"occasion": ["everyday", "casual", "sports-event"],
"additional_product_information": "Benefits: ...\nProduct details: ...\nFit note: Fits large; we recommend ordering a half size down."
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": 115 },
"images": [
{
"id": "img-1769639694151-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 product image (primary)",
"position": 1,
"variant_ids": ["variant-1769639694153-0", "..."],
"attributes": null
},
"..."
],
"options": [
{ "name": "Color", "values": ["White/White"], "position": 1 },
{ "name": "Size", "values": ["6", "6.5", "7", "...", "18"], "position": 2 }
],
"variants": [
{
"id": "variant-1769639694153-0",
"sku": "CW2288-111",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-jBrhbr/CW2288-111#size-6",
"image": {
"id": "img-variant-variant-1769639694153-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 - White/White - 6 variant image",
"position": 1,
"variant_ids": ["variant-1769639694153-0"]
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": null },
"title": "Nike Air Force 1 '07 - White/white - 6",
"option1": "White/White",
"option2": "6",
"is_available": true,
"affiliate_link": "https://wild.link/e?...#size-6"
},
"..."
],
"store_canonical_url": "https://www.nike.com/",
"store_domain": "www.nike.com",
"platform": null,
"platform_id": "CW2288-111",
"description_html": "<html>...</html>",
"product_type": "FOOTWEAR",
"google_product_category_id": "187",
"google_product_category_path": "Apparel & Accessories > Shoes",
"tags": ["FOOTWEAR"],
"video_url": null,
"review_count": null,
"average_rating": null,
"rating_scale": null,
"faqs": null,
"reviews": null,
"updated_at": "2026-01-28T22:53:52.255Z",
"similar_products": null,
"affiliate_link": "https://wild.link/e?...CW2288-111"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
}
],
"meta": {
"total_requested": 1,
"total_successful": 1,
"total_failed": 0,
"total_failed_by_reason": {},
"total_invalid": 0,
"total_invalid_by_reason": {},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "completed",
"progress": {
"products_processed": 3,
"urls_completed": 3,
"total_urls": 3,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"_truncated": "Full product object omitted for display"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
},
{
"url": "https://www.example.com/products/limited-edition",
"product": null,
"success": false,
"outcome": "non_product_url",
"retry": false,
"message": "This URL does not point to a product page.",
"final_url": "https://www.example.com/collections/all"
},
{
"url": "https://protected-store.com/products/item-42",
"product": null,
"success": false,
"outcome": "automated_access_not_permitted",
"retry": true,
"message": "The site could not be reached. Please retry this URL."
}
],
"meta": {
"total_requested": 3,
"total_successful": 1,
"total_failed": 1,
"total_failed_by_reason": {
"automated_access_not_permitted": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "running",
"progress": {
"products_processed": 45,
"urls_completed": 45,
"total_urls": 100,
"percent_complete": 45
},
"error": null,
"results": {
"meta": {
"total_requested": 100,
"total_successful": 40,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 2,
"total_invalid_by_reason": {
"non_product_url": 1,
"malformed_url": 1
},
"total_pending": 55
}
}
}
{
"status": "failed",
"progress": {
"products_processed": 12,
"urls_completed": 12,
"total_urls": 100,
"percent_complete": 12
},
"error": "The operation failed. Please retry or contact support with this execution ID.",
"results": {
"meta": {
"total_requested": 100,
"total_successful": 8,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 88
}
}
}
When to use: After starting a batch processing job with the POST endpoint, use this endpoint to:
- Check if processing is complete
- Monitor real-time progress
- Retrieve paginated results when processing completes
Managing Executions:
- View All Executions: Use
GET /v1/productsto see all your processing jobs - Cancel Running Executions: If you need to stop a running execution, use
DELETE /v1/products/{execution_id}
Authentication Required: This endpoint requires a valid API key. The API key is verified, but execution IDs are not restricted to specific API keys. Keep your execution IDs secure.
Request
string
required
Your API key for authentication
string
required
The execution ID returned from
POST /v1/productsFormat: products-batch-{uuid}Note: If the execution ID does not exist, the endpoint returns a 404 Not Found error.Query Parameters
number
default:"1"
Page number for paginated results (only applicable when status is “completed”)Minimum: 1
number
default:"50"
Number of results per page (only applicable when status is “completed”)Maximum: 100
Response
string
Current execution statusPossible values:
"pending"- Execution has been created but not yet started"running"- Execution is currently processing"completed"- Execution finished successfully"failed"- Execution failed or was aborted
object | null
string | null
Error message (always present, null if execution is successful or still running)
object
Product results (only present when status is “completed”)
Hide Results Properties
Hide Results Properties
array
Array of product results, one for each input URL
Hide Product Result
Hide Product Result
string
Original URL that was processed
boolean
Whether the product was successfully processed
object | null
Product data (null if processing failed)
Hide Product Properties
Hide Product Properties
string
Unique product identifier
string
Product title
string
Detailed product description
string
Store/retailer name (e.g., “net-a-porter”, “Nike”)
string | null
Product brand name (e.g., “LOEFFLER RANDALL”, “Nike”)
string
Product URL
string
Product handle/slug
boolean
Product availability status
number | null
Price in dollars
string | null
Currency code (e.g., “USD”)
number | null
Minimum price for variants
number | null
Maximum price for variants
array
Array of product images
array
Array of product options (size, color, etc.)
array
Array of product variants with detailed information
string | null
Canonical store URL
string
Store domain
string | null
E-commerce platform (null if not identified)
string | null
Platform-specific ID
string | null
HTML-formatted description
string | null
Product type/category
string | null
Google product category identifier
string | null
Full Google product category path
array
Array of product tags/categories
string | null
Product video URL (if available)
string
Last update timestamp (ISO 8601)
object
Comprehensive product attributes (when AI enrichment is enabled)
string
The outcome category for this URL.Possible values:
"success"— Product data was extracted successfully"non_product_url"— The URL does not point to a product page (e.g. category page, 404, homepage redirect)"malformed_url"— The URL format is invalid or unparseable"automated_access_not_permitted"— The site’s bot protection blocked automated access"other"— A temporary error occurred during processing
boolean
Whether retrying this URL may produce a successful result. When
true, the failure is likely transient — resubmit the URL in a new request. When false, the URL itself needs fixing — check message for specifics.string
A human-readable description of the outcome with recommended next steps. Empty string on success.
string
The URL the browser landed on after following redirects. Only present when the final URL differs from the input
url. Useful for diagnosing non_product_url outcomes caused by redirects.object
Processing metadata and summary statistics. The following invariant always holds:
total_successful + total_failed + total_invalid + total_pending = total_requested.Show Meta Properties
Show Meta Properties
number
Total number of URLs submitted in the extraction request
number
Number of URLs where product data was extracted successfully
number
Number of URLs where extraction failed due to retriable issues. Equal to the sum of values in
total_failed_by_reason.object
Breakdown of retriable failures by outcome. Keys are only present when their count is greater than zero. Resubmitting these URLs in a new extraction request may succeed.
Show Failed Breakdown
Show Failed Breakdown
number
URLs where the site’s bot protection blocked automated access. This is often transient — retrying typically succeeds. If it persists for a specific site, contact support.
number
URLs that encountered a temporary processing error (e.g. timeout, unexpected page state). Safe to retry immediately.
number
Number of URLs with input problems that cannot be resolved by retrying. Equal to the sum of values in
total_invalid_by_reason.object
Breakdown of invalid URLs by outcome. Keys are only present when their count is greater than zero. These URLs need to be corrected before resubmitting — retrying the same URL will produce the same result.
Show Invalid Breakdown
Show Invalid Breakdown
number
URLs still being processed. Always present;
0 when extraction is complete.object
cURL
# Check execution status
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: $CATALOG_API_KEY"
# Get results with pagination
curl -X GET "https://api.getcatalog.ai/v1/products/products-batch-550e8400-e29b-41d4-a716-446655440000?page=1&limit=50" \
-H "x-api-key: $CATALOG_API_KEY"
// Check execution status
const executionId = 'products-batch-550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://api.getcatalog.ai/v1/products/${executionId}?page=1&limit=50`,
{
headers: {
'x-api-key': 'YOUR_API_KEY'
}
}
);
const data = await response.json();
if (data.status === 'completed') {
const meta = data.results.meta;
console.log(`Successful: ${meta.total_successful}, Failed: ${meta.total_failed}, Invalid: ${meta.total_invalid}`);
const retriableUrls = data.results.products
.filter(item => item.retry)
.map(item => item.url);
if (retriableUrls.length > 0) {
console.log('Retriable URLs:', retriableUrls);
}
data.results.products
.filter(item => !item.success && !item.retry)
.forEach(item => console.warn(`${item.outcome}: ${item.url} — ${item.message}`));
} else if (data.status === 'running') {
console.log(`Progress: ${data.progress.percent_complete}%`);
} else if (data.status === 'failed') {
console.error('Error:', data.error);
}
import requests
import time
execution_id = 'products-batch-550e8400-e29b-41d4-a716-446655440000'
# Poll for completion
while True:
response = requests.get(
f'https://api.getcatalog.ai/v1/products/{execution_id}',
headers={'x-api-key': 'YOUR_API_KEY'},
params={'page': 1, 'limit': 50}
)
data = response.json()
if data['status'] == 'completed':
meta = data['results']['meta']
print(f"Successful: {meta['total_successful']}, Failed: {meta['total_failed']}, Invalid: {meta['total_invalid']}")
retriable = [item for item in data['results']['products'] if item.get('retry')]
if retriable:
print('Retriable URLs:', [item['url'] for item in retriable])
for item in data['results']['products']:
if not item['success'] and not item.get('retry'):
print(f"{item['outcome']}: {item['url']} — {item['message']}")
break
elif data['status'] == 'running':
progress = data.get('progress', {})
print(f"Progress: {progress.get('percent_complete', 0)}%")
time.sleep(5) # Wait 5 seconds before next poll
elif data['status'] == 'failed':
print('Error:', data.get('error'))
break
{
"status": "completed",
"progress": {
"products_processed": 1,
"urls_completed": 1,
"total_urls": 1,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"description": "Comfortable, durable and timeless—it's number one for a reason. ... Style: CW2288-111",
"vendor": "nike.com",
"brand": "Nike",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"handle": "cw2288-111",
"is_available": true,
"attributes": {
"additional_attributes": [
"classic '80s construction",
"bold design details",
"smooth leather upper",
"... more ..."
],
"age_group": "adult",
"gender": "unisex",
"summary": "Timeless Nike Air Force 1 '07 sneakers combining classic '80s construction with smooth leather and durable, comfortable design.",
"features": "Durable construction, cushioned midsole for support, and iconic silhouette suitable for various occasions.",
"care_instructions": "Wipe clean with a damp cloth, avoid heavy cleaning solutions, air dry away from direct heat.",
"color": { "iscc_family": "white", "merchant_label": "White/White" },
"material": { "primary": "leather", "merchant_label": "Smooth Leather" },
"pattern": "solid",
"closure_type": "lace-up",
"season": ["year-round"],
"style": ["casual", "classic", "streetwear"],
"mood": ["confident", "timeless"],
"occasion": ["everyday", "casual", "sports-event"],
"additional_product_information": "Benefits: ...\nProduct details: ...\nFit note: Fits large; we recommend ordering a half size down."
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": 115 },
"images": [
{
"id": "img-1769639694151-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 product image (primary)",
"position": 1,
"variant_ids": ["variant-1769639694153-0", "..."],
"attributes": null
},
"..."
],
"options": [
{ "name": "Color", "values": ["White/White"], "position": 1 },
{ "name": "Size", "values": ["6", "6.5", "7", "...", "18"], "position": 2 }
],
"variants": [
{
"id": "variant-1769639694153-0",
"sku": "CW2288-111",
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-jBrhbr/CW2288-111#size-6",
"image": {
"id": "img-variant-variant-1769639694153-0",
"url": "https://static.nike.com/a/images/t_default/.../AIR+FORCE+1+%2707.png",
"width": 400,
"height": 400,
"alt_text": "Nike Air Force 1 '07 - White/White - 6 variant image",
"position": 1,
"variant_ids": ["variant-1769639694153-0"]
},
"price": { "currency": "USD", "current_value": 115, "compare_at_value": null },
"title": "Nike Air Force 1 '07 - White/white - 6",
"option1": "White/White",
"option2": "6",
"is_available": true,
"affiliate_link": "https://wild.link/e?...#size-6"
},
"..."
],
"store_canonical_url": "https://www.nike.com/",
"store_domain": "www.nike.com",
"platform": null,
"platform_id": "CW2288-111",
"description_html": "<html>...</html>",
"product_type": "FOOTWEAR",
"google_product_category_id": "187",
"google_product_category_path": "Apparel & Accessories > Shoes",
"tags": ["FOOTWEAR"],
"video_url": null,
"review_count": null,
"average_rating": null,
"rating_scale": null,
"faqs": null,
"reviews": null,
"updated_at": "2026-01-28T22:53:52.255Z",
"similar_products": null,
"affiliate_link": "https://wild.link/e?...CW2288-111"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
}
],
"meta": {
"total_requested": 1,
"total_successful": 1,
"total_failed": 0,
"total_failed_by_reason": {},
"total_invalid": 0,
"total_invalid_by_reason": {},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 1,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "completed",
"progress": {
"products_processed": 3,
"urls_completed": 3,
"total_urls": 3,
"percent_complete": 100
},
"error": null,
"credits_used": 5,
"results": {
"products": [
{
"url": "https://www.nike.com/t/air-force-1-07-mens-shoes-5QFp5Z/CW2288-111",
"product": {
"id": "6e6bd7bd-bfb5-4e05-85ee-4969628e741a",
"title": "Nike Air Force 1 '07",
"_truncated": "Full product object omitted for display"
},
"success": true,
"outcome": "success",
"retry": false,
"message": ""
},
{
"url": "https://www.example.com/products/limited-edition",
"product": null,
"success": false,
"outcome": "non_product_url",
"retry": false,
"message": "This URL does not point to a product page.",
"final_url": "https://www.example.com/collections/all"
},
{
"url": "https://protected-store.com/products/item-42",
"product": null,
"success": false,
"outcome": "automated_access_not_permitted",
"retry": true,
"message": "The site could not be reached. Please retry this URL."
}
],
"meta": {
"total_requested": 3,
"total_successful": 1,
"total_failed": 1,
"total_failed_by_reason": {
"automated_access_not_permitted": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 0
}
},
"pagination": {
"page": 1,
"limit": 50,
"total_items": 3,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}
{
"status": "running",
"progress": {
"products_processed": 45,
"urls_completed": 45,
"total_urls": 100,
"percent_complete": 45
},
"error": null,
"results": {
"meta": {
"total_requested": 100,
"total_successful": 40,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 2,
"total_invalid_by_reason": {
"non_product_url": 1,
"malformed_url": 1
},
"total_pending": 55
}
}
}
{
"status": "failed",
"progress": {
"products_processed": 12,
"urls_completed": 12,
"total_urls": 100,
"percent_complete": 12
},
"error": "The operation failed. Please retry or contact support with this execution ID.",
"results": {
"meta": {
"total_requested": 100,
"total_successful": 8,
"total_failed": 3,
"total_failed_by_reason": {
"automated_access_not_permitted": 2,
"other": 1
},
"total_invalid": 1,
"total_invalid_by_reason": {
"non_product_url": 1
},
"total_pending": 88
}
}
}
Polling Strategy
For best results when waiting for completion:- Initial Poll: Check status immediately after receiving
execution_id - Polling Interval: Wait 5-10 seconds between polls for running executions
- Exponential Backoff: Consider increasing wait time for long-running jobs
- Timeout: Set a maximum wait time based on your batch size
⌘I