Product Feeds
Access real-time product catalogs in XML, CSV, or JSON format for programmatic integration.
Product feeds give you programmatic access to the full catalog of products available for promotion across all Drapier brands. Use feeds to build product pages, comparison tools, or automated content pipelines.
For integration code examples (Python, Node.js, caching), see Consuming Product Feeds. For API endpoint details, see Feeds API Reference.
Available formats
XML (Google Product Feed)
Follows the Google Product Feed specification. Compatible with Google Shopping, Meta Catalog, and most affiliate platforms.
CSV (tab-separated)
Tab-separated values with a header row. Each row is one product. Suitable for spreadsheet tools or simple parsers.
JSON
Array of product objects. Best for programmatic integrations where you want to parse the data in code.
Feed refresh cycle
Feeds are regenerated every 4 hours. Each feed response includes a Last-Modified header so you can use conditional requests (If-Modified-Since) to avoid re-downloading unchanged data.
| Time (UTC) | Feed refreshed |
|---|---|
| 00:00 | Yes |
| 04:00 | Yes |
| 08:00 | Yes |
| 12:00 | Yes |
| 16:00 | Yes |
| 20:00 | Yes |
Filtering
Append query parameters to narrow the feed to specific products:
| Parameter | Description | Example |
|---|---|---|
brand | Filter by brand | brand=italist |
category | Filter by Google product category | category=Apparel+%26+Accessories |
minPrice | Minimum sale price (USD) | minPrice=100 |
maxPrice | Maximum sale price (USD) | maxPrice=5000 |
availability | Stock status | availability=in_stock |
Parameters can be combined:
https://api.drapier.io/v1/feeds/pub_8xk2m9/products.xml?key=sk_live_abc123&brand=hewi&minPrice=200&availability=in_stockFeed fields
The XML feed uses the Google Product Feed specification. Here are the fields included:
| Field | Description | Example |
|---|---|---|
id | Unique product identifier | prod_xr9k2f |
title | Product name | Prada Galleria Saffiano Leather Mini Bag |
description | Product description (HTML stripped) | Crafted from premium Saffiano leather... |
link | Tracking URL (pre-generated for your publisher ID) | https://click.drapier.io/pub_8xk2m9/prod_xr9k2f |
image_link | Primary product image URL | https://cdn.italist.com/image/product/12345.jpg |
additional_image_link | Additional product images (up to 10) | https://cdn.italist.com/image/product/12345-2.jpg |
price | Original price with currency | 2150.00 USD |
sale_price | Current sale price with currency | 1895.00 USD |
brand | Product brand name | Prada |
condition | Item condition | new or used (HEWI pre-owned items) |
availability | Stock status | in_stock, out_of_stock |
google_product_category | Google taxonomy category | Apparel & Accessories > Handbags |
custom_label_0 | Store/brand identifier | italist, hewi, verishop |
custom_label_1 | Earnings tier | high, medium, low |
The link field contains a pre-generated tracking URL for your publisher account. You can use these links directly — no need to call the deep link API separately.
Sample feed (XML)
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Drapier - pub_8xk2m9</title>
<link>https://drapier.io</link>
<description>Product feed for Luxury Fashion Blog</description>
<item>
<g:id>prod_xr9k2f</g:id>
<g:title>Prada Galleria Saffiano Leather Mini Bag</g:title>
<g:description>Crafted from premium Saffiano leather with gold-tone hardware</g:description>
<g:link>https://click.drapier.io/pub_8xk2m9/prod_xr9k2f</g:link>
<g:image_link>https://cdn.italist.com/image/product/prada-galleria-12345.jpg</g:image_link>
<g:price>2150.00 USD</g:price>
<g:sale_price>1895.00 USD</g:sale_price>
<g:brand>Prada</g:brand>
<g:condition>new</g:condition>
<g:availability>in_stock</g:availability>
<g:google_product_category>Apparel & Accessories > Handbags</g:google_product_category>
<g:custom_label_0>italist</g:custom_label_0>
<g:custom_label_1>high</g:custom_label_1>
</item>
<item>
<g:id>prod_m4v7np</g:id>
<g:title>Gucci GG Marmont Small Shoulder Bag</g:title>
<g:description>Signature GG Marmont with chevron quilted leather</g:description>
<g:link>https://click.drapier.io/pub_8xk2m9/prod_m4v7np</g:link>
<g:image_link>https://cdn.italist.com/image/product/gucci-marmont-67890.jpg</g:image_link>
<g:price>1980.00 USD</g:price>
<g:sale_price>1650.00 USD</g:sale_price>
<g:brand>Gucci</g:brand>
<g:condition>new</g:condition>
<g:availability>in_stock</g:availability>
<g:google_product_category>Apparel & Accessories > Handbags</g:google_product_category>
<g:custom_label_0>italist</g:custom_label_0>
<g:custom_label_1>medium</g:custom_label_1>
</item>
<item>
<g:id>prod_k9w3t6</g:id>
<g:title>Chanel Classic Flap Bag Medium</g:title>
<g:description>Pre-owned Chanel Classic Flap in black caviar leather, excellent condition</g:description>
<g:link>https://click.drapier.io/pub_8xk2m9/prod_k9w3t6</g:link>
<g:image_link>https://cdn.hewi.com/image/product/chanel-flap-34567.jpg</g:image_link>
<g:price>6800.00 USD</g:price>
<g:sale_price>6800.00 USD</g:sale_price>
<g:brand>Chanel</g:brand>
<g:condition>used</g:condition>
<g:availability>in_stock</g:availability>
<g:google_product_category>Apparel & Accessories > Handbags</g:google_product_category>
<g:custom_label_0>hewi</g:custom_label_0>
<g:custom_label_1>high</g:custom_label_1>
</item>
</channel>
</rss>Best practices
Cache feeds locally. Don't fetch the feed on every page load. Pull it every 4–6 hours and store it in your database or a local file. This keeps your site fast and avoids hitting rate limits.
Use conditional requests. Include the If-Modified-Since header with the Last-Modified value from your previous fetch. If the feed hasn't changed, you'll get a 304 Not Modified response with no body, saving bandwidth.
curl -H "Authorization: Bearer sk_live_abc123..." \
-H "If-Modified-Since: Wed, 18 Mar 2026 08:00:00 GMT" \
"https://api.drapier.io/v1/feeds/pub_8xk2m9/products.xml?key=sk_live_abc123"Validate XML schema. If you're ingesting the XML feed, validate it against the Google Product Feed XSD to catch any unexpected format changes early.
Filter server-side. Use the query parameters (brand, category, minPrice, etc.) to fetch only the products you need rather than downloading the entire catalog and filtering client-side.
Handle out-of-stock gracefully. Products can go out of stock between feed refreshes. If a consumer clicks a link to an out-of-stock product, they'll land on the product page with an unavailable status. Consider hiding or flagging out-of-stock products in your UI and refreshing your local cache more frequently if freshness is critical.
Use custom_label_0 to identify the store. Each product's custom_label_0 field indicates which brand storefront it belongs to (italist, hewi, or verishop). Use this to segment products by brand in your UI or to filter feeds to a single brand.
Use custom_label_1 for earnings insights. The custom_label_1 field indicates the earnings tier (high, medium, low). Promoting high-tier products earns you more per sale. Consider featuring them in prominent placements.