Products - Beta

Explore FMTC API Documentation for the Product Feed. Basic documentation for access to the Database of Products from FMTC. The Database is a collection of products across all the networks that FMTC works with.

Before you continue, please read this:  FMTC updates DAILY from all integrated networks  (see Update Time). What the merchant does (or doesn't do) related to updating their file(s) in the network(s) is on the merchant (merchants update daily, weekly, or monthly - more to come on this soon). As part of the process, FMTC reviews the files we receive from the networks ensuring that the products from every merchant in our feed are the most up-to-date based on the information made available to FMTC. Please refer any general questions regarding the Product Feed and/or this documentation to your Account Manager or support@fmtc.co - please include in the subject line: Product Feed Inquiry


Table of Contents

Change Log

2023-10-18

UPDATES

  • Added a new parameter to the getMerchants call that will allow getting merchants by primary country.

Glossary

Here is the glossary of all terms that are used within this document.

Term

Abbreviation

Definition

Term

Abbreviation

Definition

Cross Merchant Identifier

CMID

How FMTC matches products across networks and merchants.

Global Trademark Identification Number

GTIN

An identifier for trade items, developed by GS1. Such identifiers are used to look up product information in a database (often by entering the number through a barcode scanner pointed at an actual product) which may belong to a retailer, manufacturer, collector, researcher, or other entity.

Universal Product Code

UPC

The Universal Product Code is a barcode symbology that is widely used worldwide for tracking trade items in stores. UPC consists of 12 numeric digits that are uniquely assigned to each trade item.

European Article Number

EAN

A standard describing a barcode symbology and numbering system used in global trade to identify a specific retail product type, in a specific packaging configuration, from a specific manufacturer. 

International Standard Book Number

ISBN

The International Standard Book Number is a numeric commercial book identifier which is intended to be unique.

Manufacturer Part Number

MPN

The product identifier used to differentiate a product among other (similar) products from the same brand/manufacturer

Stock Keeping Unit

SKU

It is a number (usually eight alphanumeric digits) that retailers assign to products to keep track of stock levels internally.

API Endpoints

  • getProducts:

    • Description: Get products across all merchants. Can be used to get one product at a time, or multiple products.

  • getMerchants:

    • Description: Get all selected merchants and their relative product stats.

getProducts

The getProducts call returns products grouped together across all merchants. The getProducts call can be used through different modes. The following modes:

Request Parameters 

Name

Value(s)

Description

Required

Default

Mode Available

Name

Value(s)

Description

Required

Default

Mode Available

key

APIKEY

Your FMTC API key found in your FMTC account.

Yes

N/A, must always be provided

  • getProduct

  • getProducts

  • getMerchantProducts

mode

getProduct, getProducts or getMerchantProducts

The mode to run the product feed in. If not provided but a CMID value is sent, this is the mode set by internal programming.

No

getProducts

  • getProduct

  • getProducts

  • getMerchantProducts

cmid

String

The CMID of the product requested

Yes

N/A, must always be provided

  • getProduct

format

JSON or XML

The format the resulting product will be returned in.

No

JSON

  • getProduct

  • getProducts

  • getMerchantProducts

on-sale

0 or 1

0 - Return products that are not on sale and on sale.

1 - Return products that are on sale.

No

0

  • getProduct

  • getProducts

  • getMerchantProducts

primary-image

0 or 1

0 - Return products with or without a primary image.

1 - Return products with a primary image.

No

0

  • getProduct

  • getProducts

  • getMerchantProducts

fresh-reach

0, 1, or 2

For FreshReach® users (You must be signed up with FreshReach® through FMTC for this parameter to work correctly):

Set the value to the following and you will get the following results:

0 - Return products with no FreshReach® links attached.

1 - Returns all products and FreshReach® links attached to products if applicable, determined by the merchant.

2 - Only products that are available through FreshReach®, determined by the merchant.

No

0

  • getProduct

  • getProducts

  • getMerchantProducts

limit

Integer

A limit to the number of products to be returned. The maximum allowed is 2,000.

No

  • getProducts - 500

  • getMerchantProducts - 10,000

  • getProducts

  • getMerchantProducts

network

String or Array

The products will be limited to this network(s) only. It can either be a single network or an array of network names.

No

N/A - By Default, all networks will be considered.

  • getProducts

  • getMerchantProducts

merchant

String or Array

The products will be limited to this merchant(s) only. It can be either a single merchant or an array of merchant names. You can also provide the merchant id(s) for a more precise limiting of merchants. You cannot use both ids and names.  You must also select these merchants within your FMTC account.

  • getProducts - No

  • getMerchantProducts - Yes

  • getProducts - N/A, By Default all merchants will be considered.

  • getMerchantProducts - required.

  • getProducts

  • getMerchantProducts

brand

String or Array

The products will be limited to this brand(s) only. It can be either a single brand or an array of brand names.

No

N/A, By Default, all brands will be considered.

  • getProducts

  • getMerchantProducts

category

String or Array

The products will be limited to this category(s). It can be either a single category or an array of category names.

No

N/A, By Default, all categories will be considered.

  • getProducts

  • getMerchantsProducts

currency

USD, CAD, GBP, etc.

The currency that the price of the product is in. Can be any initialism related to currency.

No

N/A, By Default, all currencies will be considered.

  • getProducts

  • getMerchantProducts

selected-merchants-only

0 or1

Sending in a value of 1 will limit the products to only merchants you have selected in your dashboard.

No

N/A, By Default, all merchants up to your limit will be considered.

  • getProducts

  • getMerchantProducts

latest

0 or1

Limits the resulting products to only those that have been processed within a set time frame. The Default is 1.

No

1

  • getProducts

  • getMerchantProducts

latest-time

String, Integer

The latest time that a product needs to exceed in order to be returned. This can be either a time string (-2 days) or a Unix time of the oldest date you are looking for.

No

“-24 hours”

  • getProducts

  • getMerchantProducts

exclude-merchants

0 or1

Excludes products from the merchant(s) submited with the “merchant” parameter. These merchants do not need to be selected within your FMTC account.

No

0

  • getProducts

  • getMerchantProducts

cursor

String

The cursor value provided by the API for pagination. Either provide the nextCursor for the next page or the backCursor for the previous page.

No

Empty. By Default, will start from the beginning.

  • getProducts

  • getMerchantProducts

seed

brand, merchant, network, category, currency, 1

The filter that you want to seed your request with. See Advanced Parameters below for more information about the seed parameter.

No

N/A, By Default, this will not be used unless specified. See Advanced Parameters below for more information about the seed parameter.

  • getProducts

  • getMerchantProducts

stagger

0 or1

Tell the API that you would like the API to run your requests in smaller chunks and then sending back all the results. See Advanced Parameters below for more information.

No

N/A, By Default, this will not be used unless specified. See Advanced Parameters below for more information about the seed parameter.

  • getProducts

  • getMerchantProducts

 

Implementation

How to use the getProducts endpoint.

One Product

Response Elements 

Name

Description

Always Returned?

Name

Description

Always Returned?

product

The main element, stores of all the merchants selling the product

Yes

merchant

An individual merchant that sells the requested product. Holds the product data relative to the merchant

No

Merchant Elements

Name

Description

Name

Description

CMID

An identifier that can be used across merchants. It can be one of four different identifiers, notated by a prefix.

gtin- The GTIN number.
isbn- The ISBN number.
mpn- The MPN character string.
id- A custom character string generated based on the ID, FeedName, and MerchantId.

ID

An identifier that is unique to the merchant (This is the SKU whenever possible, however, sometimes the SKU is either not unique or not provided. When needed, attributes of the product are appended to the front of the SKU to differentiate products.) 

Brand

The brand associated with the product. The brand names have been standardized to a set format. Please see the section below.

If no Brand or Manufacture is given by the merchant, this is set to NO BRAND 

PrimaryCategory

The main category associated with the product. It is one of our top-level categories from FTMC.

If no category is given by the merchant, this is set to NO CATEGORY 

Categories

All of the categories related to the product by the merchant. Separated by a ','

NOTE: Sometimes, the delineator is | or ~~, this is due to network inconsistencies and is being worked on.

ProductName

The name of the product at this merchant

MerchantName

The name of the merchant selling this version of the product

MerchantID

The merchant's identification number.

FeedName

The name of the feed that this product is related to. Generally the name of the Network the feed is part of.

Available

Shows if the product is available at this merchant

Possible values 

● 1, the product is available 

● 0, the product is not available 

Price

The price of the product at this merchant.

This value can be null. This will occur when the Price is not provided by the merchant.

SalePrice

The discounted price from the merchant. This price will be equal to or less than the price, if provided.

This value can be null. This will occur when a Sale Price is not provided by the merchant.

Currency

The currency that this merchant is selling the product in

AffiliateUrl

The Affiliated URL of the product for this merchant. This URL will be either an affiliate URL with a place holder for an affiliate id or your affiliate id set within your FMTC account. The place holder is AFFILIATE_ID.

Shipping

The shipping available for this product. The possible fields of this element are: 

● Country 

● Service 

● Currency 

● Price

If no shipping is given by the merchant, this field is empty

GroupID

The item_group_id from the google shopping fields if provided by the merchant. 

If the group id is not given by the merchant, this is set to NULL.

GTIN

The Global Trade Item Number (UPC, EAN, etc). It will always be 15 numbers long to indicate that it needs to be processed. If it is not provided, this field is set to NULL.

Description

The description of the product provided by the merchant

ProductImage

A link to the image of the product provided by the merchant

Other

A set of fields that are not standardized across products. This could include: color, size, dimensions, custom fields, etc. 

If this field is null or empty, this means the merchant has not put any additional values for the product.

If a subfield is null or empty, that is the value provided from the merchant/network. FMTC does not change any of these values upon ingesting them into the feed.

FreshReach

The FreshReach® URL for the merchant of the product. This will only be provided for users that provide their user key and if they are signed up for FreshReach®.

Note: Not all FreshReach® merchants support DeepLinking. This link may go to the product page or the merchant's homepage. 

LastUpdate

The last time (as a Unix timestamp) the product was updated by the merchant that our system obtained.

ProcessedTime

The last time (as a Unix timestamp) the product was confirmed by our system.

Example Response - JSON

Here is an example of a JSON Response from the getProducts endpoint.

{ "product": [ [ { "CMID": "gtin-###############", "ID": "123abcXYZ", "MerchantId": "2902", "FeedName": "Impact", "Brand": "Brand", "PrimaryCategory": "Clothing & Apparel", "Categories": "Cat1, Cat2", "ProductName": "Name", "MerchantName": "Best-Buy-US", "Available": "1", "Price": "0.00", "SalePrice": "0.00", "Currency": "USD", "AffiliateUrl": "https://example.com/client-affiliateid-test", "Shipping": { "Country": " US", "Service": "Ground", "Price": "0.00", "Currency": "USD" }, "GroupID": "ABC123", "GTIN": "###############", "Description": "Short Description", "ProductImage": "https://example.com/is/image/", "Other": {}, "FreshReach": "https://freshreach.co/freshreach/merchants/", "LastUpdate": "1634251088", "ProcessedTime": "1634251088" } ] ] } }

Example Response - XML 

Here is an example of an XML response from the getProducts endpoint.

<product> <merchant> <CMID>gtin-###############</CMID> <ID>123abcXYZ</ID> <Brand>Brand</Brand> <PrimaryCategory>Clothing & Apparel</PrimaryCategory> <Categories>Cat1, Cat2</Categories> <ProductName>Name</ProductName> <MerchantName>Merchant 1</MerchantName> <MerchantId>2902</MerchantId> <Available>1</Available> <Price>0.00</Price> <SalePrice>0.00</SalePrice> <Currency>USD</Currency> <AffiliateUrl> https://example.com/client-affiliateid-test </AffiliateUrl> <FeedName>PepperJam</FeedName> <Shipping> <Country>US</Country> <Service>Ground</Service> <Price>0.00</Price> <Currency>USD</Currency> </Shipping> <GroupID>ABC123</GroupID> <GTIN>###############</GTIN> <Description> Short Description </Description> <ProductImage> https://example.com/is/image/ </ProductImage> <Other> </Other> <FreshReach> https://freshreach.co/freshreach/merchants/ </FreshReach> <LastUpdate>1111111111</LastUpdate> <ProcessedTime>1111111234</ProcessedTime> </merchant> ... </product>

Multiple Products 

Response Elements 

Name

Description

Always Returned?

Name

Description

Always Returned?

results

The results of the query. Contains products and cursors

Yes

products

The products that match the query

Yes

product

A product that matches the query. Contains merchants that sell the product

No

merchant

The information about the product from the particular merchant. (see Merchant Elements above to learn about the elements contained in a merchant.) 

No

cursor

Contains the info about the cursor needed to the previous page or next page.

Yes

hasBack

States if a previous page exists. (Either true or false)

Yes

backCursor

The cursor to use in the query to the previous page

No

hasNext

The cursor to use in the query to the next page. (Either true or false)

Yes

nextCursor

The cursor to use in the query to the next page.

No

Example Response JSON

{ "results": { "cursor": { "hasBack": true, "backCursor": "asdfjkl123", "hasNext": true, "nextCursor": "qwertyuio123" }, "products": [ [ { "CMID": "gtin-###############", "ID": "123abcXYZ", "MerchantId": "2902", "FeedName": "Impact", "Brand": "Brand", "PrimaryCategory": "Clothing & Apparel", "Categories": "Cat1, Cat2", "ProductName": "Name", "MerchantName": "Best-Buy-US", "Available": "1", "Price": "0.00", "SalePrice": "0.00", "Currency": "USD", "AffiliateUrl": "https://example.com/client-affiliateid-test", "Shipping": { "Country": " US", "Service": "Ground", "Price": "0.00", "Currency": "USD" }, "GroupID": "ABC123", "GTIN": "###############", "Description": "Short Description", "ProductImage": "https://example.com/is/image/", "Other": {}, "FreshReach": "https://freshreach.co/freshreach/merchants/", "LastUpdate": "1634251088", "ProcessedTime": "1634251088" } ] ] } }

Example Response XML 

Merchant Products 

Response Elements 

See Multiple Products Response Elements.

Example Response XML 

getMerchants

The getMerchants call returns all merchants that have been selected.

Example Request: http://services.fmtc.co/ProductFeed/Part3/getMerchants?key=APIKEY

Implementation

How to use the getMerchants API endpoint.

Request Parameters 

Name

Value(s)

Description

Required

Name

Value(s)

Description

Required

key

APIKEY

Your FMTC API key found in your FMTC account.

Yes

format

CSV, XML, JSON

The format the resulting product will be returned in. The default is JSON. 

No

country

String.

Two-Letter Country Code

Return only merchants with a particular Primary Country.

 No

Response Elements 

Name

Description

Always Returned?

Name

Description

Always Returned?

cName

The name of the merchant.

Yes

nMerchantId

The FMTC Merchant Id.

Yes

cNetwork

The Network that this version of the merchant belongs to.

Yes

nProgramID

The Network’s Merchant Id.

Yes

nProducts

The total products that this merchant has in the Product Feed as of the last update of the merchant.

Yes

cLastUpdated

The date when the merchant was last updated by the Product Feed.

Yes

bRelationshipExists

If an affiliate relationship exists between the user and the merchant, as determined by our Merchant Sync.

Yes

cPrimaryCountry

The country the merchant is primarily targeting.

Yes

Example Response JSON

Example Response XML 

Update Time 

The database takes 6 hours to update from all of our networks. During this time, our database will be inaccurate however, most of the data will be correct or present from the previous day. For the most accurate data do not query the database between 7 PM ET/12 AM UTC and 1 AM ET/6 AM UTC. 

However, some networks take less time than others, below is the average time frame for these networks to fill our database. Feel free to query products for these networks outside of the given times  

Network

Update Time

Network

Update Time

Awin

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

CJ Affiliate

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

Commission Factory

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

Impact

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

LinkConnector

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

PepperJam

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

Rakuten Advertising

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

ShareASale

Start Time: 7 PM ET/12 AM UTC

End Time: 1 AM ET/6 AM UTC

Advanced Parameters

The following parameters are meant for uses who are interested in using our product feed at a higher rate than the average users. Use them only if you are seeing long request times or require your requests to be completed at a faster rate due to timeout errors.

Using the Seed Parameter for Long Request Times

Certain combinations of merchants, brands, or other limitations can result in long request times during the first request.

If you experience a lengthy request time, it is best to use the seed parameter. 

How does the seed parameter work?

By sending which part of your query is the most limiting to your request, our API can determine where in our database to start searching for your products. This allows us to speed up the query time.

Tip: It is best to use the value of what you are sending into our API as your seed value.

For example:

  • If you send in a value of “brand”, our API will use the brand you provided in your query as a reference point for creating the seed.

Note: After the first request, the cursor acts as your seed for the remaining request. You can still pass in the seed variable, but it is not needed and might result in slower requests.

If you don’t have a seed value:

  • If you send in a value of 1, our API will use your merchants as the reference point for creating the seed. 

    • If both the seed and the parameter selected-merchants-only are set to 1, then the seed will be only the merchants you selected.

Using the Stagger Parameter for Long Request Times

Some combination of merchants, brands, or other limitations can result in long request times beyond just the first request. This is generally seen when a large request has a jump in CMID values.

If you see this behavior in your requests, you can either:

  1. lower your limit. 

  2. set stagger to 1

Using the stagger parameter will break up your larger requests into smaller requests and send back your results to the total products you requested.  This may still result in a longer than expected query time but it should fix timeout issues of over 1 hour.  If you need your request to complete within a certain time, it is best to use a lower limit (option 1).


Note: This could also cause your requests to take longer if you do not have any of these CMID jumps. Make sure it is only used when you see larger changes in the CMID.

API Errors 

Errors will be returned in the format sent. If the format is not set or is not supported, the default is JSON.  

Message

Description

Message

Description

Invalid Access Key: #APIKEY

The API Key you provided was not matched to your FMTC account. Double-check that you have entered the correct id.

Invalid Sale Filter.

The value provided for “on-sale” was invalid. The value should be either be 1 or 0.

Invalid Primary Image Filter.

The value provided for “primary-image” was invalid. The value should be either be 1 or 0.

Invalid FreshReach® Filter.

The value provided for “fresh-reach” was invalid. The value should be either 0, 1, or 2.

You requested FreshReach® Products but you are not signed up for FreshReach®.

Your account does not have access to FreshReach®. Please double check your FMTC FreshReach® status.

Invalid or Unsupported Format.

The value provided for “format” was invalid. The value should be either XML, JSON, or FILE.

Invalid CMID #CMID

The CMID you provided is either not in a supported format or too long for our API to process.

Invalid Limit Value.

The value provided for “limit” was invalid. The value should be a numeric value that is between 0 and 2,000

This functionality requires 1 merchant.

You have set the mode to getMerchantProducts but you have not provided a value for “merchant”. You need one merchant for this mode.

This functionality allows for only 1 merchant.

You have set the mode to getMerchantProducts but you have provided multiple values for “merchant”. You can only provide one merchant for this mode.

No matching networks found.

There are no products from the requested network in the API.

No matching merchants found. If you are using your user key, make sure you have added the merchant to your selections.

Either there are no products for the merchant you are requesting or you have not selected the merchant within your dashboard.

Invalid Stager Filter

The value set for stagger is invalid. Please confirm that is either 0 or 1.

Invalid or Unsupported Seed

The value set for seed is invalid. Please confirm it is set to brand, merchant, network, category, currency, or 1.

The parameter you set for your seed was not found.

If you have used another value than 1 for seed then you must also provide the corresponding parameter with the query.

Invalid Exclude Merchants Filter

The value you provided for exclude-merchant was invalid. It must be 0 or 1.

You cannot set your seed to merchants and set excluding to merchants.

You requested to excluding to merchants but are trying to use your merchant values as the seed. Try using a different seed such as brand.

Exclude merchants is not supported for this mode.

The mode “getMerchantProducts” does not support excluding merchants. Try using getProducts.

Invalid Latest Time String.

The value you provided for latest-time was invalid. It must be a valid date/time string or Unix timestamp.

Invalid Latest Time String. The requested value cannot be in the future.

The value you provided for latest-time was determined to be in the future. Make sure you include the minus sign when submitting time strings for latest-time. Ex: “-2 days”.

Frequently Asked Questions (FAQ)

Network Names

The following is the list of network names that FMTC works within the Product Feed. When searching for a network name, or using a network name, the following list is how they should be used within the Product Feed:

  • Awin

  • Commission Factory

  • CJ Affiliate

  • Impact

  • LinkConnector

  • PepperJam

  • Rakuten Advertising

  • ShareASale

Brand Standards 

The brand names from merchants can vary in a large number of ways so we have decided to standardize the way these names will appear in our product feed. For many of the brand names, they will follow this format. 

  • The first letter is always capitalized. 

  • All words within the brand name are capitalized except for 

    • 'a', 'and', 'any', 'at', 'by', 'each', 'for', 'from', 'in', 'is', 'item', 'items', 'on', 'of', 'or', 'the', 'to', 'with' 

  • These words are completely capitalized. 

    • 'LG', 'LED', 'LEDs', 'GB', 'HD', 'LCD', 'USB', 'LTD', ‘LLC’ 

  • All non-alphanumeric characters are removed. 

    • An exception is that ‘&’ is not removed. 

    • An exception is that ‘-’ and ‘_’ are replaced with ‘ ‘.

  • Example:

    • Original brand name: A. by BoOM

    • The brand name returned by our Product Feed API: A by Boom 

There are some brand names that have their own standard capitalization that we have decided to honor. Here is a link to the table of brand names and how they are formatted in our Product Feed API: https://fmtc.atlassian.net/wiki/spaces/FKB/pages/84213993

Setting the merchant parameter

You can limit the number of products by merchants with one of two id values.

  • Option 1: Use the FMTC Merchant ID (recommended)

    • Find the FMTC Merchant ID in our Merchant Directory or your FMTC Account (under “Manage Product Merchants”)

    • Note: The FMTC Merchant ID is generated by FMTC to identify a merchant matched to a network.

  • Option 2: Use the Merchant Name along with the Network Name

    • Note: The merchant name should come from FMTC and not the network. There may be slight variations between the two.

An explanation about cursors

The cursor is like a page number unique to your request parameters. Cursors will change based on the parameters you choose and the daily products that have been updated. Using a cursor from one day will not give you the same products as another day even if you use the same parameters. Make sure to always use the cursor provided by the API at the time of calling for the most accurate list of products. 

updated October 19, 2021 © Copyright 2021 FMTC, LLC All Rights Reserved

Email: support@fmtc.co
Telephone: 512-430-4970

Contact Us | Terms of Service | Privacy Policy

Copyright © 2007 – 2022. FMTC, LLC. All Rights Reserved.