amzn / selling-partner-api-models

This repository contains OpenAPI models for developers to use when developing software to call Selling Partner APIs.
Apache License 2.0
612 stars 737 forks source link

JSON_LISTINGS_FEED or POST_INVENTORY_AVAILABILITY_DATA #2657

Closed liamseys closed 1 year ago

liamseys commented 1 year ago

Hello,

We have a significant inventory on Amazon and want to efficiently update our listings, including price, stock, and delivery times. After reviewing the Selling Partner API documentation, we found two options for this task: creating a JSON feed with messages or submitting a POST_INVENTORY_AVAILABILITY_DATA inventory file. We need to update approximately 5 million offers across multiple marketplaces. Can you please advise on the best method to achieve this?

DomuITteam commented 1 year ago

Hi. With JSON_LISTINGS_FEED, you're looking to be limited to 5 requests per second as per Amazon's usage plan, you can imagine how long it might take to update ~5 million offers.

I use POST_INVENTORY_AVAILABILITY_DATA, and the operation ends in about a minute for over 5k listings, which includes communicating with ERP, SQL queries, mapping, etc. (there's some internal logic to be selective about what we want to update in terms of stock levels so the actual number of updates is significantly lower).

To scale it to your number of listings, it still would take approximately 16 times as long to do this operation using JSON_LISTINGS_FEED. Of course, your code might be x16 more efficient than mine 😄

leonardonakagawa commented 1 year ago

Hello @liamseys,

Thank you for reaching out regarding how to update efficiently your listing's information.

We recommend using the Listing Items API if you are updating information from less than <1500 skus as this API is a 1x1 operation.

If you are submitting updates between 1,500 to 10,000 SKUs per request, we recommend using the JSON_LISTINGS_FEED where you can send updates in bulk in one payload rather than using the POST_INVENTORY_AVAILABILITY_DATA.

The benefits in using the Listing Items API and the JSON_LISTINGS_FEED includes: Sync and async feedback mechanisms. Uniformity in schemas across data requirements, unlike XML from POST_INVENTORY_AVAILABILITY_DATA that in the past led to errors for developers uploading multiple categories. Reduced human/manual input errors leading to submission errors and abandoned selections.

To implement this workflow in your system using the JSON_LISTINGS_FEED or the Listing Items API, You can find details regarding this in our Creating and updating listings items in bulk

You can also check our Listing API Series on YouTube.

If the information available in the documentation link provided above does not fully resolve your inquiry, please open a support case with us.

Thanks, Leonardo Nakagawa Solutions Architect, Selling Partner API Developer Support

liamseys commented 1 year ago

@leonardonakagawa Thanks for all this information. One more question, when we submit a JSON FEED to the JSON FEED API, in the schema it says to pass "productType", in some of the examples it says PRODUCT as value which just works fine, in other examples it gives the correct productType for a product. Would it go faster if we pass the correct one instead of the general PRODUCT value?

leonardonakagawa commented 1 year ago

Hi @liamseys, you are welcome!

So, if the attribute you are going to update are present in both, PRODUCT or the productType of the product itself, there should be no functional difference.

Example: If you are going to make inventory (fulfillment_availability) or price (purchasable_offer) updates, you can use the productType as PRODUCT with no issue or performance differance.

Thanks, Leonardo Nakagawa Solutions Architect, Selling Partner API Developer Support

liamseys commented 1 year ago

Hello Leonardo,

I wanted to provide an update. We are getting closer to migrating to the JSON_LISTINGS_FEED. However, considering the size of our inventory, which consists of approximately 3.5 million unique offers across all our Amazon marketplaces, we anticipate needing to submit 350 feeds to update our entire inventory. This is necessary as we continuously adjust our pricing and transit days.

I've already initiated a case with Developer Support, but they have mentioned that obtaining approval for increased rate limits on the submitFeeds endpoint can be challenging. Is there any way you could assist in expediting this process for us?

Best regards, Liam