Stay organized with collections
Save and categorize content based on your preferences.
The Places SDK for iOS (New) provides improved performance and a new
pricing model, making it worthwhile to update apps that use
Places SDK for iOS (Legacy). For more details on comparing features, see
Choose your SDK.
Use this guide to understand key differences in Places SDK for iOS
(New) compared to Places SDK for iOS (Legacy), along with how to
handle necessary changes.
Billing best practices for migration
warning_amber
This guidance applies if your API usage is high enough to
move into second-tier pricing. When migrating to a newer version of an API,
you're also being billed for a different SKU. To avoid increased costs during the month of
your transition, we recommend switching to the new APIs in production as close to the
beginning of the month as possible. This will ensure that you reach the most cost-effective
monthly pricing tiers during the migration month. For information about pricing tiers,
see the pricing page
and the pricing FAQ.
Error: kGMSPlacesRateLimitExceeded
Enable Places SDK for iOS (New)
Places SDK for iOS relies on the
Places API service. To use the features of
Places SDK for iOS (New), you must first enable
Places API (New) in your Google Cloud project. For more
information, see Set up your Google Cloud
project.
You then must verify that you have added Places API
(New) to the API key used by your app. For more information, see Use API
Keys.
General changes
Some general changes that apply to multiple APIs include:
GMSPlacesClient
contains new methods to call these new APIs.
New classes have been added to define the request to each of the new APIs.
The response GMSPlace instance contains the new reviews
property of type
GMSPlaceReview.
When your app displays information obtained from the GMSPlace instance,
such as photos and reviews, the app must also display the required
attributions.
For more information, see the documentation on
attributions.
API-specific changes
This section includes the following migration guides for each API:
[null,null,["Last updated 2025-08-28 UTC."],[],[],null,["# Migration overview\n\nThe Places SDK for iOS (New) provides improved performance and a new\npricing model, making it worthwhile to update apps that use\nPlaces SDK for iOS (Legacy). For more details on comparing features, see\n[Choose your SDK](/maps/documentation/places/ios-sdk/choose-sdk).\n\nUse this guide to understand key differences in Places SDK for iOS\n(New) compared to Places SDK for iOS (Legacy), along with how to\nhandle necessary changes.\n\n\nBilling best practices for migration\n------------------------------------\n\nwarning_amber\n\nThis guidance applies if your API usage is high enough to\nmove into second-tier pricing. When migrating to a newer version of an API,\nyou're also being billed for a different SKU. To avoid increased costs during the month of\nyour transition, we recommend switching to the new APIs in production as close to the\nbeginning of the month as possible. This will ensure that you reach the most cost-effective\nmonthly pricing tiers during the migration month. For information about pricing tiers,\nsee the [pricing page](/maps/billing-and-pricing/pricing)\nand the [pricing FAQ](/maps/billing-and-pricing/faq).\n\n\u003cbr /\u003e\n\n#### Error: `kGMSPlacesRateLimitExceeded`\n\n| **Notice:** If your iOS app is experiencing `kGMSPlacesRateLimitExceeded`\n| errors, you may be using a deprecated version of the Places API.\n| Version 2.7.0 of the Places API was deprecated as of January 29,\n| 2019, and was turned off on **July 29, 2019** . A new version of the Places API\n| is now available. We recommend updating to the new version as soon as possible.\n| For details, see the [migration\n| guide](/maps/documentation/places/ios-sdk/client-migration).\n\nEnable Places SDK for iOS (New)\n-------------------------------\n\nPlaces SDK for iOS relies on the\n**Places API** service. To use the features of\nPlaces SDK for iOS (New), you must first enable\n**Places API (New)** in your Google Cloud project. For more\ninformation, see [Set up your Google Cloud\nproject](/maps/documentation/places/ios-sdk/cloud-setup).\n\nYou then must verify that you have added **Places API\n(New)** to the API key used by your app. For more information, see [Use API\nKeys](/maps/documentation/places/ios-sdk/get-api-key).\n\nGeneral changes\n---------------\n\nSome general changes that apply to multiple APIs include:\n\n- Uses a new pricing model. For pricing information for all APIs, see [Pricing\n for the Places SDK for iOS\n (New)](/maps/billing-and-pricing/pricing#places-pricing).\n\n- [Place Details\n (New)](/maps/documentation/places/ios-sdk/place-details), [Nearby Search\n (New)](/maps/documentation/places/ios-sdk/nearby-search), and [Text Search\n (New)](/maps/documentation/places/ios-sdk/text-search) require field masks\n to specify which fields you want returned in the response.\n\n- [`GMSPlacesClient`](/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlacesClient)\n contains new methods to call these new APIs.\n\n- New classes have been added to define the request to each of the new APIs.\n\n- The response `GMSPlace` instance contains the new [`reviews`](/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlace#reviews)\n property of type\n [`GMSPlaceReview`](/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlaceReview).\n When your app displays information obtained from the `GMSPlace` instance,\n such as photos and reviews, the app must also display the required\n attributions.\n\n For more information, see the documentation on\n [attributions](/maps/documentation/places/ios-sdk/policies#other_attribution_requirements).\n\n| **Note:** Because Text Search (New) and Nearby Search (New) were added to Places SDK for iOS and did not replace any existing APIs, there is no migration required to use them.\n\nAPI-specific changes\n--------------------\n\nThis section includes the following migration guides for each API:\n\n- [Migrate to Place Details (New)](/maps/documentation/places/ios-sdk/migrate-details)\n- [Migrate to Place Photo (New)](/maps/documentation/places/ios-sdk/migrate-photo)\n- [Migrate to Autocomplete (New)](/maps/documentation/places/ios-sdk/migrate-autocomplete)"]]