Shopping API questions about call limits and throttling
Hi - I'm new to the ebay developer API. Apologies if my question is in the wrong forum. I'm using the GetMultipleItems API in the Shopping API to monitor a list of items for an internal web app. Currently I'm using the 5000 API Call limit, but I have some questions - 1) Is there a limit to how many simultaneous calls I can make at a time, or do I need to do them sequentially? 2) Is it okay for me to call the API once every 3-5 seconds, or is this too frequent? 3) For this type of monitoring application for internal, non-commercial use, can I submit through Ebay's approval process in order to increase my call limit? 4) Is there a way to get a report on how many times I have called the Shopping API? I don't see it in the list of API's at
There's a simultaneous call threads limit in the docs. 18 IRRC. If you are calling every 3 seconds, you've burn thru your 5000 allotment in hours, but there isn't a speed limit other than the threads. You can get approval for an internal app, but you have to provide them access/information to test as part of the application. There are no public facing reports for Shopping or Finding. eBay can provide this information, but it doesn't seem like it's readily available to them either, so you may have to wait for it. You can log your calls yourself to keep track.
@clickimusprime Thanks for the reply, that was very helpful. So, I am currently logging the API calls to a database, and I immediately stop sending requests if I get errorCode=1.21 'IP Limit Exceeded.' I have checked my code throughly, and it seems that I got that error after ~2500 requests rather than 5000. Also, I know my client side logging is accurate because all ebay requests are funneled through a single function, and that function is logging the full request contents (success or failure) to the database. Can you think of any reason this might be the case?
**Can you think of any reason this might be the case?** That single function you created to make API calls -- did you by chance have it programmed to re-call the API once, in the event of an API error response?
@helios825 Yes, this can definitely happen. I call the route about 5 times in parallel (GetMultipleItems has a 20 item limit, i'm calling it 5 times for ~100 items), so if one of the 5 fails, then the other 4 will continue. Is this a problem?
**Also, I know my client side logging is accurate because all ebay requests are funneled through a single function, and that function is logging the full request contents (success or failure) to the database.** You might want to look at what can happen if two threads try to log to the database at the same time. It might be undercounting by overwriting entries, especially if you are logging by time at 1 sec resolution. **if one of the 5 fails, then the other 4 will continue. Is this a problem?** That wasn't what he asked. He asked if you were retrying failures.
@clickimusprime Sorry, my misunderstanding. I stop immediately if there are any failures and go back to inspect manually. I am logging requests to postgres (a row per response), so I feel fairly certain that log entries are not being overwritten. I also go back and check for errors since I don't seem to be reaching the 5000 limit, but I don't see any errors in my responses.
I have some problem, my scripts work fine for more than one year, but last time I saw error after 2500 calls ("LongMessage":"Applications from this IP address are limited in the number of calls they can make.","ErrorCode":"1.21"), I send 3 calls per minute with 5 seconds interval. Did you resolve the problem?