Feedico

← Home · Integration hub · Unified API · Product

Part of: Unified affiliate API · Publisher integration hub

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

SurfacePathBest for
Your cataloguePOST /api/v1/me/productsConnected programmes; offerUrl when synced; full field set
Global cataloguePOST /api/v1/catalog/productsDiscovery / 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 · POST /api/v1/me/products
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"}'
Example /me/products response
{
  "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 · POST /api/v1/catalog/products
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"}'
Example /catalog/products response (no offerUrl)
{
  "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

FieldMeaning
titleProduct display name from the upstream feed.
brandBrand or manufacturer string when provided.
sku / externalProductIdMerchant or network SKU / external product id for upserts.
priceList or regular price as a number.
salePriceDiscounted price when the SKU is on promotion; may be null.
discountPercentageComputed or upstream discount % when sale fields exist.
currencyISO currency code for price fields.
availabilityStock signal such as in stock / out of stock when synced.
images[]Creative array with url, sortOrder, isPrimary for cards and carousels.
offerUrlTracked deep link on /me only when available; omitted on catalog.
firmName / providerMerchant and network provenance for filters and attribution UI.

Architecture workflow

  1. Confirm product feed entitlement on Pro or Business.
  2. Connect programmes, then page /me/products into your warehouse using nextCursor.
  3. Upsert on (provider, externalProductId) or sku within your tenant.
  4. Render cards from title, brand, price/salePrice, images[]; route clicks through offerUrl when present.
  5. 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

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.

Related pages