Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Are rate limits for calculate, calculateETA, and reverse geocoding shared across an app?

Hi,

I'm using MapKit's MKDirections.calculate, calculateETA, and reverse geocoding (via CLGeocoder.reverseGeocodeLocation) in my iOS app.

I understand that there are undocumented rate limits for these services to prevent abuse, but I couldn't find official details.

I would like to know:

  • Are the rate limits applied per device, per app installation, or are they shared across all users of the same app bundle ID?
  • Is there any guidance on how to design these features to avoid hitting rate limits in a production environment?
  • What is the best practice if a user repeatedly triggers routing or reverse geocoding (e.g., typing or moving the map)?

Any clarification or official documentation would be greatly appreciated. Thank you!

Answered by Frameworks Engineer in 842602022

Yes; these APIs use rate limiting to help protect our services. Specific details about the rate limiting are not documented, and are subject to change.

If you are seeing requests fail with MKError.loadingThrottled, you should defer your next request for a little while. It might be useful to adopt a strategy that reduces the number of requests made, such as waiting for the user to finish panning the map before issuing a request.

Accepted Answer

Yes; these APIs use rate limiting to help protect our services. Specific details about the rate limiting are not documented, and are subject to change.

If you are seeing requests fail with MKError.loadingThrottled, you should defer your next request for a little while. It might be useful to adopt a strategy that reduces the number of requests made, such as waiting for the user to finish panning the map before issuing a request.

Are rate limits for calculate, calculateETA, and reverse geocoding shared across an app?
 
 
Q