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](https://developers.google.com/maps/documentation/places/ios-sdk/choose-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

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](https://developers.google.com/maps/billing-and-pricing/pricing.md.txt)
and the [pricing FAQ](https://developers.google.com/maps/billing-and-pricing/faq.md.txt).

<br />

#### Error: `kGMSPlacesRateLimitExceeded`

> [!WARNING]
> **Notice:** If your iOS app is experiencing `kGMSPlacesRateLimitExceeded`
> errors, you may be using a deprecated version of the Places API.
> Version 2.7.0 of the Places API was deprecated as of January 29,
> 2019, and was turned off on **July 29, 2019** . A new version of the Places API
> is now available. We recommend updating to the new version as soon as possible.
> For details, see the [migration
> guide](https://developers.google.com/maps/documentation/places/ios-sdk/client-migration).

## Places API (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](https://developers.google.com/maps/documentation/places/ios-sdk/cloud-setup).

You then must verify that you have added **Places SDK for iOS (New)** to the list of authorized APIs on the key used by your app. For more information, see [Use API
Keys](https://developers.google.com/maps/documentation/places/ios-sdk/get-api-key).

## Ensure that you have enough quota in Places API (New)

Make sure that there is enough quota in Places SDK for iOS (New) to
cover your current traffic in the Places SDK for iOS (Legacy). To review and
manage your quotas and usage limits, see [Quotas and quota
alerts](https://developers.google.com/maps/billing-and-pricing/manage-costs#quotast). Note the differences
between the two APIs:

- The quota for Places SDK for iOS (Legacy) relies on the quota of the Places API (Legacy) service. It is the sum of all Places API methods.
- The quota for Places SDK for iOS (New) relies on the quota of the Places API (New) service. There is a separate quota for each API method.

## Check if your negotiated agreement includes Places API (New)

If you have a negotiated agreement, check that it covers
Places API (New), with the expected pricing. If not,
contact your Sales contact at Google or your partner to discuss how you can
include this API.

## General changes

Some general changes that apply to multiple APIs include:

- Uses a new pricing model. For pricing information for all APIs, see [Pricing
  for the Places SDK for iOS (New)](https://developers.google.com/maps/billing-and-pricing/pricing#places-pricing).

- [Place Details (New)](https://developers.google.com/maps/documentation/places/ios-sdk/place-details),
  [Nearby Search (New)](https://developers.google.com/maps/documentation/places/ios-sdk/nearby-search.md.txt),
  and [Text Search (New)](https://developers.google.com/maps/documentation/places/ios-sdk/text-search.md.txt) require field masks
  to specify which fields you want returned in the response.

- [`GMSPlacesClient`](https://developers.google.com/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlacesClient.md.txt)
  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`](https://developers.google.com/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlace.md.txt#reviews)
  property of type
  [`GMSPlaceReview`](https://developers.google.com/maps/documentation/places/ios-sdk/reference/objc/Classes/GMSPlaceReview.md.txt).
  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](https://developers.google.com/maps/documentation/places/ios-sdk/policies.md.txt#other_attribution_requirements).

> [!NOTE]
> **Note:** Because Text Search (New) and Nearby Search (New) were added to Places API (New) and did not replace any existing APIs, there is no migration required to use them.

## API-specific changes

This section includes the following migration guides for each API:

- [Migrate to Place Details (New)](https://developers.google.com/maps/documentation/places/ios-sdk/migrate-details)
- [Migrate to Place Photos (New)](https://developers.google.com/maps/documentation/places/ios-sdk/migrate-photo)
- [Migrate to Autocomplete (New)](https://developers.google.com/maps/documentation/places/ios-sdk/migrate-autocomplete)