ChannelAdvisor advertises very robust REST API Limits.  The IP Address limit is 500,000 requests per hour, 8,300 request per minute (8,300 x 60 = 498,000 per hour not 500,000, but whose counting) shared across dev keys highlighted in the upper left corner of their General REST API Limits illustration found here REST API Request Limits (channeladvisor.com).

These limits sound rather robust until you look at the Account limit of 2,000 requests per minute per profile shared across dev keys and the Integration Limit of 5 concurrent requests not shared across dev keys found in the lower right corner of ChannelAdvisor’ Illustration.  In other words, these are the true limits for each profile and set of developer keys.  Even still, it sounds like a lot until you start working with the API in certain ways and realize it can be rather meager.

We found out the hard way that the true REST API limits were 2,000 requests per minute and not the 8,300 we originally thought even after creating separate applications via ChannelAdvisor’ developer console and obtaining a separate Application ID and Share Secret for each integration.  The only advantage to creating separate application was eliminating the dreaded “151: HTTP protocol error. 429 Too Many Concurrent Requests” error.

When working with products, you can request a batch of products using a variety of filters, or you can request products individually using the product ID.  Requesting products individually requires the prod ID whereas using filters like CreatedDateUtc or UpdatedDateUtc allows you to request products that have been created or updated since a specified date and time.  Using filters to return 100 products counts as 1 API request.  Using the product ID to request the same 100 products would count as 100 requests.  You can see filters can be more efficient when making request to ChannelAdvisor since the first method would leave 1999 requests remaining for that minute and the latter would leave 1900 request for the same period.

ChannelAdvisor uses a paging mechanism when requesting products.  It works like this:  You make a request for all products created since a certain time which results in 4,000 products meeting your criteria.  With the paging mechanism, ChannelAdvisor returns the request with 100 products per page.  Each page provides the link to the next page of 100 products so you can continue to request each page until you reach 4,000.  This method consumes only 40 API requests (4000 products / 100 products per page).  A request for the same products using the product ID would consume 4,000 API requests and subject you the API limits imposed by ChannelAdvisor.

The key to making robust, efficient, and responsive applications which integrate nicely with ChannelAdvisor is to understand the REST API request limits.  Us the paging mechanism instead of individual product requests to reduce requests to ChannelAdvisor.  If you require attributes, images, label, DC quantities for a product use the expand collections feature (&$expand=Attributes,Labels,Images,DCQuantities) with your API request to include that data with the product response.  Expanding the collection to include this data does not affect your request limits.  Requesting each collection individually for a product; however, consumes 4 request per product totaling 16,000 additional requests (4,000 products * 4 collections per product).

With planning and implementing ChannelAdvisor’s REST API effectively, you can build robust integrations with their platform while achieving your integration objectives.

To learn more about integrating with ChannelAdvisor REST API and how we can help you achieve your objectives, contact us.

We hope this post has been helpful.  Any questions or comments, please feel free to post.