> ## Documentation Index
> Fetch the complete documentation index at: https://guides.affiliate.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Merchants API: find sellers across networks

> The Merchants API returns full merchant profiles for every seller across all affiliate networks, including per-provider links and your standing, canonical records, categories, and more.

The Merchants API gives you access to detailed information about individual sellers affiliated with the networks on Affiliate.com. A merchant is a single seller or company within one network — for example, Levi's on FlexOffers or WalMart Canada on Rakuten US. The same real-world brand may appear as separate merchant records on different networks.

## Endpoints

| Method | Path                 | Description                                                                     |
| ------ | -------------------- | ------------------------------------------------------------------------------- |
| `GET`  | `/v1/merchants`      | List and search all merchants                                                   |
| `GET`  | `/v1/merchants/{id}` | Get a single merchant by numeric ID, `nmer_` ULID, `mer_` canonical ID, or slug |

## Query parameters

<Note>
  **Pass `extended=1` on every request.** Whether the extended fields come back by default depends on your account, so don't assume they will. `extended=1` is what returns `providers`, `canonical`, `categories`, `countries`, `currencies`, `supports`, `supports_deeplinking`, `cookie_duration`, `home_url`, `object_id`, and `slug` — and it's harmless if your account already returns them. If a response is missing `providers` or commissionable links, add the flag.
</Note>

### Base parameters

| Parameter           | Type    | Description                                                                                                                              |
| ------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `extended`          | integer | `1` returns the extended merchant object (`providers`, `canonical`, `categories`, `supports`, and more). Use the integer `1`, not `true` |
| `fields`            | string  | Comma-separated list of fields to return                                                                                                 |
| `page`              | integer | Page number to retrieve. Defaults to `1`                                                                                                 |
| `per_page`          | integer | Results per page. Defaults to `100`                                                                                                      |
| `search`            | string  | Search by merchant name (e.g. `best+buy`) or domain (e.g. `bestbuy.com`)                                                                 |
| `network_ids`       | string  | Comma-separated network IDs to filter by                                                                                                 |
| `origin_ids`        | string  | Comma-separated origin IDs to filter by                                                                                                  |
| `has_icon`          | integer | `1` returns only merchants with an icon URL                                                                                              |
| `has_logo`          | integer | `1` returns only merchants with a logo URL                                                                                               |
| `has_domains`       | integer | `1` returns only merchants that have at least one domain                                                                                 |
| `has_description`   | integer | `1` returns only merchants with a description                                                                                            |
| `product_count_min` | integer | Minimum product count filter                                                                                                             |
| `product_count_max` | integer | Maximum product count filter                                                                                                             |

### Filter parameters

| Parameter                  | Type    | Description                                                                                                           |
| -------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- |
| `relationship_status`      | string  | Filter by relationship status: `approved`, `pending`, `rejected`, `terminated`, `available`, `unavailable`, `unknown` |
| `credential_id`            | string  | Filter to merchants accessible under a specific credential                                                            |
| `canonical_ids`            | string  | Comma-separated canonical merchant IDs (`mer_` ULID format)                                                           |
| `category_ids`             | string  | Comma-separated category IDs (`cat_` ULID format)                                                                     |
| `category_name`            | string  | Filter by category name                                                                                               |
| `countries`                | string  | Comma-separated ISO 3166-1 alpha-2 country codes                                                                      |
| `currencies`               | string  | Comma-separated ISO 4217 currency codes                                                                               |
| `has_commissionable_url`   | integer | `1` returns only merchants that have a commissionable link                                                            |
| `promotion_count_min`      | integer | Minimum number of active promotions                                                                                   |
| `promotion_count_max`      | integer | Maximum number of active promotions                                                                                   |
| `merchant_types`           | string  | Comma-separated types: `standard`, `asn`                                                                              |
| `link_services[shopnomix]` | string  | Filter by Shopnomix availability: `direct`, `indirect`, `verified`, `any`, `none`                                     |

## Response structure

A successful response returns a `meta` object with pagination details and a `data` array of merchant objects.

```json theme={null}
{
  "meta": {
    "total": 112599,
    "from": 1,
    "to": 100,
    "current_page": 1,
    "last_page": 1126,
    "per_page": 100,
    "fields": ["id", "name", "network", "product_count"],
    "trace_id": "019ea511-fe66-713a-bb38-1ade42bbaf44"
  },
  "data": [...]
}
```

### Merchant object

| Field                  | Type          | Description                                                                                                        |
| ---------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------ |
| `object_id`            | string        | Unique identifier in `nmer_ULID` format                                                                            |
| `slug`                 | string        | Short-form identifier (e.g. `nmer_rrmg0vg2`)                                                                       |
| `origin_id`            | string        | Merchant's ID in the originating network                                                                           |
| `home_url`             | string\|null  | Merchant homepage URL                                                                                              |
| `cookie_duration`      | string\|null  | Cookie window as ISO 8601 duration (e.g. `P7D`)                                                                    |
| `supports_deeplinking` | boolean\|null | Whether the merchant supports deep link tracking                                                                   |
| `categories`           | array         | Taxonomy categories (`id`, `breadcrumb`, `name`, `shopify_id`, `google_id`)                                        |
| `countries`            | array         | ISO 3166-1 alpha-2 codes where the merchant operates                                                               |
| `currencies`           | array         | ISO 4217 currency codes accepted                                                                                   |
| `providers`            | array         | Ways to earn commission on this merchant — one entry per network/subnetwork. See [Provider entry](#provider-entry) |
| `canonical`            | object\|null  | The deduplicated canonical merchant record                                                                         |
| `supports`             | object        | What the merchant monetizes: `products`, `services`, `promotions` (booleans)                                       |
| `network.slug`         | string        | Network identifier in `rnet_` format                                                                               |
| `network.region`       | string        | ISO 3166-1 alpha-2 region code                                                                                     |
| `network.icon_url`     | string        | Network icon URL                                                                                                   |
| `network.canonical_id` | string        | Canonical network ID in `net_` format                                                                              |
| `network.links`        | object        | API links for this network (`self`, `canonical`)                                                                   |

### Provider entry

Each object in `providers` is one way to earn commission on this merchant — one network or subnetwork (e.g. `network`, `shopnomix`).

| Field                  | Type          | Description                                                                                                                                                                                                                                                                                                                               |
| ---------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `provider`             | string        | The channel — `network` or `shopnomix`                                                                                                                                                                                                                                                                                                    |
| `status`               | string\|null  | Your standing on this channel. See [status values](#status-values)                                                                                                                                                                                                                                                                        |
| `status_changed_at`    | string\|null  | ISO 8601 timestamp of the last status change                                                                                                                                                                                                                                                                                              |
| `credential_id`        | string\|null  | Network credential your standing/link is tied to                                                                                                                                                                                                                                                                                          |
| `url`                  | string\|null  | Ready-to-use link with your credentials (straight to the provider). `null` when there's no built link for you — read the field itself rather than inferring it from `status`                                                                                                                                                              |
| `template`             | string\|null  | Shareable placeholder link (`{AFF_ID}` = affiliate/campaign ID, `{SUB_ID}` = sub-ID)                                                                                                                                                                                                                                                      |
| `outclick`             | string\|null  | Tracked link via `outclick.co`. See [Outclick links](#outclick-links)                                                                                                                                                                                                                                                                     |
| `supports_deeplinking` | boolean\|null | Whether this provider can deep-link                                                                                                                                                                                                                                                                                                       |
| `deeplink`             | object\|null  | Deep-link builder (`domain`, `template` with a `{target_url}` token); `null` for networks                                                                                                                                                                                                                                                 |
| `approval`             | object\|null  | The program's terms as reported by the network (`commission_data`, `epc_data`, `cookie_duration`, `start_date`, `end_date`, `terms_and_conditions`). Shapes of `commission_data`/`epc_data` vary by network. Present for `approved` **and** `available`; `null` when there's no approval record or no terms (Shopnomix is always `null`). |

### Outclick links

Each provider's `outclick` routes through Affiliate.com's redirector (`outclick.co`): it records the click, then forwards to the provider with your credentials — so it appears in `GET /v1/reports/outclick?offer_type=merchant`. `url` and `template` go straight to the network and are not recorded by us. Fill the `?affiliate_id={AFF_ID}&sub_id={SUB_ID}` slots with your own IDs.

These `{AFF_ID}`/`{SUB_ID}` tokens are specific to the merchants response — the Products and Promotions endpoints still use `@@@`/`###`, and the stored `commissionable_url` keeps `@@@`.

### Status values

| Value         | Description                                         |
| ------------- | --------------------------------------------------- |
| `approved`    | Active approved relationship                        |
| `pending`     | Application submitted, not yet approved             |
| `rejected`    | Application declined                                |
| `terminated`  | Previously approved relationship has ended          |
| `available`   | Programme is open — you have not yet applied        |
| `unavailable` | Programme is closed to new applicants               |
| `unknown`     | Status could not be determined                      |
| `null`        | No relationship, or request made without an API key |

## Example response

```json theme={null}
{
  "data": [
    {
      "id": 142666,
      "object_id": "nmer_01khfn7dzc2a1w09d2rrmg0vg2",
      "slug": "nmer_rrmg0vg2",
      "origin_id": "37229",
      "name": "100% PURE",
      "description": "100% PURE creates natural, high-performance skincare and makeup with safe, pure ingredients.",
      "domains": ["https://100percentpure.com", "https://www.100percentpure.com"],
      "home_url": "https://100percentpure.com",
      "icon_url": "https://img.affiliate.com/logos/canonical_merchants/01kkjwnhgctjrmh5mqkcpdhq84/icon.png",
      "logo_url": "https://img.affiliate.com/logos/canonical_merchants/01kkjwnhgctjrmh5mqkcpdhq84/logo.png",
      "product_count": 689,
      "promotion_count": 0,
      "cookie_duration": null,
      "supports_deeplinking": true,
      "categories": [],
      "countries": ["US"],
      "currencies": [],
      "supports": { "products": true, "services": false, "promotions": false },
      "providers": [
        {
          "provider": "network",
          "status": "approved",
          "status_changed_at": "2026-03-12T07:13:10+00:00",
          "credential_id": "01kkgc7y12s1r29nkhrxavxbs8",
          "url": "https://100pure.sjv.io/c/21786/3053058/37229",
          "template": "https://100pure.sjv.io/c/{AFF_ID}/3053058/37229",
          "outclick": "https://outclick.co/a/2.NetworkOpaqueToken?affiliate_id={AFF_ID}&sub_id={SUB_ID}",
          "supports_deeplinking": true,
          "deeplink": null,
          "approval": {
            "commission_data": {
              "action_name": "Default Sale",
              "action_type": "advanced sale",
              "commission_default": "8.00%"
            },
            "epc_data": {
              "currency": "USD",
              "seven_day": "5.10",
              "three_month": "13.70"
            },
            "cookie_duration": "P1M2D",
            "start_date": "2025-06-24",
            "end_date": null,
            "terms_and_conditions": "<h2>Terms and Conditions</h2><p>Program terms as reported by the network — HTML, and often long.</p>"
          }
        },
        {
          "provider": "shopnomix",
          "status": "approved",
          "status_changed_at": "2026-03-18T14:02:55+00:00",
          "credential_id": "01j8z3example000credential",
          "url": "https://r.v2i8b.com/api/v1/bid/redirect?url=https%3A%2F%2F100percentpure.com&campaign_id=01J8Z3K9QW7RT2VN5XB6MC4FDH&source={SUB_ID}",
          "template": "https://r.v2i8b.com/api/v1/bid/redirect?url=https%3A%2F%2F100percentpure.com&campaign_id={AFF_ID}&source={SUB_ID}",
          "outclick": "https://outclick.co/a/2.ShopnomixOpaqueToken?affiliate_id={AFF_ID}&sub_id={SUB_ID}",
          "supports_deeplinking": true,
          "deeplink": {
            "domain": "100percentpure.com",
            "template": "https://r.v2i8b.com/api/v1/bid/redirect?url={target_url}&campaign_id=01J8Z3K9QW7RT2VN5XB6MC4FDH&source={SUB_ID}"
          },
          "approval": null
        }
      ],
      "network": {
        "id": 335,
        "slug": "rnet_hm7pn95t",
        "name": "Impact",
        "region": "US",
        "url": "https://www.impact.com",
        "logo_url": "https://img.affiliate.com/logos/groups/10020/64x64.png",
        "icon_url": "https://img.affiliate.com/logos/groups/10020/64x64.png",
        "canonical_id": "net_01kkgbymywvbf5qjdcdwchxdhm",
        "links": {
          "self": "https://api.affiliate.com/v1/networks/rnet_01kkgbyq82ve56ywbmhm7pn95t",
          "canonical": "https://api.affiliate.com/v1/networks/net_01kkgbymywvbf5qjdcdwchxdhm"
        }
      },
      "canonical": {
        "id": "mer_01kkjwnhgctjrmh5mqkcpdhq84",
        "slug": "mer_kcpdhq84",
        "name": "100% PURE",
        "site_url": "https://100percentpure.com",
        "logo_url": "https://img.affiliate.com/logos/canonical_merchants/01kkjwnhgctjrmh5mqkcpdhq84/logo.png",
        "icon_url": "https://img.affiliate.com/logos/canonical_merchants/01kkjwnhgctjrmh5mqkcpdhq84/icon.png",
        "domains": { "100percentpure.com": "mer_01kkjwnhgctjrmh5mqkcpdhq84" },
        "domain_canonical_id": null,
        "links": {
          "self": "https://api.affiliate.com/v1/merchants/mer_01kkjwnhgctjrmh5mqkcpdhq84",
          "domain_canonical": null
        }
      },
      "merchant_types": ["standard"],
      "link_services": null
    }
  ]
}
```

## Using merchant IDs in product search

Once you have a merchant's `id`, pass it to the Products API to scope your search to that merchant's catalog.

<Tip>
  Use the `search` parameter to find a merchant by name or domain, then copy their `id` to use as a filter in product search requests.
</Tip>

<Tip>
  Use `has_commissionable_url=1` to retrieve only merchants where a commissionable link template is available. Replace the `{AFF_ID}` placeholder with your affiliate ID to build the link.
</Tip>
