Product data API · Catalogue access
Product Data API: affiliate product catalogue for SKUs, prices, and images
Looking for a product data API or affiliate product catalogue API? Feedico exposes normalized product rows from connected programmes: title, brand, sku, price, salePrice, images, and availability. Call POST /api/v1/me/products for your account feed (including offerUrl when synced) or POST /api/v1/catalog/products for discovery without shared tracking links.
Definition: catalogue product rows
Product rows are optional SKU-level children of Firm merchants in the affiliate marketing network data model. They are not promo codes. For coded and title-only offers, use Offer Data API or the production listing contract at /coupon-api.
When to use Product Data API vs Product Deal Feed
Product Data API (this page)
- Full catalogue browse and warehouse sync
- Search by brand, sku, q, price bands
- Include non-sale SKUs in your index
- AI agents needing complete product context
Product Deal Feed API
- Sale and price-drop merchandising
- discountPercentage-led UI
- Deal carousels and “on sale” grids
- Read /product-deal-feed-api
Both surfaces share the same underlying endpoints (/me/products, /catalog/products). The marketing pages differ by buyer intent: catalogue vs deal merchandising.
Endpoints table
| Surface | Path | Best for |
|---|---|---|
| Your catalogue | POST /api/v1/me/products | Connected programmes; offerUrl when synced; full field set |
| Global catalogue | POST /api/v1/catalog/products | Discovery / search; no offerUrl; attach your own links later |
Auth is Bearer token. Monthly API caps apply per plan. Related merchant parents: Merchant Data API.
Curl and JSON examples
curl -sS -X POST "https://api.feedico.io/api/v1/me/products" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"page":1,"pageSize":50,"provider":"cj_affiliate"}'{
"ok": true,
"recordCount": 1,
"page": 1,
"pageSize": 50,
"nextCursor": "4790020",
"products": [
{
"id": "4790020",
"provider": "cj_affiliate",
"firmName": "Example Outdoor Co",
"externalProductId": "SKU-ROPE-30",
"title": "30m climbing rope",
"brand": "ExampleBrand",
"sku": "SKU-ROPE-30",
"price": 129.0,
"salePrice": 99.0,
"discountPercentage": 23.3,
"currency": "USD",
"availability": "in stock",
"offerUrl": "https://www.example-outdoor.com/p/rope-30?sid=pub",
"images": [
{ "url": "https://cdn.example.com/rope.jpg", "sortOrder": 0, "isPrimary": true }
],
"status": "active",
"fetchedAt": "2026-09-07T10:22:20.000Z"
}
],
"availableProviders": ["cj_affiliate"]
}curl -sS -X POST "https://api.feedico.io/api/v1/catalog/products" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"page":1,"pageSize":50,"q":"rope"}'{
"ok": true,
"recordCount": 1,
"page": 1,
"pageSize": 50,
"nextCursor": "catalog_a1b2c3d4e5f67890",
"products": [
{
"id": "prod_9f8e7d6c5b4a3210",
"firmName": "Example Outdoor Co",
"provider": "cj_affiliate",
"title": "30m climbing rope",
"brand": "ExampleBrand",
"sku": "SKU-ROPE-30",
"price": 129.0,
"salePrice": 99.0,
"currency": "USD",
"availability": "in stock",
"merchantUrl": "https://www.example-outdoor.com",
"images": [
{ "url": "https://cdn.example.com/rope.jpg", "sortOrder": 0, "isPrimary": true }
],
"fetchedAt": "2026-09-07T10:22:20.000Z"
}
],
"availableProviders": ["cj_affiliate"]
}Field glossary
| Field | Meaning |
|---|---|
| title | Product display name from the upstream feed. |
| brand | Brand or manufacturer string when provided. |
| sku / externalProductId | Merchant or network SKU / external product id for upserts. |
| price | List or regular price as a number. |
| salePrice | Discounted price when the SKU is on promotion; may be null. |
| discountPercentage | Computed or upstream discount % when sale fields exist. |
| currency | ISO currency code for price fields. |
| availability | Stock signal such as in stock / out of stock when synced. |
| images[] | Creative array with url, sortOrder, isPrimary for cards and carousels. |
| offerUrl | Tracked deep link on /me only when available; omitted on catalog. |
| firmName / provider | Merchant and network provenance for filters and attribution UI. |
Architecture workflow
- Confirm product feed entitlement on Pro or Business.
- Connect programmes, then page
/me/productsinto your warehouse using nextCursor. - Upsert on (provider, externalProductId) or sku within your tenant.
- Render cards from title, brand, price/salePrice, images[]; route clicks through offerUrl when present.
- For sale-only merchandising templates, lean on product deal feed copy and filters instead of re-inventing discount UI here.
Upstream product feeds
|
v
Product rows (/me/products) + offerUrl when available
|
+-- Warehouse / search index (full catalogue)
+-- Merchandising UI (optional salePrice filter)
|
Catalog discovery: /catalog/products (no offerUrl)Related object APIs
- Merchant Data API
Firm parents: displayName, provider, externalMerchantKey
- Offer Data API
Coded coupons and title-only / auto-applied offers
- Commerce Data API
Hub that ties merchant + product + offer together
- Unified affiliate API
Product positioning across all Feedico list surfaces
Product Data API FAQ
- What is the Product Data API?
- It is Feedico's affiliate product catalogue API: SKU-level rows with title, brand, sku, price, salePrice, images, and availability. Primary endpoints are POST /api/v1/me/products (account feed with offerUrl when synced) and POST /api/v1/catalog/products (discovery without tracking URLs).
- How is this different from the Product Deal Feed API?
- Product Deal Feed API (/product-deal-feed-api) is positioned for sale and deal merchandising: discounted SKUs, discount %, and price-drop grids. Product Data API is the full catalogue framing: browse, filter, and warehouse the complete product set, including items that are not on sale.
- Does catalog/products return offerUrl?
- No. Catalog product rows omit publisher-specific tracking links. Use /me/products when you need offerUrl from programmes you connected. Catalog is for cross-tenant discovery and brand/SKU search.
- Which fields should I map into a product card?
- At minimum: title, brand, sku, price, salePrice (when present), currency, availability, and images[]. On /me, also store offerUrl for outbound clicks when your sync provides it.
- Is product feed available on every plan?
- Product catalogue entitlement is plan-gated (typically Pro and Business). Check /pricing for current caps. Every successful list call still counts toward monthly API request limits.
- How do I paginate large catalogues?
- POST with pageSize (max 500) and pass the previous nextCursor until it is null. Filter with provider, firmName, brand, sku, q, currency, and minPrice/maxPrice as documented in OpenAPI.
- Can AI agents use this API?
- Yes. Agents get one Bearer-token JSON contract across networks you joined. Pair merchant context from /merchant-data-api and offers from /offer-data-api or /coupon-api for complete commerce answers.
- Where is the machine-readable contract?
- Download openapi-customer.yaml and browse /docs. The unified affiliate API pillar explains how products sit next to merchants and coupons in one membership-backed surface.
You need programme approval and compliant use at each affiliate network. Feedico provides the integration layer - not a substitute for network terms.