Product showing up in Amazon MWS API but not Product Advertising API - api

I'm building an integration for my warehouse and using Amazon's API's to get product information from UPC. I've ran into a number of times where a result comes back accurately from the GetMatchingProduct on MWS API but not from the Product Advertising API. Even Vice Versa has occurred.
Why might this be? Is there a reason I should just use one or the other?
Example: UPC - 363824072463
MWS brings back ASIN - B0057UUHGU which is the relevant one that also comes back when you just search Amazon. However the Product Advertising API does not return this in its list of results at all.

We have found that often times new, or recently changed items take a little while to correctly populate in the Product Advertising API.
Also, for what you say your purposes are, I would be cautious relying on the Product Advertising API. It is a sales tool, so sometimes when given an out-of-stock item, for instance, it will return results of a different item (maybe similar, maybe was variated with it, etc) as the purpose of that API is to drive sales to Amazon.

Related

How to determine if a Shopify order was placed via the Amazon channel?

I am querying the Shopify API for a specific order and I would like to know how to determine if the order was placed in our Amazon Seller channel and sent to Shopify as it is described in Shopify's documentation: https://help.shopify.com/en/manual/sell-online/amazon-sales-channel/processing-orders. On the section "Fulfilling Orders" of that page it reads:
All new orders placed through Amazon appear in your orders list and
are marked as Amazon.
A real JSON response from the Order API looks like this: https://help.shopify.com/en/api/reference/orders/order#show
I could not find any indication that the order might come via Amazon. I did find the fulfillment service (just a simple Ctrl F "amazon") but that is a different thing.
Being a Shopify Plus customer we asked their Guru Support team how they implement the "marked as Amazon" part and the response was:
Guru: Looking at all your orders you won't be able to
differentiate. When you click through to a singular order though,
you'll be able to see in its timeline that it came from Amazon instead
of your Online store.
My team: mmm so if I connect though the API
"orders.json?id=xxxx" the only way I can check it came from amazon is
though the timeline?
Guru: As far as I'm aware that's the case. I can check with our
development team to see if there's another indicator. Would I be able
to email you back with any additional findings?
Of course my team is still waiting on an answer from them but I bet someone at SO has already been in this situation before.
Some might want to know why I need to know the order source. We are sending these orders from Shopify into Netsuite via a Celigo connector. Amazon orders need to hit a different GL account than the normal Shopify orders and my task is to code the correct mapping based on some differentiating element or name/value pair from the JSON response.
When an order comes down the JSON has a field called source_name and the value should be something like this: sell-on-amazon
"source_name":"sell-on-amazon"

How to search Amazon for 5-star-rated products with at least 10 ratings?

Oftentimes, when searching products on Amazon, I want to see the products with the best ratings. More often than not, when sorting by Customer Ratings, Amazon will display products that have a 5-star rating from just 1 rating, which is not enough of a sample size to tell me much about those products.
So how can I search Amazon for 5-star-rated products that have received a minimum of X ratings (e.g. 10) and only then sort by ratings?
Can this only be done via their API or can this be done on their website directly via some kind of advanced search?
You can't do this with the API - Amazon removed star ratings (and review count) from it back in 2010, and the API now only shows them as part of a block of reviews in an iframe. So the only way to extract this information is to scrape Amazon - either the site itself, or inside those frames - which of course they do not take kindly to!

Bigcommerce - request products based on a list of IDs

I am using the Bigcommerce API to develop a small standalone application for a client. I store product information in a local database anytime I fetch products from Bigcommerce, to reduce latency and network load. However, products can change on Bigcommerce, and while it is acceptable for my application to show mildly outdated information, I will need to update my local cache at some point. My current plan is to do this by storing the original date I requested the product, after which I will need to perform another request to refresh the cache.
My question is, given a list of products (including their Bigcommerce IDs), is there a way to request updates to all of them through a single call to the Products Resource? I can make a request for each individual product by calling:
GET {api}/v2/products/{id}
I can also request all products within an unbroken ID range by calling:
GET {api}/v2/products?min_id={value}&max_id={value}
I am able to successfully call both of the above methods, and I can chain them together in loops to fetch all products. What I want to do is request multiple products with unrelated IDs in a single call. So, something like this:
//THIS IS NOT A REAL METHOD!
GET {api}/v2/products?id[]={value1}&id[]={value2}
Is there any way I can do this? Or is there another approach to solving this that I haven't considered? My main requirements are:
Minimal API requests. My application is small but my client's bigcommerce store is not, and I will be processing tens of thousands of products. I have limited CPU and network resources available, and I simply cannot process that many requests.
Scalable. As I said, my client's store is large, and growing. I need a solution whose overhead scales at a manageable rate with number of products.
Note: my application is a small web application written in PHP running on a Linux shared hosting environment. It is a back of house system which will likely only be used by single user at a time, during standard business hours. I haven't tagged the question with PHP because my question is about the API, which is language agnostic.
One approch can be.
First get all products from BigCommerce using simple products call.
Set some interval time to get updated product list.
You can use min_date_modified and max_date_modified OR min_date_created and max_date_created in products API call to get updated products details.

eBay API RelistFixedPriceItem vs AddFixedPriceItem when updating quantity

I am building a system that publishes products from our inventory to our eBay seller account. Everything is working fine, but I just keep thinking which call should I use when I update the quantity in our inventory.
RelistFixedPriceItem and AddFixedPriceItem both are working well, except that on eBay I will have same item with two different itemID, one is sold and one is active...
is that ok? Does it have something to do with eBay listing terms?
Any Advice?
Thanks
AddFixedPriceItem creates a new listing that does not include any data regarding the previous listing's statistics or sales data. RelistFixedPriceItem will create a listing for the product that does include the sales data from the original listing.
The eBay best match search engine uses a listing's sales stats as part of its algorithm to determine search standing. So if your original listing had a good number of views or sales, I would definitely recommend using ReslistFixedPriceItem. However, if your previous listings was stagnant for a long time without many views or sales, it might be more advantageous to use AddFixedPriceItem instead to give the listing a clean slate.
eBay is always changing their search algorithms, so there is no hard and fast rule here. You really just have to find out what works best for your particular products. Experimentation is key.

Possible to return all books by one individual seller on Amazon through api

Anyone know if it's possible, by using Amazon's API, to return all books on sale by one particular seller? For example, if I want to return all books by this seller:
http://www.amazon.co.uk/gp/aag/main?ie=UTF8&sshmPath=at-a-glance&isAmazonFulfilled=0&marketplaceID=A1F83G8C2ARO7P&isCBA=&orderID=&asin=B000002UUH&seller=A2UHPMPOX7FENB&isPopup=
You can see in the url the unique id. However, on Amazon's notes for ItemSearch:
MerchantId - An optional parameter you can use to filter search results and offer listings to only include items sold by Amazon
So I'm thinking 'only include items sold by Amazon' means you can only limit by amazon unless anyone knows a way of doing it?
It used to be be possible by doing a brute force search with the Seller* API calls. However these calls have been deprecated since Nov 1 2011, so you're out of luck. If you happen to be working for this particular seller (instead of being simply a customer or a competitor), you'll want to use the APIs available to the seller (MWS) to download inventory reports.