Google Maps Services Java

Java client library for Google Maps API Web Services
Alternatives To Google Maps Services Java
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Google Api Nodejs Client10,6238,2191,7123 days ago218September 21, 2022157apache-2.0TypeScript
Google's officially supported Node.js client library for accessing Google APIs. Support for authorization and authentication with OAuth 2.0, API Keys and JWT (Service Tokens) is included.
Google Maps Services Python3,9351,153425 days ago42February 02, 202228apache-2.0Python
Python client library for Google Maps API Web Services
Google Maps Services Js2,6347921384 days ago24April 30, 202020apache-2.0TypeScript
Node.js client library for Google Maps API Web Services
Google Maps Services Java1,5998802619 days ago57June 03, 202223apache-2.0Java
Java client library for Google Maps API Web Services
Google Api Dotnet Client1,1931,5287132 days ago93March 28, 202214apache-2.0C#
Google APIs Client Library for .NET
Google Cloud Dotnet85844114a day ago24June 07, 20225apache-2.0C#
Google Cloud Client Libraries for .NET
Google Maps Services Go636
19 days ago14apache-2.0Go
Go client library for Google Maps API Web Services
Google Ads Python36421711 days ago61June 17, 20225apache-2.0Python
Google Ads API Client Library for Python
Google Ads Api182918 days ago99November 08, 202223mitTypeScript
Google Ads API client library for Node.js
Angular Google Gapi1741026 years ago6November 14, 201618JavaScript
An AngularJS module for using all Google Apis and your Google Cloud Endpoints (Google App Engine) with OAuth. This module uses Google APIs Client Library for JavaScript, available for all GApis.
Alternatives To Google Maps Services Java
Select To Compare

Alternative Project Comparisons

Java Client for Google Maps Services

Build Status Coverage Status Maven Central Version Javadocs GitHub contributors Stack Exchange questions


Use Java? Want to geocode something? Looking for directions? Maybe matrices of directions? This library brings the Google Maps API Web Services to your server-side Java application. Analytics

The Java Client for Google Maps Services is a Java Client library for the following Google Maps APIs:

Keep in mind that the same terms and conditions apply to usage of the APIs when they're accessed through this library.

Intended usage of this library

The Java Client for Google Maps Services is designed for use in server applications. This library is not intended for use inside of an Android app, due to the potential for loss of API keys.

If you are building a mobile application, you will need to introduce a proxy server to act as intermediary between your mobile application and the Google Maps API Web Services. The Java Client for Google Maps Services would make an excellent choice as the basis for such a proxy server.

Please see Making the most of the Google Maps Web Service APIs for more detail.

Looking for our Android Maps or Places SDKs?


This library is community supported. We're comfortable enough with the stability and features of the library that we want you to build real production applications on it. We will try to support, through Stack Overflow, the public and protected surface of the library and maintain backwards compatibility in the future; however, while the library is in version 0.x, we reserve the right to make backwards-incompatible changes. If we do remove some functionality (typically because better functionality exists or if the feature proved infeasible), our intention is to deprecate and give developers a year to update their code.

If you find a bug, or have a feature suggestion, please log an issue. If you'd like to contribute, please read How to Contribute.


  • Java 1.8 or later.
  • A Google Maps API key.

API keys

Each Google Maps Web Service request requires an API key. API keys are generated in the 'Credentials' page of the 'APIs & Services' tab of Google Cloud console.

For even more information on getting started with Google Maps Platform and generating/restricting an API key, see Get Started with Google Maps Platform in our docs.

Important: This key should be kept secret on your server.


You can add the library to your project via Maven or Gradle.

Note: Since 0.1.18 there is now a dependency on SLF4J. You need to add one of the adapter dependencies that makes sense for your logging setup. In the configuration samples below we are integrating slf4j-nop, but there are others like slf4j-log4j12 and slf4j-jdk14 that will make more sense in other configurations. This will stop a warning message being emitted when you start using google-maps-services.


  <version>(insert latest version)</version>


repositories {

dependencies {
    implementation ' latest version)'
    implementation 'org.slf4j:slf4j-simple:1.7.25'

You can find the latest version at the top of this README or by searching Maven Central or Gradle, Please.

Developer Documentation

View the javadoc.

Additional documentation for the included web services is available at


This example uses the Geocoding API with an API key:

GeoApiContext context = new GeoApiContext.Builder()
GeocodingResult[] results =  GeocodingApi.geocode(context,
    "1600 Amphitheatre Parkway Mountain View, CA 94043").await();
Gson gson = new GsonBuilder().setPrettyPrinting().create();

The GeoApiContext is designed to be a Singleton in your application. Please instantiate one on application startup, and continue to use it for the life of your application. This will enable proper QPS enforcement across all of your requests.

At the end of the execution, call the shutdown() method of GeoApiContext, otherwise the thread will remain instantiated in memory.

For more usage examples, check out the tests.


Google App Engine Support

You can use this client library on Google App Engine with a single code change.

new GeoApiContext.Builder(new GaeRequestHandler.Builder())

The new GaeRequestHandler.Builder() argument to GeoApiContext.Builder's requestHandlerBuilder tells the Java Client for Google Maps Services to utilise the appropriate calls for making HTTP requests from Google App Engine, instead of the default OkHttp3 based strategy.

Rate Limiting

Never sleep between requests again! By default, requests are sent at the expected rate limits for each web service, typically 50 queries per second for free users. If you want to speed up or slow down requests, you can do that too, using new GeoApiContext.Builder().queryRateLimit(qps).build(). Note that you still need to manually handle the delay between the initial request and successive pages when you're paging through multiple result sets.

Retry on Failure

Automatically retry when intermittent failures occur. That is, when any of the retriable 5xx errors are returned from the API.

To alter or disable automatic retries, see these methods in GeoApiContext:

  • .disableRetries()
  • .maxRetries()
  • .retryTimeout()
  • .setIfExceptionIsAllowedToRetry()


Native objects for each of the API responses.

Asynchronous or synchronous -- you choose

All requests support synchronous or asynchronous calling style.

GeocodingApiRequest req = GeocodingApi.newRequest(context).address("Sydney");

// Synchronous
try {
    // Handle successful request.
} catch (Exception e) {
    // Handle error

req.awaitIgnoreError(); // No checked exception.

// Async
req.setCallback(new PendingResult.Callback<GeocodingResult[]>() {
  public void onResult(GeocodingResult[] result) {
    // Handle successful request.

  public void onFailure(Throwable e) {
    // Handle error.

Building the Project

Note: You will need an API key or Client ID to run the tests.

# Compile and package the project
$ ./gradlew jar

# Run the tests
$ ./gradlew test
Popular Google Projects
Popular Client Library Projects
Popular Companies Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Google Maps
Client Library