Feedico

← Home · Integration hub · Unified API · Product

Part of: Unified affiliate API · Publisher integration hub

Commerce data API · Infrastructure hub

Commerce Data API: merchant, product, and offer infrastructure in one stack

Searching for a commerce data API or commerce data infrastructure for affiliates? Feedico ties three object APIs into one story: merchants (Firms), products (SKU catalogue), and offers/coupons. One Bearer token covers account /me/* feeds and /catalog/* discovery. Catalog never returns offerUrl; account /me includes tracked links when available. Monthly API caps apply per plan.

Definition: commerce data as three objects

Commerce data here means the catalogue aggregation slice of an affiliate stack: who you can promote (merchant), what SKUs exist (product), and which promotions apply (offer). It is not a click tracker or payout ledger. Those belong in your attribution product. See the platform data model and schema normalization for entity keys and field mapping.

Object APIs: three siblings under this hub

  • Merchant Data API

    /me/networks · /catalog/networks

    Firm entity: provider, externalMerchantKey, displayName, couponCount. Account rows vs catalog display-name dedupe.

  • Product Data API

    /me/products · /catalog/products

    Full catalogue access: title, brand, sku, price, salePrice, images, availability. Distinct from deal merchandising.

  • Offer Data API

    /me/coupons · /catalog/coupons

    Coded coupons and title-only / auto-applied offers. code null vs present, eligibility windows, offerUrl.

Production coupon listing playbooks: /coupon-api. Sale merchandising: /product-deal-feed-api. Global discovery scale: /global-coupon-api.

Architecture: sync → normalize → serve

  1. Connect network credentials for programmes you are approved to promote.
  2. Sync adapters pull merchants, coupons, and optional product feeds on a schedule.
  3. Normalize into Firm, Coupon, and Product rows with stable camelCase fields.
  4. Serve /me to your apps with tracked offerUrl when available.
  5. Serve /catalog for cross-tenant discovery without sharing tracking links.
[ CJ / Awin / Impact / Admitad / … ]
              |
         sync adapters
              |
    +---------+---------+
    |         |         |
  Firm     Coupon    Product
 (merchant) (offer)  (SKU)
    |         |         |
    +----+----+----+----+
         |
   Bearer REST JSON
         |
    +----+----+
    |         |
 /me/*    /catalog/*
 (tracked) (discovery, no offerUrl)
    |
 Your deal site / cashback / AI agent / ETL

Endpoints at a glance

ObjectAccountCatalog
Merchant/api/v1/me/networks/api/v1/catalog/networks
Offer/api/v1/me/coupons/api/v1/catalog/coupons
Product/api/v1/me/products/api/v1/catalog/products

Full machine-readable contract: openapi-customer.yaml. Human docs: /docs.

Example calls across the three objects

Typical ETL order: networks first (merchant parents), then coupons and products. Shared examples from the commerce data cluster:

curl · merchants (/me/networks)
curl -sS -X POST "https://api.feedico.io/api/v1/me/networks" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"page":1,"pageSize":50}'
Example networks response
{
  "ok": true,
  "recordCount": 2,
  "page": 1,
  "pageSize": 50,
  "networks": [
    {
      "id": "net_1001",
      "provider": "cj_affiliate",
      "displayName": "Example Outdoor Co",
      "externalMerchantKey": "4210991",
      "merchantWebsiteUrl": "https://www.example-outdoor.com",
      "status": "active",
      "couponCount": 14,
      "fetchedAt": "2026-09-07T12:00:00.000Z"
    },
    {
      "id": "net_1002",
      "provider": "awin_affiliate",
      "displayName": "Example Beauty EU",
      "externalMerchantKey": "18822",
      "merchantWebsiteUrl": "https://www.example-beauty.eu",
      "status": "active",
      "couponCount": 9,
      "fetchedAt": "2026-09-07T11:55:00.000Z"
    }
  ],
  "availableProviders": ["cj_affiliate", "awin_affiliate"]
}
curl · offers (/me/coupons)
curl -sS -X POST "https://api.feedico.io/api/v1/me/coupons" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"page":1,"pageSize":50}'
Example offers response
{
  "ok": true,
  "recordCount": 2,
  "page": 1,
  "pageSize": 50,
  "coupons": [
    {
      "id": "cpn_9001",
      "provider": "cj_affiliate",
      "firmName": "Example Outdoor Co",
      "title": "15% off sitewide",
      "code": "OUTDOOR15",
      "startsAt": "2026-09-01T00:00:00.000Z",
      "endsAt": "2026-09-30T23:59:59.000Z",
      "offerUrl": "https://www.example-outdoor.com/?sid=pub",
      "status": "active"
    },
    {
      "id": "cpn_9002",
      "provider": "cj_affiliate",
      "firmName": "Example Outdoor Co",
      "title": "Free shipping over $75 (auto-applied)",
      "code": null,
      "startsAt": null,
      "endsAt": "2026-09-15T23:59:59.000Z",
      "offerUrl": "https://www.example-outdoor.com/shipping?sid=pub",
      "status": "active"
    }
  ],
  "availableProviders": ["cj_affiliate"]
}
curl · products (/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 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"]
}

Field glossary (cross-object)

ConceptWhereNotes
displayName / firmNameMerchant / childrenStore label for UI and joins
providerAll objectsNetwork slug filter and warehouse partition
externalMerchantKeyMerchantNatural key with provider on /me
code / title / windowsOfferCoded vs auto-applied; startsAt/endsAt
offerUrl/me onlyTracked link; omitted on all catalog surfaces
title / brand / skuProductCatalogue identity fields
price / salePrice / imagesProductMerchandising and cards
couponCountMerchantPromo density for directories

Use cases

  • Deal sites

    Merchant directories, coded offer listings, and optional sale SKU grids from one token.

  • Cashback & loyalty

    Store indexes from firms; attach your tracking; keep catalog for discovery research.

  • AI agents

    Single JSON contract across networks for merchant, product, and offer answers.

  • ETL & warehouses

    Page /me lists into Postgres or a lake; upsert on provider + external keys.

When to land here vs a sibling page

Start on this hub for architecture and buyer overview. Deep-link into object pages for implementation details. Prefer /unified-affiliate-api for product-level positioning across Feedico, and /coupon-api when you are shipping coupon listing UX tomorrow.

Commerce Data API FAQ

What is the Commerce Data API?
It is Feedico's hub narrative for commerce data infrastructure: merchants (Firms), products (SKU catalogue), and offers/coupons in one membership-backed REST surface. Object-level deep dives live on /merchant-data-api, /product-data-api, and /offer-data-api.
Which endpoints power the hub?
Account: POST /api/v1/me/networks, /me/coupons, /me/products. Catalog discovery: POST /api/v1/catalog/networks, /catalog/coupons, /catalog/products. Catalog omits offerUrl; /me includes tracked offerUrl when available.
Who should use this page vs the object APIs?
Use this page for architecture, ETL planning, and buyer education. Use Merchant, Product, and Offer pages when you need field glossaries and object-specific examples. Use /coupon-api for production coupon listing playbooks.
Can deal sites and cashback apps share the same feed?
Yes. Deal sites lean on offers and optional sale products; cashback apps often need merchant directories plus tracked links from /me. Both consume the same normalized JSON with different UI filters.
How do AI agents fit in?
Agents authenticate with a Bearer token, page the three object lists, and answer merchant/product/offer questions without per-network adapters. Pair with the unified affiliate API pillar for product positioning.
What about monthly API caps?
Every successful list call counts toward your plan's UTC monthly request cap. See /pricing. Design warehouse ETL with sensible pageSize and caching so you do not burn quota on redundant full pulls.
Is catalog suitable for live click-out?
No. Catalog is discovery only (no offerUrl). For tracked clicks use /me after connecting your own programme credentials, or attach your own compliant affiliate links to catalog metadata.
Where is the OpenAPI and entity model?
openapi-customer.yaml documents the REST contract. The affiliate marketing network data model and schema normalization guides explain Firm, Coupon, Product relationships and field mapping.

You need programme approval and compliant use at each affiliate network. Feedico provides the integration layer - not a substitute for network terms.

Related pages