Merchant data API · Firm feed
Merchant Data API: affiliate merchant feed and Firm entities in one REST contract
Searching for a merchant data API, firm API, or affiliate merchant feed? Feedico normalizes merchant/programme rows from connected networks into Firm objects you can page, filter, and warehouse. Account-scoped firms live under POST /api/v1/me/networks. Cross-tenant discovery uses POST /api/v1/catalog/networks, deduplicated by display name without sharing tracking links.
Definition: what this API returns
A Firm is the stable merchant/programme node in the platform data model. It is not a coupon dump and not a product catalogue. It is the parent entity coupons and optional products hang from. Upstream networks disagree on field names; schema normalization maps them into camelCase Firm fields so your store directory stays stable when you add CJ, Awin, Impact, or peers.
When to use Merchant Data API vs sibling pages
| Need | Use | Why |
|---|---|---|
| Store / brand index | This page (/merchant-data-api) | Firm rows with provider, keys, couponCount |
| Promo codes & offers | /coupon-api or /offer-data-api | Code, title, windows, offerUrl framing |
| Full SKU catalogue | /product-data-api | title, brand, sku, price, images |
| Sale / deal merchandising | /product-deal-feed-api | salePrice + discount % focus |
| Hub architecture story | /commerce-data-api | Merchant + product + offer together |
Endpoints: account firms and global merchant catalogue
Both surfaces are Bearer-token JSON POSTs. Successful list calls count toward monthly API caps on your plan. Catalog has no offerUrl; account /me includes tracked links on related coupon/product rows when available.
| Surface | Path | Best for |
|---|---|---|
| Your firms | POST /api/v1/me/networks | Programmes you connected; provider + externalMerchantKey per row |
| Catalogue | POST /api/v1/catalog/networks | Discovery index; dedupe by displayName; no shared tracking URLs |
Account-scoped firms vs catalog display-name dedupe
/me/networks (tenant)
- One row per (provider, externalMerchantKey)
- Reflects programmes you are approved to promote
- couponCount scoped to your synced promos
- Join coupons/products with your own tracking context
/catalog/networks (global)
- Merchants merged by displayName across tenants
- providers[] may list multiple upstream sources
- No offerUrl or other publishers' tracking links
- Pair with global coupon API for discovery
Curl and JSON examples
Create an fdco_ token in the dashboard, then POST JSON. Spec: openapi-customer.yaml. Docs hub: /docs.
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}'{
"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 -sS -X POST "https://api.feedico.io/api/v1/catalog/networks" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"page":1,"pageSize":50,"q":"outdoor"}'{
"ok": true,
"recordCount": 1,
"page": 1,
"pageSize": 50,
"networks": [
{
"id": "firm_agg_88a1",
"displayName": "Example Outdoor Co",
"providers": ["cj_affiliate", "impact_com"],
"merchantWebsiteUrl": "https://www.example-outdoor.com",
"couponCountWithCode": 22
}
]
}Field glossary: Firm entity
| Field | Meaning |
|---|---|
| id | Stable Feedico firm id (string). Use as CMS foreign key when joining coupons via networkId. |
| provider | Upstream network slug, e.g. cj_affiliate, awin_affiliate, impact_com. |
| externalMerchantKey | Network-native merchant/programme key. Natural key with provider on /me. |
| displayName | Human-readable merchant or programme name shown in UI and catalog dedupe. |
| merchantWebsiteUrl | Public storefront URL when available from sync. |
| couponCount | Count of linked promo rows for this firm in your account feed. |
| status | Lifecycle flag (active/inactive) after sync soft-delete passes. |
| fetchedAt / lastSyncedAt | When Feedico last refreshed the firm row from upstream. |
Architecture workflow: merchant feed into your product
- Connect networks in the dashboard with credentials for programmes you are approved to promote.
- Sync Firms via scheduled jobs; upsert on (provider, externalMerchantKey) into your warehouse.
- Page /me/networks with page/pageSize (and filters such as provider or q) until you have the full merchant set.
- Join children: coupons via /me/coupons, products via /me/products.
- Optional discovery with
/catalog/networkswhen you need brand search without another publisher's tracking URL. See unified affiliate API.
Networks (CJ / Awin / Impact / …)
| sync adapters
v
Firm rows (/me/networks)
|\
| \__ Coupon rows (/me/coupons)
| \__ Product rows (/me/products)
v
Your CMS / warehouse / AI agent
Catalog discovery (optional):
/catalog/networks → displayName aggregates (no offerUrl)Merchant Data API FAQ
- What is a Merchant Data API in Feedico?
- The Merchant Data API exposes Firm rows: merchant or programme entities synced from affiliate networks you connected. Primary endpoints are POST /api/v1/me/networks (account-scoped) and POST /api/v1/catalog/networks (global discovery, deduped by display name).
- What is a Firm entity?
- Firm is Feedico's normalized merchant/programme object. It carries provider, externalMerchantKey, displayName, merchantWebsiteUrl, status, couponCount, and sync timestamps. Coupons and products reference firms via networkId or firmName depending on the surface.
- What is externalMerchantKey?
- externalMerchantKey is the upstream network's stable merchant or programme identifier. Combined with provider, it forms the natural upsert key for account-scoped firms: (provider, externalMerchantKey).
- How does /me/networks differ from /catalog/networks?
- /me/networks returns firms from programmes you connected with your credentials, one row per provider+key. /catalog/networks is a cross-tenant discovery index that merges merchants by display name and does not share other publishers' tracking URLs.
- Does the merchant catalogue include offerUrl?
- No. Catalog networks omit publisher-specific tracking links. Use /me endpoints when you need tracked offerUrl values from your own sync. Catalog rows are for discovery and merchant metadata only.
- How is couponCount calculated?
- On account-scoped network rows, couponCount reflects active promo rows linked to that firm for your tenant. Catalog aggregates may expose couponCountWithCode for coded offers under the deduped display name.
- Do I need a Bearer token?
- Yes. Both /me/networks and /catalog/networks require Authorization: Bearer with an fdco_ API token. Successful calls count toward your plan's monthly API request cap (UTC month).
- When should I use Merchant Data API vs Coupon API?
- Use Merchant Data API to list stores, filter by provider, and power merchant directories or shop indexes. Use the Coupon API (/coupon-api) when you need promo codes, titles, eligibility windows, and offerUrl for listing pages.
You need programme approval and compliant use at each affiliate network. Feedico provides the integration layer - not a substitute for network terms.