CINXE.COM

Google Maps Platform security guidance  |  Google for Developers

<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google for Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#fff"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/developers/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/touchicon-180-new.png"><link rel="canonical" href="https://developers.google.com/maps/api-security-best-practices"><link rel="search" type="application/opensearchdescription+xml" title="Google for Developers" href="https://developers.google.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developers.google.com/maps/api-security-best-practices" /><link rel="alternate" hreflang="x-default" href="https://developers.google.com/maps/api-security-best-practices" /><link rel="alternate" hreflang="ar" href="https://developers.google.com/maps/api-security-best-practices?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developers.google.com/maps/api-security-best-practices?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developers.google.com/maps/api-security-best-practices?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developers.google.com/maps/api-security-best-practices?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developers.google.com/maps/api-security-best-practices?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developers.google.com/maps/api-security-best-practices?hl=fr" /><link rel="alternate" hreflang="de" href="https://developers.google.com/maps/api-security-best-practices?hl=de" /><link rel="alternate" hreflang="he" href="https://developers.google.com/maps/api-security-best-practices?hl=he" /><link rel="alternate" hreflang="hi" href="https://developers.google.com/maps/api-security-best-practices?hl=hi" /><link rel="alternate" hreflang="id" href="https://developers.google.com/maps/api-security-best-practices?hl=id" /><link rel="alternate" hreflang="it" href="https://developers.google.com/maps/api-security-best-practices?hl=it" /><link rel="alternate" hreflang="ko" href="https://developers.google.com/maps/api-security-best-practices?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developers.google.com/maps/api-security-best-practices?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developers.google.com/maps/api-security-best-practices?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developers.google.com/maps/api-security-best-practices?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developers.google.com/maps/api-security-best-practices?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developers.google.com/maps/api-security-best-practices?hl=th" /><link rel="alternate" hreflang="tr" href="https://developers.google.com/maps/api-security-best-practices?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developers.google.com/maps/api-security-best-practices?hl=vi" /><title>Google Maps Platform security guidance &nbsp;|&nbsp; Google for Developers</title> <meta property="og:title" content="Google Maps Platform security guidance &nbsp;|&nbsp; Google for Developers"><meta name="description" content="Learn how to secure and manage your Google Maps Platform API keys."> <meta property="og:description" content="Learn how to secure and manage your Google Maps Platform API keys."><meta property="og:url" content="https://developers.google.com/maps/api-security-best-practices"><meta property="og:image" content="https://developers.google.com/static/maps/images/google-maps-platform-1200x675.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@GMapsPlatform"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Google Maps Platform security guidance" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Google Maps Platform", "item": "https://developers.google.com/maps" },{ "@type": "ListItem", "position": 2, "name": "Google Maps Platform security guidance", "item": "https://developers.google.com/maps/api-security-best-practices" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="white" type="article" layout="docs" concierge='closed' display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="https://developers.google.com/maps"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Google Maps Platform" src="https://developers.google.com/static/maps/images/maps-icon.svg" srcset=" /static/maps/images/maps-icon.svg" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/maps" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Maps Platform" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Maps Platform </a> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://mapsplatform.google.com/" track-metadata-eventdetail="https://mapsplatform.google.com/" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="home" data-label="navTopMenu" track-name="overview" data-action="tabClick" > Overview </a> </tab> <tab > <a href="https://mapsplatform.google.com/maps-products/" track-metadata-eventdetail="https://mapsplatform.google.com/maps-products/" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - products" track-metadata-module="primary nav" data-category="products" data-label="navTopMenu" track-name="products" data-action="tabClick" > Products </a> </tab> <tab > <a href="https://mapsplatform.google.com/pricing/" track-metadata-eventdetail="https://mapsplatform.google.com/pricing/" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - pricing" track-metadata-module="primary nav" data-category="pricing" data-label="navTopMenu" track-name="pricing" data-action="tabClick" > Pricing </a> </tab> <tab class="devsite-dropdown devsite-dropdown-full devsite-active "> <a href="https://developers.google.com/maps/documentation" track-metadata-eventdetail="https://developers.google.com/maps/documentation" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - documentation" track-metadata-module="primary nav" aria-label="Documentation, selected" data-category="documentation" data-label="navTopMenu" track-name="documentation" data-action="tabClick" > Documentation </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Documentation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation" track-metadata-position="nav - documentation" track-metadata-module="primary nav" data-category="documentation" data-label="navTopMenu" track-name="documentation" data-action="tabClick" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Get Started</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/get-started" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/get-started" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Get Started with Google Maps Platform </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/api-picker" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/api-picker" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> API Picker </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/billing-and-pricing/overview" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/billing-and-pricing/overview" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Billing & Pricing </div> </a> </li> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/resources/trust-center" track-type="nav" track-metadata-eventdetail="https://mapsplatform.google.com/resources/trust-center" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Security & Compliance </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/reporting-and-monitoring/overview" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/reporting-and-monitoring/overview" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Reporting & Monitoring </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/faq" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/faq" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> FAQ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/support" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/support" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Support and Resources </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/support/care" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/support/care" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Customer Care </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/incident-management" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/incident-management" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Incident Management </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Maps</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/javascript" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/javascript" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps JavaScript API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/android-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/android-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps SDK for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/ios-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/ios-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps SDK for iOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/flutter-package/overview" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/flutter-package/overview" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Google Maps for Flutter </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/embed" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/embed" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps Embed API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/maps-static" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/maps-static" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps Static API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/streetview" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/streetview" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Street View Static API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/urls" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/urls" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps URLs </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/aerial-view" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/aerial-view" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Aerial View API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/elevation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/elevation" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Elevation API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/tile" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/tile" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Map Tiles API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/datasets" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/datasets" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Maps Datasets API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/web-components" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/web-components" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="maps" tooltip > <div class="devsite-nav-item-title"> Web Components (Preview) </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Routes</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/routes" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/routes" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Routes API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/navigation/android-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/navigation/android-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Navigation SDK for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/navigation/ios-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/navigation/ios-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Navigation SDK for iOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/cross-platform/navigation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/cross-platform/navigation" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Navigation for Flutter </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/cross-platform/navigation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/cross-platform/navigation" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Navigation for React Native </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/roads" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/roads" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Roads API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/directions" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/directions" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Directions API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/distance-matrix" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/distance-matrix" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Distance Matrix API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/route-optimization" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/route-optimization" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Route Optimization API </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Solutions</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/solutions" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/solutions" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Industry solutions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/mobility" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/mobility" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="routes" tooltip > <div class="devsite-nav-item-title"> Mobility services </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Places</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/places/web-service" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/places/web-service" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Places API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/places/android-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/places/android-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Places SDK for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/places/ios-sdk" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/places/ios-sdk" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Places SDK for iOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/javascript/places" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/javascript/places" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Places Library, Maps JavaScript API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/geocoding" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/geocoding" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Geocoding API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/geolocation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/geolocation" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Geolocation API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/address-validation" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/address-validation" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Address Validation API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/timezone" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/timezone" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Time Zone API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/places-insights" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/places-insights" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Places Insights API (Preview) </div> </a> </li> </ul> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Environment</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/air-quality" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/air-quality" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Air Quality API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/pollen" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/pollen" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Pollen API </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/documentation/solar" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/documentation/solar" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="places" tooltip > <div class="devsite-nav-item-title"> Solar API </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Additional Resources</li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/api-security-best-practices" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/api-security-best-practices" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> API Security Best Practices </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/digital-signature" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/digital-signature" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Digital Signature Guide </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/coverage" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/coverage" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Map Coverage Details </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/optimization-guide" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/optimization-guide" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Optimization Guide </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/software-support" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/software-support" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Mobile OS and software support </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/launch-stages" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/launch-stages" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Launch stages </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/deprecations" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/deprecations" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Deprecations </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/asset-tracking-plan" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/asset-tracking-plan" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> Asset Tracking Plan </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/url-encoding" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/url-encoding" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> URL Encoding </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/maps/third-party-platforms/wordpress" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/third-party-platforms/wordpress" track-metadata-position="nav - documentation" track-metadata-module="tertiary nav" track-metadata-module_headline="additional resources" tooltip > <div class="devsite-nav-item-title"> WordPress Users </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://mapsplatform.google.com/resources/blog" track-metadata-eventdetail="https://mapsplatform.google.com/resources/blog" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - blog" track-metadata-module="primary nav" data-category="blog" data-label="navTopMenu" track-name="blog" data-action="tabClick" > Blog </a> </tab> <tab class="devsite-dropdown "> <a href="https://developers.google.com/maps/developer-community" track-metadata-eventdetail="https://developers.google.com/maps/developer-community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="community" data-label="navTopMenu" track-name="community" data-action="tabClick" > Community </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Community" track-type="nav" track-metadata-eventdetail="https://developers.google.com/maps/developer-community" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="community" data-label="navTopMenu" track-name="community" data-action="tabClick" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://stackoverflow.com/questions/tagged/google-maps" track-type="nav" track-metadata-eventdetail="https://stackoverflow.com/questions/tagged/google-maps" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> StackOverflow </div> </a> </li> <li class="devsite-nav-item"> <a href="https://github.com/googlemaps/" track-type="nav" track-metadata-eventdetail="https://github.com/googlemaps/" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> GitHub </div> </a> </li> <li class="devsite-nav-item"> <a href="https://www.youtube.com/c/GoogleMapsPlatform" track-type="nav" track-metadata-eventdetail="https://www.youtube.com/c/GoogleMapsPlatform" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> YouTube </div> </a> </li> <li class="devsite-nav-item"> <a href="https://discord.gg/f4hvx8Rp2q" track-type="nav" track-metadata-eventdetail="https://discord.gg/f4hvx8Rp2q" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Discord </div> </a> </li> <li class="devsite-nav-item"> <a href="https://twitter.com/GMapsPlatform" track-type="nav" track-metadata-eventdetail="https://twitter.com/GMapsPlatform" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> X (Twitter) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://issuetracker.google.com/bookmark-groups/76561" track-type="nav" track-metadata-eventdetail="https://issuetracker.google.com/bookmark-groups/76561" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Issue Tracker </div> </a> </li> <li class="devsite-nav-item"> <a href="https://devlibrary.withgoogle.com/products/maps" track-type="nav" track-metadata-eventdetail="https://devlibrary.withgoogle.com/products/maps" track-metadata-position="nav - community" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Google Dev Library </div> </a> </li> </ul> </div> </div> </div> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Google Maps Platform" tenant-name="Google for Developers" project-scope="/maps" url-scoped="https://developers.google.com/s/results/maps" > <form class="devsite-search-form" action="https://developers.google.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles fp-auth id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section devsite-header-no-lower-tabs "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/maps/documentation" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Documentation </a> </li> </ul> </div> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="https://developers.google.com/maps"> <div class="devsite-product-logo-container" size="medium" > <picture> <img class="devsite-product-logo" alt="Google Maps Platform" src="https://developers.google.com/static/maps/images/maps-icon.svg" srcset=" /static/maps/images/maps-icon.svg" sizes="64px" loading="lazy" > </picture> </div> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> <a href="https://developers.google.com/maps" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Upper Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Maps Platform" > <svg class="devsite-google-wordmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 148 48"> <title>Google</title> <path class="devsite-google-wordmark-svg-path" d="M19.58,37.65c-9.87,0-18.17-8.04-18.17-17.91c0-9.87,8.3-17.91,18.17-17.91c5.46,0,9.35,2.14,12.27,4.94l-3.45,3.45c-2.1-1.97-4.93-3.49-8.82-3.49c-7.21,0-12.84,5.81-12.84,13.02c0,7.21,5.64,13.02,12.84,13.02c4.67,0,7.34-1.88,9.04-3.58c1.4-1.4,2.32-3.41,2.66-6.16H19.58v-4.89h16.47c0.18,0.87,0.26,1.92,0.26,3.06c0,3.67-1.01,8.21-4.24,11.44C28.93,35.9,24.91,37.65,19.58,37.65z M61.78,26.12c0,6.64-5.1,11.53-11.36,11.53s-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53S61.78,19.43,61.78,26.12z M56.8,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C53.84,33.11,56.8,30.22,56.8,26.12z M87.25,26.12c0,6.64-5.1,11.53-11.36,11.53c-6.26,0-11.36-4.89-11.36-11.53c0-6.68,5.1-11.53,11.36-11.53C82.15,14.59,87.25,19.43,87.25,26.12zM82.28,26.12c0-4.15-2.96-6.99-6.39-6.99c-3.43,0-6.39,2.84-6.39,6.99c0,4.11,2.96,6.99,6.39,6.99C79.32,33.11,82.28,30.22,82.28,26.12z M112.09,15.29v20.7c0,8.52-5.02,12.01-10.96,12.01c-5.59,0-8.95-3.76-10.22-6.81l4.41-1.83c0.79,1.88,2.71,4.1,5.81,4.1c3.8,0,6.16-2.36,6.16-6.77v-1.66h-0.18c-1.14,1.4-3.32,2.62-6.07,2.62c-5.76,0-11.05-5.02-11.05-11.49c0-6.51,5.28-11.57,11.05-11.57c2.75,0,4.93,1.22,6.07,2.58h0.18v-1.88H112.09z M107.64,26.16c0-4.06-2.71-7.03-6.16-7.03c-3.49,0-6.42,2.97-6.42,7.03c0,4.02,2.93,6.94,6.42,6.94C104.93,33.11,107.64,30.18,107.64,26.16z M120.97,3.06v33.89h-5.07V3.06H120.97z M140.89,29.92l3.93,2.62c-1.27,1.88-4.32,5.11-9.61,5.11c-6.55,0-11.28-5.07-11.28-11.53c0-6.86,4.77-11.53,10.71-11.53c5.98,0,8.91,4.76,9.87,7.34l0.52,1.31l-15.42,6.38c1.18,2.31,3.01,3.49,5.59,3.49C137.79,33.11,139.58,31.84,140.89,29.92zM128.79,25.77l10.31-4.28c-0.57-1.44-2.27-2.45-4.28-2.45C132.24,19.04,128.66,21.31,128.79,25.77z"/> </svg>Maps Platform </a> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/" class="devsite-nav-title gc-analytics-event " data-category="home" data-label="navTopMenu" track-name="overview" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/maps-products/" class="devsite-nav-title gc-analytics-event " data-category="products" data-label="navTopMenu" track-name="products" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Products" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Products </span> </a> </li> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/pricing/" class="devsite-nav-title gc-analytics-event " data-category="pricing" data-label="navTopMenu" track-name="pricing" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pricing" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="documentation" data-label="navTopMenu" track-name="documentation" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Documentation" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Documentation </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="documentation" data-label="navTopMenu" track-name="documentation" data-action="tabClick" > <span class="devsite-nav-text" tooltip menu="Documentation"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Documentation"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/resources/blog" class="devsite-nav-title gc-analytics-event " data-category="blog" data-label="navTopMenu" track-name="blog" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Blog </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/developer-community" class="devsite-nav-title gc-analytics-event " data-category="community" data-label="navTopMenu" track-name="community" data-action="tabClick" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="community" data-label="navTopMenu" track-name="community" data-action="tabClick" > <span class="devsite-nav-text" tooltip menu="Community"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Community"> </span> </span> </li> </ul> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/maps/documentation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation" ><span class="devsite-nav-text" tooltip>Google Maps Platform Documentation</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Get Started</span> </div></li> <li class="devsite-nav-item"><a href="/maps/get-started" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/get-started" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/get-started" ><span class="devsite-nav-text" tooltip>Get Started with Google Maps Platform</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/api-picker" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/api-picker" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/api-picker" ><span class="devsite-nav-text" tooltip>API Picker</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/get-map-id" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/get-map-id" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/get-map-id" ><span class="devsite-nav-text" tooltip>Map IDs</span></a></li> <li class="devsite-nav-item"><a href="/maps/faq" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/faq" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/faq" ><span class="devsite-nav-text" tooltip>FAQ</span></a></li> <li class="devsite-nav-item"><a href="/maps/support" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/support" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/support" ><span class="devsite-nav-text" tooltip>Support and Resources</span></a></li> <li class="devsite-nav-item"><a href="/maps/support/care" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/support/care" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/support/care" ><span class="devsite-nav-text" tooltip>Customer Care</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Best Practices</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/maps/api-security-best-practices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/api-security-best-practices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/api-security-best-practices" ><span class="devsite-nav-text" tooltip>API security best practices</span></a></li><li class="devsite-nav-item"><a href="/maps/digital-signature" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/digital-signature" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/digital-signature" ><span class="devsite-nav-text" tooltip>Digital Signature Guide</span></a></li><li class="devsite-nav-item"><a href="/maps/optimization-guide" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/optimization-guide" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/optimization-guide" ><span class="devsite-nav-text" tooltip>Optimization Guide</span></a></li><li class="devsite-nav-item"><a href="/maps/optimize-web-services" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/optimize-web-services" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/optimize-web-services" ><span class="devsite-nav-text" tooltip>Optimizing Web Service Usage</span></a></li></ul></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Billing &amp; Pricing</span> </div></li> <li class="devsite-nav-item"><a href="/maps/billing-and-pricing/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/billing-and-pricing/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/billing-and-pricing/overview" ><span class="devsite-nav-text" tooltip>Billing &amp; Pricing Overview</span></a></li> <li class="devsite-nav-item"><a href="/maps/billing-and-pricing/billing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/billing-and-pricing/billing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/billing-and-pricing/billing" ><span class="devsite-nav-text" tooltip>Billing</span></a></li> <li class="devsite-nav-item"><a href="/maps/billing-and-pricing/pricing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/billing-and-pricing/pricing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/billing-and-pricing/pricing" ><span class="devsite-nav-text" tooltip>Pricing</span></a></li> <li class="devsite-nav-item"><a href="/maps/billing-and-pricing/pricing-india" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/billing-and-pricing/pricing-india" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/billing-and-pricing/pricing-india" ><span class="devsite-nav-text" tooltip>Pricing - India</span></a></li> <li class="devsite-nav-item"><a href="/maps/billing-and-pricing/public-programs" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/billing-and-pricing/public-programs" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/billing-and-pricing/public-programs" ><span class="devsite-nav-text" tooltip>Public Programs</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Reporting &amp; Monitoring</span> </div></li> <li class="devsite-nav-item"><a href="/maps/reporting-and-monitoring/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/reporting-and-monitoring/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/reporting-and-monitoring/overview" ><span class="devsite-nav-text" tooltip>Reporting &amp; Monitoring Overview</span></a></li> <li class="devsite-nav-item"><a href="/maps/reporting-and-monitoring/reporting" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/reporting-and-monitoring/reporting" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/reporting-and-monitoring/reporting" ><span class="devsite-nav-text" tooltip>Reporting</span></a></li> <li class="devsite-nav-item"><a href="/maps/reporting-and-monitoring/monitoring" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/reporting-and-monitoring/monitoring" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/reporting-and-monitoring/monitoring" ><span class="devsite-nav-text" tooltip>Monitoring</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Security &amp; Compliance</span> </div></li> <li class="devsite-nav-item"><a href="/maps/security/compliance/security-compliance" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/security/compliance/security-compliance" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/security/compliance/security-compliance" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/maps/api-security-best-practices" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/api-security-best-practices" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/api-security-best-practices" ><span class="devsite-nav-text" tooltip>Security guidance</span></a></li> <li class="devsite-nav-item"><a href="/maps/security/compliance/services-in-scope" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/security/compliance/services-in-scope" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/security/compliance/services-in-scope" ><span class="devsite-nav-text" tooltip>Services in scope</span></a></li> <li class="devsite-nav-item"><a href="/maps/incident-management" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/incident-management" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/incident-management" ><span class="devsite-nav-text" tooltip>Incident Management</span></a></li> <li class="devsite-nav-item devsite-nav-external"><a href="https://mapsplatform.google.com/resources/trust-center" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://mapsplatform.google.com/resources/trust-center" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://mapsplatform.google.com/resources/trust-center" ><span class="devsite-nav-text" tooltip>Trust Center</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Utilities</span> </div></li> <li class="devsite-nav-item"><a href="/maps/documentation/utilities/polylinealgorithm" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/utilities/polylinealgorithm" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/utilities/polylinealgorithm" ><span class="devsite-nav-text" tooltip>Encoded Polyline Algorithm Format</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/utilities/polylineutility" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/utilities/polylineutility" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/utilities/polylineutility" ><span class="devsite-nav-text" tooltip>Interactive Polyline Encoder Utility</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/routes/polylinedecoder" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/routes/polylinedecoder" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/routes/polylinedecoder" ><span class="devsite-nav-text" tooltip>Interactive Polyline Decoder Utility</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Maps</span> </div></li> <li class="devsite-nav-item"><a href="/maps/documentation/javascript" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/javascript" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/javascript" ><span class="devsite-nav-text" tooltip>Maps JavaScript API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/android-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/android-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/android-sdk" ><span class="devsite-nav-text" tooltip>Maps SDK for Android</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/ios-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/ios-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/ios-sdk" ><span class="devsite-nav-text" tooltip>Maps SDK for iOS</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/tile" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/tile" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/tile" ><span class="devsite-nav-text" tooltip>Map Tiles API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/aerial-view" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/aerial-view" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/aerial-view" ><span class="devsite-nav-text" tooltip>Maps Aerial View API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/maps-static" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/maps-static" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/maps-static" ><span class="devsite-nav-text" tooltip>Maps Static API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/streetview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/streetview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/streetview" ><span class="devsite-nav-text" tooltip>Street View Static API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/embed" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/embed" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/embed" ><span class="devsite-nav-text" tooltip>Maps Embed API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/urls" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/urls" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/urls" ><span class="devsite-nav-text" tooltip>Maps URLs</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/datasets" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/datasets" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/datasets" ><span class="devsite-nav-text" tooltip>Maps Datasets API</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Routes</span> </div></li> <li class="devsite-nav-item"><a href="/maps/documentation/routes" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/routes" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/routes" ><span class="devsite-nav-text" tooltip>Routes API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/navigation/android-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/navigation/android-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/navigation/android-sdk" ><span class="devsite-nav-text" tooltip>Navigation SDK for Android</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/navigation/ios-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/navigation/ios-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/navigation/ios-sdk" ><span class="devsite-nav-text" tooltip>Navigation SDK for iOS</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/roads" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/roads" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/roads" ><span class="devsite-nav-text" tooltip>Roads API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/directions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/directions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/directions" ><span class="devsite-nav-text" tooltip>Directions API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/distance-matrix" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/distance-matrix" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/distance-matrix" ><span class="devsite-nav-text" tooltip>Distance Matrix API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/route-optimization" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/route-optimization" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/route-optimization" ><span class="devsite-nav-text" tooltip>Route Optimization API</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Places</span> </div></li> <li class="devsite-nav-item"><a href="/maps/documentation/places/web-service" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/places/web-service" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/places/web-service" ><span class="devsite-nav-text" tooltip>Places API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/places/android-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/places/android-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/places/android-sdk" ><span class="devsite-nav-text" tooltip>Places SDK for Android</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/places/ios-sdk" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/places/ios-sdk" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/places/ios-sdk" ><span class="devsite-nav-text" tooltip>Places SDK for iOS</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/javascript/places" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/javascript/places" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/javascript/places" ><span class="devsite-nav-text" tooltip>Places Library, Maps JavaScript API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/geocoding" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/geocoding" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/geocoding" ><span class="devsite-nav-text" tooltip>Geocoding API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/geolocation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/geolocation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/geolocation" ><span class="devsite-nav-text" tooltip>Geolocation API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/timezone" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/timezone" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/timezone" ><span class="devsite-nav-text" tooltip>Time Zone API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/elevation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/elevation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/elevation" ><span class="devsite-nav-text" tooltip>Elevation API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/address-validation" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/address-validation" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/address-validation" ><span class="devsite-nav-text" tooltip>Address Validation API</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Environment</span> </div></li> <li class="devsite-nav-item"><a href="/maps/documentation/air-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/air-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/air-quality" ><span class="devsite-nav-text" tooltip>Air Quality API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/pollen" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/pollen" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/pollen" ><span class="devsite-nav-text" tooltip>Pollen API</span></a></li> <li class="devsite-nav-item"><a href="/maps/documentation/solar" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/documentation/solar" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/documentation/solar" ><span class="devsite-nav-text" tooltip>Solar API</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Solutions</span> </div></li> <li class="devsite-nav-item"><a href="/maps/solutions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/solutions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/solutions" ><span class="devsite-nav-text" tooltip>Industry Solutions</span></a></li> <li class="devsite-nav-item"><a href="/maps/solutions" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/solutions" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/solutions" ><span class="devsite-nav-text" tooltip>Retail</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Additional Resources</span> </div></li> <li class="devsite-nav-item"><a href="/maps/coverage" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/coverage" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/coverage" ><span class="devsite-nav-text" tooltip>Map Coverage Details</span></a></li> <li class="devsite-nav-item"><a href="/maps/software-support" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/software-support" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/software-support" ><span class="devsite-nav-text" tooltip>Mobile OS and software support</span></a></li> <li class="devsite-nav-item"><a href="/maps/launch-stages" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/launch-stages" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/launch-stages" ><span class="devsite-nav-text" tooltip>Launch stages</span></a></li> <li class="devsite-nav-item"><a href="/maps/deprecations" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/deprecations" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/deprecations" ><span class="devsite-nav-text" tooltip>Deprecations</span></a></li> <li class="devsite-nav-item"><a href="/maps/asset-tracking-plan" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/asset-tracking-plan" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/asset-tracking-plan" ><span class="devsite-nav-text" tooltip>Asset Tracking Plan</span></a></li> <li class="devsite-nav-item"><a href="/maps/root-ca-faq" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/root-ca-faq" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/root-ca-faq" ><span class="devsite-nav-text" tooltip>Root CA Migration FAQ</span></a></li> <li class="devsite-nav-item"><a href="/maps/domains" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/domains" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/domains" ><span class="devsite-nav-text" tooltip>Domains</span></a></li> <li class="devsite-nav-item"><a href="/maps/roles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/roles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/roles" ><span class="devsite-nav-text" tooltip>Project roles comparison</span></a></li> <li class="devsite-nav-item"><a href="/maps/prelaunch-checklist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/prelaunch-checklist" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/prelaunch-checklist" ><span class="devsite-nav-text" tooltip>Pre-Launch Checklist</span></a></li> <li class="devsite-nav-item"><a href="/maps/premium/overview" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/premium/overview" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/premium/overview" ><span class="devsite-nav-text" tooltip>Premium Plan</span></a></li> <li class="devsite-nav-item"><a href="/maps/url-encoding" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/url-encoding" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/url-encoding" ><span class="devsite-nav-text" tooltip>URL Encoding</span></a></li> <li class="devsite-nav-item"><a href="/maps/third-party-platforms/wordpress" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /maps/third-party-platforms/wordpress" track-type="bookNav" track-name="click" track-metadata-eventdetail="/maps/third-party-platforms/wordpress" ><span class="devsite-nav-text" tooltip>WordPress Users</span></a></li> </ul> <ul class="devsite-nav-list" menu="Documentation" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get Started </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/get-started" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Started with Google Maps Platform" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get Started with Google Maps Platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/api-picker" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Picker" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Picker </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/billing-and-pricing/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Billing &amp; Pricing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Billing &amp; Pricing </span> </a> </li> <li class="devsite-nav-item"> <a href="https://mapsplatform.google.com/resources/trust-center" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security &amp; Compliance" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Security &amp; Compliance </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/reporting-and-monitoring/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Reporting &amp; Monitoring" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Reporting &amp; Monitoring </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/faq" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: FAQ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > FAQ </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Support and Resources" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Support and Resources </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/support/care" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Customer Care" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Customer Care </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/incident-management" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Incident Management" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Incident Management </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Maps </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/javascript" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps JavaScript API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps JavaScript API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/android-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps SDK for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps SDK for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/ios-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps SDK for iOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps SDK for iOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/flutter-package/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Maps for Flutter" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Maps for Flutter </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/embed" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps Embed API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps Embed API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/maps-static" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps Static API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps Static API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/streetview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Street View Static API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Street View Static API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/urls" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps URLs" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps URLs </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/aerial-view" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Aerial View API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Aerial View API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/elevation" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Elevation API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Elevation API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/tile" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Map Tiles API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Map Tiles API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/datasets" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Maps Datasets API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Maps Datasets API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/web-components" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Web Components (Preview)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Web Components (Preview) </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Routes </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/routes" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Routes API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Routes API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/navigation/android-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation SDK for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation SDK for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/navigation/ios-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation SDK for iOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation SDK for iOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/cross-platform/navigation" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation for Flutter" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation for Flutter </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/cross-platform/navigation" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation for React Native" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation for React Native </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/roads" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Roads API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Roads API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/directions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Directions API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Directions API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/distance-matrix" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Distance Matrix API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Distance Matrix API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/route-optimization" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Route Optimization API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Route Optimization API </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Solutions </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/solutions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Industry solutions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Industry solutions </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/mobility" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Mobility services" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Mobility services </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Places </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/places/web-service" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Places API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Places API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/places/android-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Places SDK for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Places SDK for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/places/ios-sdk" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Places SDK for iOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Places SDK for iOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/javascript/places" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Places Library, Maps JavaScript API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Places Library, Maps JavaScript API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/geocoding" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Geocoding API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Geocoding API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/geolocation" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Geolocation API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Geolocation API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/address-validation" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Address Validation API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Address Validation API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/timezone" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Time Zone API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Time Zone API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/places-insights" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Places Insights API (Preview)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Places Insights API (Preview) </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Environment </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/air-quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Air Quality API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Air Quality API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/pollen" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Pollen API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Pollen API </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/documentation/solar" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Solar API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Solar API </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Additional Resources </span> </span> </li> <li class="devsite-nav-item"> <a href="/maps/api-security-best-practices" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: API Security Best Practices" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > API Security Best Practices </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/digital-signature" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Digital Signature Guide" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Digital Signature Guide </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/coverage" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Map Coverage Details" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Map Coverage Details </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/optimization-guide" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Optimization Guide" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Optimization Guide </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/software-support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Mobile OS and software support" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Mobile OS and software support </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/launch-stages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Launch stages" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Launch stages </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/deprecations" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Deprecations" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Deprecations </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/asset-tracking-plan" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Asset Tracking Plan" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Asset Tracking Plan </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/url-encoding" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: URL Encoding" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > URL Encoding </span> </a> </li> <li class="devsite-nav-item"> <a href="/maps/third-party-platforms/wordpress" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: WordPress Users" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > WordPress Users </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Community" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="https://stackoverflow.com/questions/tagged/google-maps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: StackOverflow" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > StackOverflow </span> </a> </li> <li class="devsite-nav-item"> <a href="https://github.com/googlemaps/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: GitHub" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > GitHub </span> </a> </li> <li class="devsite-nav-item"> <a href="https://www.youtube.com/c/GoogleMapsPlatform" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: YouTube" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > YouTube </span> </a> </li> <li class="devsite-nav-item"> <a href="https://discord.gg/f4hvx8Rp2q" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Discord" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Discord </span> </a> </li> <li class="devsite-nav-item"> <a href="https://twitter.com/GMapsPlatform" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: X (Twitter)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > X (Twitter) </span> </a> </li> <li class="devsite-nav-item"> <a href="https://issuetracker.google.com/bookmark-groups/76561" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Issue Tracker" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Issue Tracker </span> </a> </li> <li class="devsite-nav-item"> <a href="https://devlibrary.withgoogle.com/products/maps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Dev Library" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Dev Library </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav > <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /maps/documentation/local_extensions.css */ .version { text-align: right; } .code { color: #006000; font-family: "Courier", monospace; font-size: 100%; } .grid td { padding: 4px; border-collapse: collapse; border: 1px solid gray; } .header td { font-weight: bold; background: #EEEEEE; } .encodeBox { width: 550px; height: 40px; font-size: 14px; font-family: Courier; } .inputField { width: 160px; } #pointList { width: 300px; font-size: 12px; } #txtAddress { width: 14em; } .welcome { border: none; } .welcome td{ border: none; padding:0 10px 0 10px; } .number { background-color: #E5ECF9; text-align:center; vertical-align:middle; padding: 0 5px; } .leftpadding { padding: 0 0 0 10px; } .identifier { color: black; } /* List the contents inline to save vertical space */ .summarylist { margin-right: 4em; } .summarylist li { display: inline; margin: 0em; margin-right: 0.2em; line-height: 1.5em; } /* Self-links for Maps API for Flash */ a.self-link:link { color: #0000cc; text-decoration: none; } a.self-link:active { color: #0000cc; text-decoration: none; } a.self-link:visited { color: #0000cc; text-decoration: none; } /* Self-links for Maps API */ .self-link { cursor: pointer; } .blackbg { background: #333; } </style><style> /* Styles inlined from /maps/styles/common.css */ /* Enable Billing Modal Dialog Styles */ .devsite-enable-billing-dialog { left: 50%; margin-left: -274px; top: 25%; width: 548px; } .devsite-dialog-close { color: #747474; } #devsite-dialog-onload-billing-enabled { padding: 0; } #devsite-dialog-onload-billing-enabled .get-key-check { background: no-repeat #8cc152 center/72px url(/maps/images/lhimages/v2/check@2x.png); height: 150px; width: 100%; } #devsite-dialog-onload-billing-enabled .devsite-dialog-contents, #devsite-dialog-onload-billing-enabled .devsite-dialog-buttons { margin: 8px; } .devsite-enable-billing-dialog ol { list-style: none; margin: 40px 0; padding: 0; } .devsite-enable-billing-dialog li { counter-increment: step-counter; font-size: 14px; line-height: 16px; margin-bottom: 28px; } .devsite-enable-billing-dialog li::before { border-radius: 50%; border: 2px solid #ececec; color: #00bcd4; content: counter(step-counter); font-size: 14px; font-weight: 500; margin-right: 22px; padding: 6px 10px; } /* Style Wizard introduction */ .styleWizardIntroMain { border-radius: 3px; height: 500; width: 640; } .styleWizardIntroSixMapSamples { left: calc(50% - (500px / 2)); line-height: 1; position: relative; text-align: center; width: 500px; } .styleWizardIntroSample { border: 1px solid rgba(0,0,0,0.07); border-radius: 3px; box-shadow: 0 1px 12px 0 rgba(0,0,0,0.10); display: inline-block; height: 140px; margin: 10px; overflow: hidden; width: 140px; } .styleWizardIntroCaption { text-align: center; } /* TODO(cl/330601385) waiting on fix to be deployed */ .devsite-jsfiddle-hide { position:absolute; top: -99999px; left: -99999px; display:block; } /* Styles for /maps/solutions best practices content */ #bp-background { border-radius: 25px; background: #e8eaed; } #bp-heading span { float:left; margin-right:10px; position:relative; padding: 10px; } /* Use as <ul id="bp-bullet><li>{{ [bp|add]_bullet }}Text here... to have icons serve as the bullet symbol. */ #bp-bullet { list-style-type: none; text-indent: -20px; margin-left: 50px; } #platform-box { float: right; position: relative; width: 35%; padding: 20px 20px 0 20px; margin-left: 30px; margin-bottom: 30px; background-color: #ceead6; border-color: #e8eaed; border-style: solid; } #sb-box { float: right; position: relative; width: 25%; padding: 20px 20px 0 20px; margin-left: 30px; margin-bottom: 30px; background-color: #d2e3fc; border-color: #e8eaed; border-style: solid; } /** Table formatting used in the How to use, How to access, and Inputs and * outputs sections of the API overviews. You can leave the first column blank, * as shown in the How to access sections. For questions, contact @wildwood **/ .implementation-path tr td:first-of-type { background: var(--tenant-background-1) !important; max-width: 48px; vertical-align: top; } .implementation-path tr td:nth-of-type(2) { background: var(--tenant-background-1) !important; color: var(--tenant-primary-text-color); min-width: 200px; text-align: left; vertical-align: top; } .implementation-path tr td { color: var(--tenant-secondary-text-color); padding: 24px; } .implementation-path tr { border-top: var(--tenant-primary-border); vertical-align: top; } /** From docs-intro.css - This forms the bubbles with numbers in the above table. **/ .implementation-path .numbered { background: var(--tenant-numbered-row-background-color, #BDBDBD); border-radius: 50%; color: var(--tenant-inverted-text-color); display: inline-block; font-size: 20px; height: 36px; line-height: 36px; margin-right: 20px; text-align: center; vertical-align: top; width: 36px; position: relative; top:-8px; } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developers.google.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="" > Home </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/products" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Products </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/maps" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="Google Maps Platform" > Google Maps Platform </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developers.google.com/maps/documentation" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > Documentation </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <devsite-feedback position="header" project-name="Google Maps Platform" product-id="81777" bucket="" context="Maps API Product Family" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="header" class="nocontent" project-icon="https://developers.google.com/static/maps/images/maps-icon.svg" > <button> Send feedback </button> </devsite-feedback> <h1 class="devsite-page-title" tabindex="-1"> Google Maps Platform security guidance </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <div class="devsite-article-body clearfix "> <style> .center { text-align: center } </style> <p>For apps and projects that use the Google Maps Platform APIs and SDKs, you must use API keys or, if supported, Oauth, to prevent unauthorized use and charges. If you use API keys, for maximum security, restrict your API keys when you create them. These best practices show you how to restrict them.</p> <aside class="tip"><strong>Tip:</strong><span> If you want to use OAuth, look for the OAuth topic in your API documentation. For example, here is the OAuth topic for the <a href="https://developers.google.com/maps/documentation/address-validation/oauth_token" class="external">Address Validation API</a>.</span></aside> <div class="video-wrapper"> <devsite-video video-id="2_HZObVbe-g"></devsite-video> </div> <p>In addition to applying application and API key restrictions, follow any security practices that apply to specific Google Maps Platform products. For example, see the Maps JavaScript API below in <a href="#more-information">Recommended application and API restrictions</a>.</p> <p>If your API keys are already in use, review the recommendations below in <a href="#key-in-use">If you are restricting or regenerating an API key that&#39;s in use</a>.</p> <p>For more details about digital signatures, see the <a href="https://developers.google.com/maps/digital-signature">Digital Signature Guide</a>.</p> <h2 id="rec-best-practices" data-text="Recommended best practices" tabindex="-1">Recommended best practices</h2> <p>For increased security and to avoid being billed for unauthorized use, follow these API security best practices for all Google Maps Platform APIs, SDKs, or services:</p> <h4 id="recommended_for_all_api_key_uses" data-text="Recommended for all API key uses" tabindex="-1">Recommended for all API key uses</h4> <p><a href="#restricting-api-keys">Restrict your API keys</a></p> <p><a href="#separate-apikey">Use separate API keys for each app</a></p> <p><a href="#deleting-unused-apikeys">Delete unused API keys</a></p> <p><a href="#monitor-apikey">Check your API key usage</a></p> <p><a href="#regenerate-apikey">Be careful when regenerating API keys</a></p> <h4 id="additional_recommendations_for_websites_using_static_web_apis" data-text="Additional recommendations for websites using Static Web APIs" tabindex="-1">Additional recommendations for websites using Static Web APIs</h4> <p><a href="#protect_apps_using_static_web_apis">Protect apps using Static Web APIs</a></p> <h4 id="additional_recommendations_for_apps_using_web_services" data-text="Additional recommendations for apps using web services" tabindex="-1">Additional recommendations for apps using web services</h4> <p><a href="#desktop-ws-static-web">Protect apps using web services</a></p> <h4 id="additional_recommendations_for_ios_and_android_mobile_applications" data-text="Additional recommendations for iOS and Android mobile applications" tabindex="-1">Additional recommendations for iOS and Android mobile applications</h4> <p><a href="#mobile-ws-static-web">Protect mobile apps using web Service or Static Web APIs</a></p> <h4 id="key-in-use" data-text="If you are restricting or regenerating an API key that's in use" tabindex="-1">If you are restricting or regenerating an API key that's in use</h4> <ul> <li><p>Before you change the API key, <a href="#monitor-apikey">Check your API key usage</a> This step is especially important if you are adding restrictions after the key is in use.</p></li> <li><p>After you change the key, update all of your apps with the new API keys, as needed.</p></li> <li><p>If there is no active abuse of your API key, you can migrate your apps to multiple new API keys at your own pace, leaving the original API key untouched until you only see one type of traffic, to which you can then restrict the API keys with an application restriction. For further instructions, see <a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a>.</p> <p>Monitor the usage over time, and see when specific APIs, platform types, and domains have migrated off the old API key before you choose to restrict or delete the old key. For more information, see <a href="/maps/reporting-and-monitoring/reporting#google-maps-metrics" class="external">Reporting and monitoring</a> and <a href="https://cloud.google.com/monitoring/api/metrics_gcp#gcp-maps" class="external">Metrics</a>.</p></li> <li><p>If your API key has been compromised, you want to move more quickly to secure your API key and stop the abuse. In Android and iOS apps, keys aren&#39;t replaced until customers update their apps. Updating or replacing keys in JavaScript or web service apps is much more straightforward, but it still may require careful planning and fast work.</p> <p>For more information, see <a href="#unauth-key-use">Handle unauthorized use of an API key</a>.</p></li> </ul> <h2 id="restricting-api-keys" data-text="Restrict your API keys" tabindex="-1">Restrict your API keys</h2> <aside class="tip"><strong>Tip:</strong><span> If you are restricting an API key that&#39;s already in use, also see section <a href="#key-in-use">If you are restricting or regenerating an API key that&#39;s in use</a>.</span></aside> <p>Best practice is to always restrict your API keys with an application restriction and one or more API restrictions. For suggested restrictions by API, SDK, or JavaScript service, see <a href="#more-information">Recommended application and API restrictions</a> below.</p> <ul> <li><p><strong>Application restriction</strong> You can limit the use of an API key to specific platforms: Android or iOS applications, or specific websites for client-side applications, or specific IP addresses or CIDR subnets for server-side apps issuing web service REST API calls.</p> <p>You restrict a key by adding one or more application restrictions of the types you want to authorize, after which only requests originating from these sources are permitted.</p> <aside class="note"><strong>Note:</strong><span> If you place an application restriction on an API key, you cannot use it on other platforms. For example, if you restrict the API key to only Android apps, you cannot use it with iOS, web services, or JavaScript APIs.</span></aside></li> <li><p><strong>API restrictions</strong> You can restrict which Google Maps Platform APIs, SDKs, or services on which your API key can be used. API restrictions only allow requests to the APIs and SDKs you specify. For any given API key, you can specify as many API restrictions as needed. The list of available APIs includes all APIs enabled on a project.</p> <aside class="special"><strong>Important:</strong><span> Make sure the APIs or SDKs to which you&#39;re restricting your API key support the type of application restrictions you set. For example, if you configure the key with an iOS restriction, make sure your API you intend to use the key with is available on iOS.</span></aside></li> </ul> <h3 id="application-restriction" data-text="Set an application restriction for an API key" tabindex="-1">Set an application restriction for an API key</h3> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>Select the API key that you want to restrict.</p></li> <li><p>On the <strong>Edit API key page</strong>, under <strong>Key restrictions</strong>, select <strong>Set an application restriction</strong>.</p> <p><img src="/static/maps/images/editAPIkey.png" alt="Edit API key page"></p></li> <li><p>Select one of the restriction types and supply the requested information following the restriction list.</p> <table> <tr> <th style="width:25%">Restriction type</th> <th style="width:75%">Description</th> </tr> <tr> <td>Websites</td> <td>Specify one or more referrer websites. <ul> <li>The universally-supported referrer URI schemes are <code translate="no" dir="ltr">https</code> and <code translate="no" dir="ltr">http</code>.</li> <li>Always provide the <strong>full</strong> referrer URI, including the protocol scheme, hostname and optional port (e.g., <code translate="no" dir="ltr">https://google.com</code>).</li> <li>You can use wildcard characters to authorize all subdomains. For example, <code translate="no" dir="ltr">https://*.google.com</code> accepts all sites ending in <code translate="no" dir="ltr">.google.com</code>. Note that if you specify www.domain.com, it acts as a wildcard www.domain.com/*, and authorizes any subpath on that hostname.</li> <li>Be careful when authorizing full-path referrers, for example, <code translate="no" dir="ltr">https://google.com/some/path</code>, as, by default, most current browsers strip the path from cross-origin requests.</li> </ul> </td> </tr> <tr> <td>IP addresses</td> <td>Specify one or more IPv4 or IPv6 addresses, or subnets using CIDR notation. The IP addresses must match the source address the Google Maps Platform servers observe. If you use <a href="https://en.wikipedia.org/wiki/Network_address_translation" class="external">network address translation (NAT)</a>, this address typically corresponds to your machine's <em>public</em> IP address.</td> </tr> <tr> <td>Android apps</td> <td>Add the Android package name (from the <code translate="no" dir="ltr">AndroidManifest.xml</code> file) and the SHA-1 signing certificate fingerprint of each Android application you want to authorize. If you use <strong>Play App Signing</strong>, to fetch the signing certificate fingerprint, see <a href="https://developer.android.com/studio/publish/app-signing#api-providers">Working with API Providers</a>. If you manage your own signing key, see <a href="https://developers.google.com/android/guides/client-auth#self-signing_your_application">Self-signing your application</a> or refer to the instructions for your build environment.</td> </tr> <tr> <td>iOS apps</td> <td>Add the <a href="https://developer.apple.com/documentation/appstoreconnectapi/bundle_ids">bundle identifier</a> of each iOS application you want to authorize.</td> </tr> </table> <p>For recommendations for an application restriction, see <a href="#rec-app-restriction">Recommended application Restriction</a>.</p></li> <li><p>Select <strong>Save</strong>.</p></li> </ol> <h3 id="api-restriction" data-text="Set API restrictions for an API key" tabindex="-1">Set API restrictions for an API key</h3> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>Select the API key that you want to restrict.</p></li> <li><p>On the <strong>Edit API key page</strong>, under <strong>API restrictions</strong>:</p> <ul> <li><p>Select <strong>Restrict key</strong>.</p></li> <li><p>Open <strong>Select APIs</strong> and select the APIs or SDKs you want your application to access using the API key.</p> <p>If an API or SDK is not listed, you need to enable it. For details, see <a href="/maps/get-started#enable-api-sdk">To enable one or more APIs or SDKs</a>.</p></li> </ul> <p><img src="/static/maps/images/editAPIkey-restrict.png" alt="Restrict an API on the Edit API key page"></p></li> <li><p>Select <strong>Save</strong>.</p> <p>The restriction becomes part of the API key definition after this step. Be sure you provide the appropriate details and select <strong>Save</strong> to save your API key restrictions. For further information, see the <strong>Get an API Key</strong> guide in the documentation for the specific API or SDK you are interested in.</p></li> </ol> <p>For recommended API restrictions, see <a href="#rec-api-restriction">Recommended API Restrictions</a>.</p> <h2 id="monitor-apikey" data-text="Check your API key usage" tabindex="-1">Check your API key usage</h2> <p>If you&#39;re restricting API keys after they&#39;ve been created, or if you want to see what APIs are being used by a key so you can restrict them, you want to check your API key usage. These steps show you in which services and API methods an API key is being used. If you see any usage beyond Google Maps Platform services, investigate to determine if you need to add more restrictions to avoid unwanted use. You can use the Google Maps Platform Cloud Console Metrics explorer to help determine which API and application restrictions to apply to your API key:</p> <ul> <li><p><a href="#api-restrict-metrics">Determine the APIs that use your API key</a></p></li> <li><p><a href="#app-restrict-metrics">Choose the correct type of application restriction using the Metrics explorer</a></p></li> </ul> <aside class="tip"><strong>Tip:</strong><span> If you don&#39;t see all chart labels when you open the Metrics explorer, see these topics in the Google Maps Platform Cloud Console Metrics explorer help: <a href="https://cloud.google.com/monitoring/charts/working-with-legends#metrics-explorer" class="external">Toggling the chart&#39;s full legends</a> and <a href="https://cloud.google.com/monitoring/charts/working-with-legends#legend-columns" class="external">Show all legend columns</a>.</span></aside> <h3 id="api-restrict-metrics" data-text="Determine the APIs that use your API key" tabindex="-1">Determine the APIs that use your API key</h3> <p>The following metrics reports allow you to determine which APIs are using your API keys. Use these reports to do the following:</p> <ul> <li>See how your API keys are used</li> <li>Spot unexpected usage</li> <li>Help verify if an unused key is safe to delete. For information about deleting an API key, see <a href="/maps/deleting-unused-apikeys">Delete unused API keys</a>.</li> </ul> <p>When applying API restrictions, use these reports to create a list of APIs to authorize, or to validate automatically-generated API key restriction recommendations. For more information about recommended restrictions, see <a href="#apply-rec">Apply recommended restrictions</a>. For more information about using the Metrics explorer, see <a href="https://console.cloud.google.com/monitoring/charts/metrics-explorer" class="external">Create charts with Metrics explorer</a>.</p> <ol> <li><p>Go to the Google Cloud Console&#39;s <a href="https://console.cloud.google.com/monitoring/metrics-explorer" class="external">Metrics explorer</a>.</p></li> <li><p>Log in and select the project for the API keys you want to check.</p></li> <li><p>Go to the Metrics explorer page for your type of API:</p> <ul> <li><p><strong>For API keys using any API <em>except</em> the Maps Embed API</strong>: Go to <a href="https://console.cloud.google.com/monitoring/metrics-explorer;duration=P30D?pageState=%7B%22xyChart%22:%7B%22constantLines%22:%5B%5D,%22dataSets%22:%5B%7B%22plotType%22:%22LINE%22,%22targetAxis%22:%22Y1%22,%22timeSeriesFilter%22:%7B%22aggregations%22:%5B%7B%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22groupByFields%22:%5B%5D,%22perSeriesAligner%22:%22ALIGN_RATE%22%7D,%7B%22crossSeriesReducer%22:%22REDUCE_MEAN%22,%22groupByFields%22:%5B%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D,%22perSeriesAligner%22:%22ALIGN_MEAN%22%7D%5D,%22apiSource%22:%22DEFAULT_CLOUD%22,%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22filter%22:%22metric.type%3D%5C%22serviceruntime.googleapis.com%2Fapi%2Frequest_count%5C%22%20resource.type%3D%5C%22consumed_api%5C%22%20metric.label.%5C%22response_code%5C%22!%3D%5C%22403%5C%22%20resource.label.%5C%22credential_id%5C%22%3Dmonitoring.regex.full_match(%5C%22apikey:.*%5C%22)%22,%22groupByFields%22:%5B%5D,%22minAlignmentPeriod%22:%2260s%22,%22perSeriesAligner%22:%22ALIGN_RATE%22,%22secondaryCrossSeriesReducer%22:%22REDUCE_MEAN%22,%22secondaryGroupByFields%22:%5B%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D%7D%7D%5D,%22options%22:%7B%22mode%22:%22COLOR%22%7D,%22y1Axis%22:%7B%22label%22:%22%22,%22scale%22:%22LINEAR%22%7D%7D%7D&amp;jsmode=O&amp;mods=perf_metrics" class="external">Metrics explorer</a> page.</p></li> <li><p><strong>For API keys using Maps Embed API</strong>: Go to <a href="https://console.cloud.google.com/monitoring/metrics-explorer;duration=P30D?pageState=%7B%22xyChart%22:%7B%22constantLines%22:%5B%5D,%22dataSets%22:%5B%7B%22plotType%22:%22LINE%22,%22targetAxis%22:%22Y1%22,%22timeSeriesFilter%22:%7B%22aggregations%22:%5B%7B%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22groupByFields%22:%5B%5D,%22perSeriesAligner%22:%22ALIGN_RATE%22%7D,%7B%22crossSeriesReducer%22:%22REDUCE_MEAN%22,%22groupByFields%22:%5B%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D,%22perSeriesAligner%22:%22ALIGN_MEAN%22%7D%5D,%22apiSource%22:%22DEFAULT_CLOUD%22,%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22filter%22:%22metric.type%3D%5C%22maps.googleapis.com%2Fservice%2Frequest_count%5C%22%20resource.type%3D%5C%22maps.googleapis.com%2FApi%5C%22%20metric.label.%5C%22response_code%5C%22!%3D%5C%22403%5C%22%20resource.label.%5C%22credential_id%5C%22%3Dmonitoring.regex.full_match(%5C%22apikey:.*%5C%22)%20resource.label.%5C%22service%5C%22%3D%5C%22maps-embed-backend.googleapis.com%5C%22%22,%22groupByFields%22:%5B%5D,%22minAlignmentPeriod%22:%2260s%22,%22perSeriesAligner%22:%22ALIGN_RATE%22,%22secondaryCrossSeriesReducer%22:%22REDUCE_MEAN%22,%22secondaryGroupByFields%22:%5B%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D%7D%7D%5D,%22options%22:%7B%22mode%22:%22COLOR%22%7D,%22y1Axis%22:%7B%22label%22:%22%22,%22scale%22:%22LINEAR%22%7D%7D%7D&amp;jsmode=O&amp;mods=perf_metrics" class="external">Metrics Explorer</a>.</p></li> </ul></li> <li><p>Inspect each API key:</p> <ol> <li><p>Select <strong>ADD FILTER</strong>.</p></li> <li><p>Select the <em>label</em> <code translate="no" dir="ltr">credential_id</code>.</p></li> <li><p>Select the <em>value</em> corresponding to the key you want to inspect.</p></li> <li><p>Note which APIs this API key is being used for, and confirm the use is expected.</p></li> <li><p>Once done, select <strong>Remove filter</strong> <span class="material-icons" aria-hidden="true" translate="no">delete</span> at the end of the active filter line to delete the extra filter.</p></li> </ol></li> <li><p>Repeat for any remaining keys.</p></li> <li><p>Restrict your API keys to only the APIs that are being used.</p></li> <li><p>If you spot unauthorized use, see <a href="#unauth-key-use">Handle unauthorized use of an API key</a>.</p></li> </ol> <h3 id="app-restrict-metrics" data-text="Choose the correct type of application restriction using the Metrics explorer" tabindex="-1">Choose the correct type of application restriction using the Metrics explorer</h3> <p>After you have verified and taken any needed actions to ensure your API key is only used for the Google Maps Platform services it is using, also ensure the API key has the correct application restrictions.</p> <p>If your API key has recommended API key restrictions, apply them. For more information, see <a href="#apply-rec">Apply recommended API key restrictions</a>.</p> <p>If your API key doesn&#39;t have restriction recommendations, determine the type of application restriction to apply, based on the reported <code translate="no" dir="ltr">platform_type</code> using the Metrics explorer:</p> <ol> <li><p>Go to the Google Cloud Console&#39;s <a href="https://console.cloud.google.com/monitoring/metrics-explorer" class="external">Metrics explorer</a>.</p></li> <li><p>Log in and select the project for the APIs you want to check.</p></li> <li><p>Go to this Metrics explorer page: <a href="https://console.cloud.google.com/monitoring/metrics-explorer;duration=P30D?pageState=%7B%22xyChart%22:%7B%22constantLines%22:%5B%5D,%22dataSets%22:%5B%7B%22plotType%22:%22LINE%22,%22targetAxis%22:%22Y1%22,%22timeSeriesFilter%22:%7B%22aggregations%22:%5B%7B%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22groupByFields%22:%5B%5D,%22perSeriesAligner%22:%22ALIGN_RATE%22%7D,%7B%22crossSeriesReducer%22:%22REDUCE_MEAN%22,%22groupByFields%22:%5B%22metric.label.%5C%22platform_type%5C%22%22,%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D,%22perSeriesAligner%22:%22ALIGN_MEAN%22%7D%5D,%22apiSource%22:%22DEFAULT_CLOUD%22,%22crossSeriesReducer%22:%22REDUCE_NONE%22,%22filter%22:%22metric.type%3D%5C%22maps.googleapis.com%2Fservice%2Frequest_count%5C%22%20resource.type%3D%5C%22maps.googleapis.com%2FApi%5C%22%20metric.label.%5C%22response_code%5C%22!%3D%5C%22403%5C%22%20resource.label.%5C%22credential_id%5C%22%3Dmonitoring.regex.full_match(%5C%22apikey:.*%5C%22)%22,%22groupByFields%22:%5B%5D,%22minAlignmentPeriod%22:%2260s%22,%22perSeriesAligner%22:%22ALIGN_RATE%22,%22secondaryCrossSeriesReducer%22:%22REDUCE_MEAN%22,%22secondaryGroupByFields%22:%5B%22metric.label.%5C%22platform_type%5C%22%22,%22resource.label.%5C%22service%5C%22%22,%22resource.label.%5C%22method%5C%22%22,%22resource.label.%5C%22credential_id%5C%22%22%5D%7D%7D%5D,%22options%22:%7B%22mode%22:%22COLOR%22%7D,%22y1Axis%22:%7B%22label%22:%22%22,%22scale%22:%22LINEAR%22%7D%7D%7D&amp;jsmode=O&amp;mods=perf_metrics" class="external">Metrics explorer</a>.</p></li> <li><p>Inspect each API key:</p> <ol> <li><p>Select <strong>ADD FILTER</strong>.</p></li> <li><p>Select the <em>label</em> <code translate="no" dir="ltr">credential_id</code>.</p></li> <li><p>Select the <em>value</em> corresponding to the key you want to inspect.</p></li> <li><p>Once done, select <strong>Remove filter</strong> <span class="material-icons" aria-hidden="true" translate="no">delete</span> at the end of the active filter line to delete the extra filter.</p></li> </ol></li> <li><p>Repeat for any remaining keys.</p></li> <li><p>Once you have the platform type for your API keys, apply the application restriction for that <code translate="no" dir="ltr">platform_type</code>:</p> <dl> <dt><code translate="no" dir="ltr">PLATFORM_TYPE_JS</code></dt> <dd>Apply Website restrictions on the key.</dd> <dt><code translate="no" dir="ltr">PLATFORM_TYPE_ANDROID</code></dt> <dd>Apply Android application restrictions on the key.</dd> <dt><code translate="no" dir="ltr">PLATFORM_TYPE_IOS</code></dt> <dd>Apply iOS application restrictions on the key.</dd> <dt><code translate="no" dir="ltr">PLATFORM_TYPE_WEBSERVICE</code></dt> <dd>You <em>may</em> have to rely IP address restrictions on the key, to properly restrict it. For further options for Maps Static API and Street View Static API, see <a href="#protect_apps_using_static_web_apis">Protect apps using Static Web APIs</a>. For further instructions for Maps Embed API, see <a href="#embed-api-rec">Websites with the Maps Embed API</a>.</dd> <dt>My API key is using multiple platform types</dt> <dd>Your traffic can&#39;t be properly secured with just a single API key. You need to migrate to multiple API keys. For more information, see <a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a>.</dd> </dl></li> </ol> <h2 id="separate-apikey" data-text="Use separate API keys for each app" tabindex="-1">Use separate API keys for each app</h2> <p>This practice limits the scope of each key. If one API key is compromised, you can delete or regenerate the impacted key without needing to update your other API keys. You can create up to 300 API keys per project. For more information, see <a href="https://cloud.google.com/docs/authentication/api-keys#limits" class="external">Limits on API keys</a>.</p> <p>While one API key per application is ideal for security purposes, you can use restricted keys on multiple apps as long as they use the same type of application restriction.</p> <h2 id="apply-rec" data-text="Apply recommended API key restrictions" tabindex="-1">Apply recommended API key restrictions</h2> <aside class="tip"><strong>Tip:</strong><span> To receive important updates about these automated API key restriction recommendations, star the public issue <a href="https://issuetracker.google.com/286524779">286524779</a>.</span></aside> <p>For some project owners and editors, the Google Cloud Console suggests specific API key restrictions to unrestricted API keys based on their Google Maps Platform usage and activity.</p> <aside class="caution"><strong>Caution:</strong><span> If also use your API key on services other than Google Maps Platform (such as Cloud), you should only apply restrictions after a thorough <strong>manual</strong> review.</span></aside> <p>If available, recommendations appear as pre-filled options on the <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p> <aside class="special"><strong>Important:</strong><span> The list of recommendations <em>may</em> be incomplete. Make sure to double-check your API key usage following the Google Cloud Console instructions, and <a href="#monitor-apikey">Check your API key usage</a> <strong>before</strong> you apply the recommendations.</span></aside> <h3 id="reasons_you_may_not_see_a_recommendation_or_an_incomplete_one" data-text="Reasons you may not see a recommendation, or an incomplete one" tabindex="-1">Reasons you may <em>not</em> see a recommendation, or an incomplete one</h3> <ul> <li><p>You are (also) using the API key on other than Google Maps Platform services. If you see usage on other services, <strong>don&#39;t</strong> apply the recommendation without <em>first</em> doing the following:</p> <ol> <li><p>Verify that the API usage you see in the Google Cloud Console Metrics explorer is legitimate.</p></li> <li><p>Manually <em>add</em> missing services to the list of APIs to be authorized.</p></li> <li><p>Manually <em>add</em> any missing application restrictions for the services added to the API list. If your other added would require a different <em>type</em> of application restrictions, see <a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a>.</p></li> </ol></li> <li><p>Your API key is not used in client-side SDKs or APIs.</p></li> <li><p>You use the API key in a low-volume app or website that has not seen usage over the last 60 days.</p></li> <li><p>You have created a new key very recently, or you have very recently deployed an existing key in a new app. If this is the case, just wait a few more days to allow the recommendations to update.</p></li> <li><p>You are using the API key in multiple applications that would require conflicting types of application restrictions, <em>or</em> you are using the same API key in too many different apps or websites. In either case, as a best practice, you should migrate to multiple keys. For more details, see <a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a>.</p></li> </ul> <h3 id="reasons_you_might_see_recommendations_that_are_not_visible_in_the_charts" data-text="Reasons you might see recommendations that are not visible in the charts" tabindex="-1">Reasons you might see recommendations that are <em>not</em> visible in the charts</h3> <ul> <li><p>Your app or website sent only very short traffic bursts. In this case, switch from a <strong>CHART</strong> view to display a <strong>TABLE</strong> or <strong>BOTH</strong>, as the usage is still visible in the legend. For more information, see <a href="https://cloud.google.com/monitoring/charts/working-with-legends#metrics-explorer" class="external">Toggling the chart&#39;s full legends</a>.</p></li> <li><p>Your traffic is from the Maps Embed API. For instructions, see <a href="#api-restrict-metrics">Determine the APIs that use your API key</a>.</p></li> <li><p>The traffic from the app or website is outside the date range available in the Google Cloud Console Metrics explorer.</p></li> </ul> <h3 id="to_apply_recommended_restrictions" data-text="To apply recommended restrictions" tabindex="-1">To apply recommended restrictions</h3> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>If available, select <strong>Apply recommended restrictions</strong>.</p> <p><img src="/static/maps/images/apply-rec.png" alt="Apply recommended restrictions"></p> <p><strong>Note</strong>: If you don&#39;t see any recommended restrictions, see <a href="#api-restriction">Set API restrictions for an API key</a> to set appropriate restrictions.</p></li> <li><p>Select <strong>Check API usage</strong> to verify which services the API key is being used on. If you see other than Google Maps Platform services, <strong>pause</strong> to manually review the recommendation steps above. See the troubleshooting steps at the beginning of section <a href="#apply-rec">Apply recommended API key restrictions</a>.</p></li> <li><p>Double-check that the pre-filled restrictions match the websites and apps where you expect to use your API key.</p> <p><strong>Best Practice</strong>: Document and remove any application or API restrictions that are not affiliated with your services. If something breaks due to an unexpected dependency, then you can add the required apps or APIs back in.</p> <ul> <li><p>If you recognize that an app, website or API is clearly missing from your recommendation, add it manually or wait a couple of days to allow the recommendation to update.</p></li> <li><p>If you need further help with your suggested recommendation, <a href="/maps/support#contact-maps-support">contact support</a>.</p></li> </ul></li> <li><p>Select <strong>Apply</strong>.</p></li> </ol> <h3 id="what_to_do_if_your_application_gets_rejected_after_applying_a_recommendation" data-text="What to do if your application gets rejected after applying a recommendation" tabindex="-1">What to do if your application gets rejected after applying a recommendation</h3> <p>If you notice that an app or website gets rejected after applying a restriction, look for the application restriction you need to add in the API response error message.</p> <p>For client-side SDKs, see below:</p> <ul> <li><strong>Maps JavaScript API apps:</strong> see the browser debug console</li> <li><strong>Android apps:</strong> use <a href="https://developer.android.com/tools/adb" class="external">Android Debug Bridge (adb)</a> or <a href="https://developer.android.com/studio/debug/logcat" class="external">Logcat</a> </li> <li><strong>iOS apps:</strong> see <a href="https://developer.apple.com/documentation/os/logging/viewing_log_messages" class="external">Viewing Log Messages</a> </li> </ul> <p>To check your required API restrictions, see <a href="#api-restrict-metrics">Determine the APIs that use your API key</a>.</p> <p>If you are unable to determine which restrictions to apply:</p> <ol> <li>Document the current restrictions for future reference.</li> <li>Remove them temporarily while you investigate the issue. You can check your usage over time using the steps in <a href="#monitor-apikey">Check your API key usage</a>.</li> <li>If needed, <a href="/maps/support#contact-maps-support">contact support</a>.</li> </ol> <h2 id="deleting-unused-apikeys" data-text="Delete unused API keys" tabindex="-1">Delete unused API keys</h2> <aside class="special"><strong>Important:</strong><span> <a href="#monitor-apikey">Check your API key usage</a> before deleting it.</span></aside> <p>Before you delete an API key, make sure that it is not used in production. If there is no successful traffic, the key is likely safe to delete. For more information, see <a href="#monitor-apikey">Check your API key usage</a>.</p> <p>To delete an API key:</p> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>Select the API key you want to delete.</p></li> <li><p>Select the <strong>Delete</strong> button near the top of the page.</p></li> <li><p>On the <strong>Delete credential</strong> page, select <strong>Delete</strong>.</p> <p>Deleting an API key takes a few minutes to propagate. After propagation completes, any traffic using the deleted API key is rejected.</p></li> </ol> <aside class="special"><strong>Important:</strong><span> If you have deleted a key that is still used in production and need to recover it, see <a href="https://cloud.google.com/sdk/gcloud/reference/beta/services/api-keys/undelete" class="external">gcloud beta services api-keys undelete</a>.</span></aside> <h2 id="regenerate-apikey" data-text="Be careful when regenerating your API keys" tabindex="-1">Be careful when regenerating your API keys</h2> <aside class="special"><strong>Important:</strong><span> <a href="#monitor-apikey">Check your API key usage</a> before regenerating it.</span></aside> <p>Regenerating an API key creates a new key that has all the old key&#39;s restrictions. This process also starts a 24-hour timer after which the old API key is deleted.</p> <p>During this time window, both the old and new key are accepted, giving you a chance to migrate your apps to use the new key. However, after this time period elapses, any apps still using the old API key stop working.</p> <aside class="caution"><strong>Caution:</strong><span> Only regenerate an API key if you absolutely must to avoid unauthorized use. This process can shut down legitimate traffic and prevent your apps from functioning properly.</span></aside> <p><strong>Before regenerating an API key</strong>:</p> <ul> <li><p>First try to restrict your API keys as described in <a href="#restrict-keys">Restrict your API keys</a>.</p></li> <li><p>If restricting your API key is not possible due to conflicting application restriction types, migrate to multiple new (restricted) keys as described in <a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a>. Migrating lets you control the migration and roll out timeline to the new API keys.</p></li> </ul> <p><strong>If the preceding suggestions aren&#39;t possible</strong>, and you must regenerate your API key to prevent unauthorized use, then follow these steps:</p> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>Open the API key you want to regenerate.</p></li> <li><p>At the top of the page, select <strong>Regenerate key</strong>.</p></li> <li><p>Select <strong>Replace key</strong>.</p></li> </ol> <p><strong>Note</strong>: If necessary, you can roll back any key that has been regenerated to its previous version. There are no time limits for roll-back.</p> <h3 id="to_roll_back_a_regenerated_key" data-text="To roll back a regenerated key" tabindex="-1">To roll back a regenerated key</h3> <ol> <li><p>Open the Google Cloud Console <a href="https://console.cloud.google.com/project/_/google/maps-apis/credentials?utm_source=Docs_Credentials" class="external"><strong>Google Maps Platform Credentials</strong></a> page.</p></li> <li><p>Open the API key you want to roll back.</p></li> <li><p>Select <strong>Revert to previous key</strong>.</p></li> <li><p>In the <strong>Revert</strong> dialog, select <strong>Revert key</strong>.</p></li> </ol> <p>Upon rolling back, the former &quot;new&quot; version of the key becomes the previous version, and a new 24-hour deactivation timer is set for it. It is possible to revert between these two key values until you regenerate the key again.</p> <p>If you regenerate the key again, it overwrites the old inactive key value.</p> <h2 id="migrating-to-multiple-api-keys" data-text="Migrate to multiple API keys" tabindex="-1">Migrate to multiple API keys</h2> <p>To migrate from using one API key for multiple apps to a single unique API key for each app, do the following:</p> <ol> <li><p><strong>Identify which apps need new keys</strong>:</p> <ul> <li>Web apps are the easiest to update, since you control all of the code. Plan to update all of your web-based apps&#39; keys.</li> <li>Mobile apps are much harder, since your customers must update their apps before the new keys can be used.</li> </ul></li> <li><p><strong>Create and restrict the new keys</strong>: Add both an application restriction and at least one API restriction. For more information, see <a href="#rec-best-practices">Recommended best practices</a>.</p></li> <li><p><strong>Add the new keys to your apps</strong>: For mobile apps, this process may take months until all of your users update to the latest app with the new API key.</p></li> </ol> <aside class="special"><strong>Important:</strong><span> While you can secure API keys after they&#39;re created and in use, in mobile apps (Android and iOS), keys aren&#39;t replaced until customers update their apps. Updating or replacing keys in JavaScript or web service apps are much more straightforward, but it still may require careful planning and fast work. For more information, see <a href="#key-in-use">If you are restricting or regenerating an API key that&#39;s in use</a>.</span></aside> <h2 id="protect_apps_using_static_web_apis" data-text="Protect apps using Static Web APIs" tabindex="-1">Protect apps using Static Web APIs</h2> <p>Static Web APIs, such as the Maps Static API and Street View Static API, are similar to web service API calls.</p> <p>You call both using a simple HTTPS REST API, and you typically generate the API request URL on the server. However, instead of returning a JSON response, Static Web APIs generate an image that you can embed in generated HTML code. More importantly, it is generally the end-user <em>client</em>, not the server, that calls the Google Maps Platform service.</p> <aside class="tip"><strong>Tip:</strong><span> For more information about securing your Static Web APIs, see the blog post, <a href="https://mapsplatform.google.com/resources/blog/google-maps-platform-best-practices-securing-api-keys-when-using-static-maps-and-street-view-apis" class="external">Securing API keys when using Static Maps and Street View APIs</a>.</span></aside> <h3 id="dig-sig" data-text="Use a digital signature" tabindex="-1">Use a digital signature</h3> <p>As a best practice, always use digital signatures in addition to an API key. Also, review how many unsigned requests you want to allow per day and <a href="https://youtu.be/A8bsgHUYsq8" class="external">adjust your unsigned request quotas</a> accordingly.</p> <p>For more details about digital signatures, see the <a href="https://developers.google.com/maps/digital-signature" class="external">Digital Signature Guide</a>.</p> <h3 id="protect_your_signing_secret" data-text="Protect your signing secret" tabindex="-1">Protect your signing secret</h3> <p>To protect Static Web APIs, don&#39;t embed your API signing secrets directly in code or in the source tree, or expose them in client-side applications. Follow these best practices for protecting your signing secrets:</p> <ul> <li><p><strong>Sign your requests server-side, not on the client</strong>. If you do the signing client-side in JavaScript, you expose it to anyone visiting your site. Therefore, for dynamically-generated images, always generate your signed Maps Static API and Street View Static API request URLs server-side when serving the web page. For static web content, you can use the <strong>Sign a URL now</strong> widget on the Cloud Console Google Maps Platform <strong>Credentials</strong> page.</p></li> <li><p><strong>Store signing secrets outside of your application&#39;s source code and source tree</strong>. If you put your signing secrets or any other private information in environment variables or include files that are stored separately and then share your code, then signing secrets are not included in the shared files. If you store signing secrets or any other private information in files, keep the files outside your application&#39;s source tree to keep your signing secrets out of your source code control system. This precaution is particularly important if you use a public source code management system, such as GitHub.</p></li> </ul> <h2 id="desktop-ws-static-web" data-text="Protect your API key in apps using web services" tabindex="-1">Protect your API key in apps using web services</h2> <p><strong id="no-apikey-in-code">Store API keys outside of your application&#39;s source code or source tree</strong>. If you put your API keys or any other information in environment variables or include files that are stored separately and then share your code, the API keys are not included in the shared files. This is <em>particularly</em> important if you use a public source code management system, such as GitHub.</p> <h2 id="mobile-ws-static-web" data-text="Protect your API key and signing secret in mobile apps using web services or Static Web APIs" tabindex="-1">Protect your API key and signing secret in mobile apps using web services or Static Web APIs</h2> <p id="proxy-server">To protect mobile apps, use a secure keystore or secure proxy server:</p> <ul> <li><p><strong>Store the API key or signing secret in a secure keystore</strong>. This step makes it harder to scrape API keys and other private data directly from the application.</p></li> <li><p><strong>Use a secure proxy server</strong>. The proxy server provides a solid source for interacting with the appropriate Google Maps Platform API. For more information about using a proxy server, see <a href="https://developers.google.com/gdata/articles/proxy_setup" class="external">Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries</a>.</p> <ul> <li><p>Construct your Google Maps Platform requests on the proxy server. <strong>Don&#39;t</strong> allow clients to relay arbitrary API calls via the proxy.</p></li> <li><p>Post-process the Google Maps Platform responses on your proxy server. Filter out data that the client doesn&#39;t need.</p></li> </ul> <aside class="special"><strong>Important:</strong><span> Always require authentication for client access to the proxy servers.</span></aside></li> </ul> <h2 id="unauth-key-use" data-text="Handle unauthorized use of an API key" tabindex="-1">Handle unauthorized use of an API key</h2> <p>If you detect use of your API key that is unauthorized, do the following to address the problem:</p> <ol> <li><p><strong>Restrict your keys</strong>: If you&#39;ve used the same key in multiple apps, migrate to multiple API keys, and use separate API keys for each app. For more details, see:</p> <ul> <li><a href="#restricting-api-keys">Restrict your API keys</a></li> <li><a href="#migrating-to-multiple-api-keys">Migrate to multiple API keys</a></li> <li><a href="#separate-apikey">Use separate API keys for each app</a></li> </ul></li> <li><p><strong>Only</strong> regenerate keys if you are unable to restrict them. Read through section <a href="#regenerate-apikey">Be careful when regenerating API keys</a> <em>before</em> proceeding.</p></li> <li><p>If you are still having issues or need help, <a href="/maps/support#contact-maps-support">contact support</a>.</p></li> </ol> <h2 id="more-information" data-text="Recommended application and API restrictions" tabindex="-1">Recommended application and API restrictions</h2> <p>The following sections suggest appropriate application and API restrictions for each Google Maps Platform API, SDK or service.</p> <h3 id="rec-api-restriction" data-text="Recommended API Restrictions" tabindex="-1">Recommended API Restrictions</h3> <p>The following guidelines for API restrictions apply to the entire Google Maps Platform:</p> <ul> <li><p>Restrict your API key to only the APIs you are using it for, with the following exceptions:</p> <ul> <li><p>If your app uses the Places SDK for Android or Places SDK for iOS, authorize the Places API.</p></li> <li><p>If your app uses Maps JavaScript API, <em>always</em> authorize it on your key.</p></li> <li><p>If you also use any of the following Maps JavaScript API services, you should in addition also authorize the following APIs:</p></li> </ul> <table> <thead> <tr> <th>Service</th> <th>API restriction</th> </tr> </thead> <tbody> <tr> <td>Directions Service, Maps JavaScript API</td> <td>Directions API</td> </tr> <tr> <td>Distance Matrix Service, Maps JavaScript API</td> <td>Distance Matrix API</td> </tr> <tr> <td>Elevation Service, Maps JavaScript API</td> <td>Elevation API</td> </tr> <tr> <td>Geocoding Service, Maps JavaScript API</td> <td>Geocoding API</td> </tr> <tr> <td>Places Library, Maps JavaScript API</td> <td>Places API</td> </tr> </tbody> </table></li> </ul> <p>Some examples:</p> <ul> <li><p>You are using the Maps SDK for Android and Places SDK for Android, so you include the Maps SDK for Android and Places API as API restrictions.</p></li> <li><p>Your website uses the Maps JavaScript API Elevation Service and the Maps Static API, so you add API restrictions for all of the following APIs:</p> <ul> <li>Maps JavaScript API</li> <li>Elevation API</li> <li>Maps Static API</li> </ul></li> </ul> <h3 id="rec-app-restriction" data-text="Recommended application Restriction" tabindex="-1">Recommended application Restriction</h3> <aside class="special"><strong>Important:</strong><span> Restricting your API keys helps to minimize overages and billing from unauthorized use, especially when a test environment may be or is publicly visible, or when an application is ready to be used in a production environment.</span></aside> <h4 id="referrer-best-practices-table" data-text="Websites with Maps JavaScript API or Static Web API" tabindex="-1">Websites with Maps JavaScript API or Static Web API</h4> <p>For websites using Maps JavaScript services or Static Web APIs, use the <code translate="no" dir="ltr">Websites</code> application restriction.</p> <p>Use for websites using these JavaScript services and APIs:</p> <table> <tr> <td> <ul> <li><a href="/maps/documentation/javascript/directions">Directions Service</a></li> <li><a href="/maps/documentation/javascript/distancematrix">Distance Matrix Service</a></li> <li><a href="/maps/documentation/javascript/elevation">Elevation Service</a></li> <li><a href="/maps/documentation/javascript/geocoding">Geocoding Service</a></li> </ul> </td> <td> <ul> <li><a href="/maps/documentation/javascript">Maps JavaScript API</a><sup><a href="#api-key-table-sup-1">1</a></sup></li> <li><a href="/maps/documentation/javascript/places">Places Library</a></li> <li><a href="/maps/documentation/static-maps">Maps Static API</a><sup><a href="#api-key-table-sup-2">2</a></sup></li> <li><a href="/maps/documentation/streetview">Street View Static API</a><sup><a href="#api-key-table-sup-2">2</a></sup></li> </ul> </td> </tr> </table> <p><sup id="api-key-table-sup-1">1</sup> For mobile applications, consider using the native <a href="/maps/maps/documentation/android-api">Maps SDK for Android</a> and <a href="/maps/documentation/ios-sdk">Maps SDK for iOS</a>.</p> <p><sup id="api-key-table-sup-2">2</sup> See also <a href="#mobile-ws-static-web">Protect mobile apps using web service or Static Web APIs</a>.</p> <h4 id="embed-api-rec" data-text="Websites with the Maps Embed API" tabindex="-1">Websites with the Maps Embed API</h4> <p>While using the Maps Embed API is free of charge, you should still restrict any used API key to prevent abuse on <em>other</em> services.</p> <p><strong>Best practice</strong>: Create a separate API key for Maps Embed API use, and restrict this key to <em>only</em> the Maps Embed API. This restriction sufficiently secures the key, preventing its unauthorized use on any other Google service.</p> <p>If you are unable to separate your Maps Embed API usage to a separate API key, secure your key using the <code translate="no" dir="ltr">Websites</code> application restriction.</p> <h3 id="ip-address-best-practices-table" data-text="Apps and servers using web services" tabindex="-1">Apps and servers using web services</h3> <p>For apps and servers using web services, use the <code translate="no" dir="ltr">IP addresses</code> application restriction.</p> <aside class="special"><strong>Important:</strong><span> IP restrictions might be impractical in some scenarios, such as in mobile applications and cloud environments that rely on dynamic IP addresses. When using <a href="/maps/apis-by-platform#web_service_apis">Maps web service </a> in these scenarios, secure your apps using a <a href="#proxy-server">proxy server</a>.</span></aside> <p>Use for apps and servers using these APIs: <table> <tr> <td> <ul> <li><a href="/maps/documentation/address-validation">Address Validation API</a></li> <li><a href="/maps/documentation/aerial-view">Aerial View API</a></li> <li><a href="/maps/documentation/air-quality">Air Quality API</a></li> <li><a href="/maps/documentation/directions">Directions API</a></li> <li><a href="/maps/documentation/distance-matrix">Distance Matrix API</a></li> <li><a href="/maps/documentation/elevation">Elevation API</a></li> <li><a href="/maps/documentation/geocoding">Geocoding API</a></li> <li><a href="/maps/documentation/geolocation">Geolocation API</a></li> </ul> </td> <td> <ul> <li><a href="/maps/documentation/tile">Map Tiles API</a></li> <li><a href="/maps/documentation/datasets">Maps Datasets API</a></li> <li><a href="/maps/documentation/places/web-service">Places API</a> <sup><a href="#api-key-table-sup-3">3</a></sup></li> <li><a href="/maps/documentation/roads">Roads API</a></li> <li><a href="/maps/documentation/routes">Routes API</a></li> <li><a href="/maps/documentation/pollen">Pollen API</a></li> <li><a href="/maps/documentation/solar">Solar API</a></li> <li><a href="/maps/documentation/timezone">Time Zone API</a></li> </ul> </td> </tr> </table></p> <p><sup id="api-key-table-sup-3">3</sup> For mobile applications, consider using the native <a href="/maps/documentation/places/android-sdk">Places SDK for Android</a> and <a href="/maps/documentation/places/ios-sdk">Places SDK for iOS</a>.</p> <h3 id="android-best-practices-table" data-text="Android apps" tabindex="-1">Android apps</h3> <p>For apps on Android, use the <code translate="no" dir="ltr">Android apps</code> application restriction. Use for apps and servers using these SDKs:</p> <ul> <li><a href="/maps/documentation/android-api">Maps SDK for Android</a></li> <li><a href="/maps/documentation/places/android-sdk">Places SDK for Android</a></li> <li><a href="/maps/documentation/navigation/android-sdk">Navigation SDK for Android</a></li> </ul> <p>In addition, prevent accidentally checking API keys into version control by using the <a href="/maps/documentation/android-sdk/secrets-gradle-plugin">Secrets Gradle Plugin</a> to inject secrets from a local file rather than storing them in the Android Manifest.</p> <h3 id="ios-best-practices-table" data-text="iOS apps" tabindex="-1">iOS apps</h3> <p>For apps on iOS, use the <code translate="no" dir="ltr">iOS apps</code> application restriction. Use for apps and servers using these SDKs: <ul> <li><a href="/maps/documentation/ios-sdk">Maps SDK for iOS</a></li> <li><a href="/places/ios-sdk">Places SDK for iOS</a></li> <li><a href="/maps/documentation/navigation/ios-sdk">Navigation SDK for iOS</a></li> </ul></p> <h2 id="related_information" data-text="Related Information" tabindex="-1">Related Information</h2> <ul> <li><a href="https://www.youtube.com/watch?v=A8bsgHUYsq8" class="external">Optimize your Google Maps Platform usage with quotas (video)</a> </li> <li><a href="https://www.youtube.com/watch?v=2_HZObVbe-g" class="external">How to generate and restrict API keys for the Google Maps Platform (video)</a> </li> <li><a href="https://mapsplatform.google.com/resources/blog/google-maps-platform-best-practices-restricting-api-keys" class="external">Restricting API keys</a> </li> <li><a href="https://mapsplatform.google.com/resources/blog/google-maps-platform-best-practices-securing-api-keys-when-using-static-maps-and-street-view-apis" class="external">Securing API keys when using Static Maps and Street View APIs</a> </li> <li><a href="https://mapsplatform.google.com/resources/blog/15-google-maps-platform-best-practices" class="external">15 Google Maps platform Best Practices</a> </li> </ul> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-feedback position="footer" project-name="Google Maps Platform" product-id="81777" bucket="" context="Maps API Product Family" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="footer" class="nocontent" project-icon="https://developers.google.com/static/maps/images/maps-icon.svg" > <button> Send feedback </button> </devsite-feedback> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Except as otherwise noted, the content of this page is licensed under the <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 License</a>, and code samples are licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache 2.0 License</a>. For details, see the <a href="https://developers.google.com/site-policies">Google Developers Site Policies</a>. Java is a registered trademark of Oracle and/or its affiliates.</p> <p>Last updated 2024-11-26 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-thumb-rating-feedback"> <devsite-feedback position="thumb-rating" project-name="Google Maps Platform" product-id="81777" bucket="" context="Maps API Product Family" version="t-devsite-webserver-20241114-r00-rc02.464922260396498922" data-label="Send Feedback Button" track-type="feedback" track-name="sendFeedbackLink" track-metadata-position="thumb-rating" class="nocontent" project-icon="https://developers.google.com/static/maps/images/maps-icon.svg" > <button> Need to tell us more? </button> </devsite-feedback> </template> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-11-26 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> <nav class="devsite-footer-promos nocontent" aria-label="Promotions"> <ul class="devsite-footer-promos-list"> <li class="devsite-footer-promo"> <a href="/maps/support#stackoverflow" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Promo Link (index 1)" > <picture> <img class="devsite-footer-promo-icon" src="/static/site-assets/logo-stack-overflow.svg" loading="lazy" alt="Stack Overflow"> </picture> <span class="devsite-footer-promo-label"> Stack Overflow </span> </a> <div class="devsite-footer-promo-description">Ask a question under the google-maps tag.</div> </li> <li class="devsite-footer-promo"> <a href="https://github.com/googlemaps/" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Promo Link (index 2)" > <picture> <img class="devsite-footer-promo-icon" src="/static/site-assets/logo-github.svg" loading="lazy" alt="GitHub"> </picture> <span class="devsite-footer-promo-label"> GitHub </span> </a> <div class="devsite-footer-promo-description">Fork our samples and try them yourself.</div> </li> <li class="devsite-footer-promo"> <a href="https://discord.gg/f4hvx8Rp2q" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Promo Link (index 3)" > <picture> <img class="devsite-footer-promo-icon" src="/static/maps/images/discord-color.png" loading="lazy" alt="Discord"> </picture> <span class="devsite-footer-promo-label"> Discord </span> </a> <div class="devsite-footer-promo-description">Chat with fellow developers about Google Maps Platform.</div> </li> <li class="devsite-footer-promo"> <a href="/maps/support#issue_tracker" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Promo Link (index 4)" > <picture> <img class="devsite-footer-promo-icon" src="/static/site-assets/developers_64dp.png" loading="lazy" alt="Issue Tracker"> </picture> <span class="devsite-footer-promo-label"> Issue Tracker </span> </a> <div class="devsite-footer-promo-description">Something wrong? Send us a bug report!</div> </li> </ul> </nav> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Learn More</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/maps/faq" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > FAQ </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/documentation/api-picker" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > API Picker </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/get-started" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Getting started </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/api-security-best-practices" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > API security best practices </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Platforms</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/maps/apis-by-platform#android" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/apis-by-platform#ios" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > iOS </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/apis-by-platform#web_apis" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Web </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/maps/apis-by-platform#web_service_apis" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Web Services </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Product Info</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/maps/pricing-and-plans" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="footerMen"data-category="pricingAndPlans"data-action="linkClick"> Pricing and Plans </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://cloud.google.com/contact-maps/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-category="contactSales"data-action="linkClick"data-label="footerMenu"> Contact Sales </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://developers.google.com/maps/support/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://cloud.google.com/maps-platform/terms" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Terms of Service </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//ai.google.dev/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google AI Link" > Google AI </a> </li> <li class="devsite-footer-sites-item"> <a href="/products" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/terms/site-terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Sign up for the Google for Developers newsletter</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/newsletter/subscribe" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> <devsite-concierge data-info-panel data-ai-panel data-api-explorer-panel > </devsite-concierge> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{&#34;dimensions&#34;: {&#34;dimension4&#34;: &#34;Google Maps Platform&#34;, &#34;dimension3&#34;: false, &#34;dimension1&#34;: &#34;Signed out&#34;, &#34;dimension5&#34;: &#34;en&#34;, &#34;dimension11&#34;: false, &#34;dimension6&#34;: &#34;en&#34;}, &#34;gaid&#34;: &#34;UA-24532603-1&#34;, &#34;metrics&#34;: {&#34;ratings_count&#34;: &#34;metric2&#34;, &#34;ratings_value&#34;: &#34;metric1&#34;}, &#34;purpose&#34;: 1}]</script> <script type="application/json" tag-management>{&#34;at&#34;: &#34;True&#34;, &#34;ga4&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;ga4p&#34;: [{&#34;id&#34;: &#34;G-272J68FCRF&#34;, &#34;purpose&#34;: 1}], &#34;gtm&#34;: [{&#34;id&#34;: &#34;GTM-W2H69MN&#34;, &#34;purpose&#34;: 0}], &#34;parameters&#34;: {&#34;internalUser&#34;: &#34;False&#34;, &#34;language&#34;: {&#34;machineTranslated&#34;: &#34;False&#34;, &#34;requested&#34;: &#34;en&#34;, &#34;served&#34;: &#34;en&#34;}, &#34;pageType&#34;: &#34;article&#34;, &#34;projectName&#34;: &#34;Google Maps Platform&#34;, &#34;signedIn&#34;: &#34;False&#34;, &#34;tenant&#34;: &#34;developers&#34;, &#34;recommendations&#34;: {&#34;sourcePage&#34;: &#34;&#34;, &#34;sourceType&#34;: 0, &#34;sourceRank&#34;: 0, &#34;sourceIdenticalDescriptions&#34;: 0, &#34;sourceTitleWords&#34;: 0, &#34;sourceDescriptionWords&#34;: 0, &#34;experiment&#34;: &#34;&#34;}, &#34;experiment&#34;: {&#34;ids&#34;: &#34;&#34;}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="4pqtWtTGvxq6CY/GGgEGgipU3nfrlA"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/js/app_loader.js', '[1,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers","https://developers-dot-devsite-v2-prod.appspot.com",null,null,["/_pwa/developers/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/developers/images/favicon-new.png","https://fonts.googleapis.com/css?family=Google+Sans:400,500|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developers.google.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["Profiles__enable_profile_collections","Concierge__enable_pushui","MiscFeatureFlags__developers_footer_dark_image","MiscFeatureFlags__developers_footer_image","Search__enable_suggestions_from_borg","MiscFeatureFlags__enable_firebase_utm","Profiles__enable_recognition_badges","Profiles__enable_page_saving","Profiles__enable_completecodelab_endpoint","Cloud__enable_cloud_shell","MiscFeatureFlags__enable_project_variables","TpcFeatures__enable_mirror_tenant_redirects","Search__enable_dynamic_content_confidential_banner","Cloud__enable_cloudx_ping","Search__enable_page_map","Profiles__require_profile_eligibility_for_signin","MiscFeatureFlags__enable_variable_operator","Cloud__enable_cloud_shell_fte_user_flow","DevPro__enable_cloud_innovators_plus","CloudShell__cloud_shell_button","Search__enable_ai_eligibility_checks","Cloud__enable_llm_concierge_chat","Profiles__enable_awarding_url","Experiments__reqs_query_experiments","Cloud__enable_cloud_facet_chat","MiscFeatureFlags__enable_explain_this_code","Concierge__enable_concierge","CloudShell__cloud_code_overflow_menu","Profiles__enable_developer_profiles_callout","Analytics__enable_clearcut_logging","EngEduTelemetry__enable_engedu_telemetry","Search__enable_ai_search_summaries","MiscFeatureFlags__emergency_css","Profiles__enable_release_notes_notifications","Cloud__enable_cloud_dlp_service","Concierge__enable_concierge_restricted","MiscFeatureFlags__enable_view_transitions","Profiles__enable_complete_playlist_endpoint","Cloud__enable_legacy_calculator_redirect","Profiles__enable_dashboard_curated_recommendations","TpcFeatures__enable_required_headers","Search__enable_ai_search_summaries_restricted","Profiles__enable_public_developer_profiles","Significatio__enable_by_tenant","Cloud__enable_free_trial_server_call","Cloud__enable_cloudx_experiment_ids","DevPro__enable_developer_subscriptions","BookNav__enable_tenant_cache_key"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.clients6.google.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.clients6.google.com",1,4,null,"https://developerprofiles-pa.clients6.google.com",[1,"developers","Google for Developers","developers.google.com",null,"developers-dot-devsite-v2-prod.appspot.com",null,null,[1,1,[1],null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations/information"],null,null,null,[1,1,1],[1,1,null,1,1]],null,[null,null,null,null,null,null,"/images/lockup-new.svg","/images/touchicon-180-new.png",null,null,null,null,1,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme-new.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,29,32,36],null,[[null,null,null,[3,7,10,2,39,17,4,32,24,11,12,13,34,15,25],null,null,[1,[["docType","Choose a content type",[["Tutorial",null,null,null,null,null,null,null,null,"Tutorial"],["Guide",null,null,null,null,null,null,null,null,"Guide"],["Sample",null,null,null,null,null,null,null,null,"Sample"]]],["product","Choose a product",[["Android",null,null,null,null,null,null,null,null,"Android"],["ARCore",null,null,null,null,null,null,null,null,"ARCore"],["ChromeOS",null,null,null,null,null,null,null,null,"ChromeOS"],["Firebase",null,null,null,null,null,null,null,null,"Firebase"],["Flutter",null,null,null,null,null,null,null,null,"Flutter"],["Assistant",null,null,null,null,null,null,null,null,"Google Assistant"],["GoogleCloud",null,null,null,null,null,null,null,null,"Google Cloud"],["GoogleMapsPlatform",null,null,null,null,null,null,null,null,"Google Maps Platform"],["GooglePay",null,null,null,null,null,null,null,null,"Google Pay & Google Wallet"],["GooglePlay",null,null,null,null,null,null,null,null,"Google Play"],["Tensorflow",null,null,null,null,null,null,null,null,"TensorFlow"]]],["category","Choose a topic",[["AiAndMachineLearning",null,null,null,null,null,null,null,null,"AI and Machine Learning"],["Data",null,null,null,null,null,null,null,null,"Data"],["Enterprise",null,null,null,null,null,null,null,null,"Enterprise"],["Gaming",null,null,null,null,null,null,null,null,"Gaming"],["Mobile",null,null,null,null,null,null,null,null,"Mobile"],["Web",null,null,null,null,null,null,null,null,"Web"]]]]]],[1,1],null,1],[[["UA-24532603-1"],["UA-22084204-5"],null,null,["UA-24532603-5"],null,null,[["G-272J68FCRF"],null,null,[["G-272J68FCRF",2]]],[["UA-24532603-1",2]],null,[["UA-24532603-5",2]],null,1],[[14,11],[4,3],[15,12],[6,5],[3,2],[13,10],[16,13],[11,8],[1,1],[12,9],[5,4]],[[1,1],[2,2]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"developers.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10