Google Maps API - authorized access

This notebook provides introduction to requesting data from Google Maps API using Python. There is a standout Python package developed explicitly for that purpose. To install that package go to the comman prompt and enter the following command:

pip install googlemaps

Once the package is installed, you may go to https://developers.google.com/console for creating an API key. You will also need to manually enable separate API services for your account. This tutorial uses only two services that you need to enable: Geocoding API and Directions API. Make sure to disable them after finishing the tutorial to avoid excessing the free usage limits.

Before proceeding to code, one may check what looks like the response received by the Google Maps (Geocoding) API for, e.g. city Yerevan - https://maps.googleapis.com/maps/api/geocode/json?address=Yerevan (a JSON file, as usually).


In [1]:
import googlemaps
from datetime import datetime

Reminder: The API key is secret, and should not be shown publicly.


In [2]:
gmaps = googlemaps.Client(key='somesecretkeyhere')

In [6]:
# Geocoding an address
geocode_result = gmaps.geocode('1600 Amphitheatre Parkway, Mountain View, CA')

In [7]:
type(geocode_result)


Out[7]:
list

In [8]:
from pprint import pprint
pprint(geocode_result)


[{u'address_components': [{u'long_name': u'Google Building 41',
                           u'short_name': u'Google Bldg 41',
                           u'types': [u'premise']},
                          {u'long_name': u'1600',
                           u'short_name': u'1600',
                           u'types': [u'street_number']},
                          {u'long_name': u'Amphitheatre Parkway',
                           u'short_name': u'Amphitheatre Pkwy',
                           u'types': [u'route']},
                          {u'long_name': u'Mountain View',
                           u'short_name': u'Mountain View',
                           u'types': [u'locality', u'political']},
                          {u'long_name': u'Santa Clara County',
                           u'short_name': u'Santa Clara County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'California',
                           u'short_name': u'CA',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']},
                          {u'long_name': u'94043',
                           u'short_name': u'94043',
                           u'types': [u'postal_code']}],
  u'formatted_address': u'Google Bldg 41, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 37.4228642,
                                           u'lng': -122.0851557},
                            u'southwest': {u'lat': 37.4221145,
                                           u'lng': -122.0859841}},
                u'location': {u'lat': 37.4224082, u'lng': -122.0856086},
                u'location_type': u'ROOFTOP',
                u'viewport': {u'northeast': {u'lat': 37.4238383302915,
                                             u'lng': -122.0842209197085},
                              u'southwest': {u'lat': 37.4211403697085,
                                             u'lng': -122.0869188802915}}},
  u'place_id': u'ChIJxQvW8wK6j4AR3ukttGy3w2s',
  u'types': [u'premise']}]

In [9]:
# Look up an address with reverse geocoding
reverse_geocode_result = gmaps.reverse_geocode((40.714224, -73.961452))

If you print the results above, it will again be a JSON document, yet again unreadible. Let's again make it pretty.


In [10]:
pprint(reverse_geocode_result)


[{u'address_components': [{u'long_name': u'277',
                           u'short_name': u'277',
                           u'types': [u'street_number']},
                          {u'long_name': u'Bedford Avenue',
                           u'short_name': u'Bedford Ave',
                           u'types': [u'route']},
                          {u'long_name': u'Williamsburg',
                           u'short_name': u'Williamsburg',
                           u'types': [u'neighborhood', u'political']},
                          {u'long_name': u'Brooklyn',
                           u'short_name': u'Brooklyn',
                           u'types': [u'political',
                                      u'sublocality',
                                      u'sublocality_level_1']},
                          {u'long_name': u'Kings County',
                           u'short_name': u'Kings County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']},
                          {u'long_name': u'11211',
                           u'short_name': u'11211',
                           u'types': [u'postal_code']}],
  u'formatted_address': u'277 Bedford Ave, Brooklyn, NY 11211, USA',
  u'geometry': {u'location': {u'lat': 40.7142205, u'lng': -73.9612903},
                u'location_type': u'ROOFTOP',
                u'viewport': {u'northeast': {u'lat': 40.71556948029149,
                                             u'lng': -73.95994131970849},
                              u'southwest': {u'lat': 40.7128715197085,
                                             u'lng': -73.9626392802915}}},
  u'place_id': u'ChIJd8BlQ2BZwokRAFUEcm_qrcA',
  u'types': [u'street_address']},
 {u'address_components': [{u'long_name': u'Grand St/Bedford Av',
                           u'short_name': u'Grand St/Bedford Av',
                           u'types': [u'bus_station',
                                      u'establishment',
                                      u'point_of_interest',
                                      u'transit_station']},
                          {u'long_name': u'Williamsburg',
                           u'short_name': u'Williamsburg',
                           u'types': [u'neighborhood', u'political']},
                          {u'long_name': u'Brooklyn',
                           u'short_name': u'Brooklyn',
                           u'types': [u'political',
                                      u'sublocality',
                                      u'sublocality_level_1']},
                          {u'long_name': u'Kings County',
                           u'short_name': u'Kings County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']},
                          {u'long_name': u'11211',
                           u'short_name': u'11211',
                           u'types': [u'postal_code']}],
  u'formatted_address': u'Grand St/Bedford Av, Brooklyn, NY 11211, USA',
  u'geometry': {u'location': {u'lat': 40.714321, u'lng': -73.961151},
                u'location_type': u'GEOMETRIC_CENTER',
                u'viewport': {u'northeast': {u'lat': 40.71566998029149,
                                             u'lng': -73.95980201970849},
                              u'southwest': {u'lat': 40.7129720197085,
                                             u'lng': -73.96249998029151}}},
  u'place_id': u'ChIJi27VXGBZwokRM8ErPyB91yk',
  u'types': [u'bus_station',
             u'establishment',
             u'point_of_interest',
             u'transit_station']},
 {u'address_components': [{u'long_name': u'Williamsburg',
                           u'short_name': u'Williamsburg',
                           u'types': [u'neighborhood', u'political']},
                          {u'long_name': u'Brooklyn',
                           u'short_name': u'Brooklyn',
                           u'types': [u'political',
                                      u'sublocality',
                                      u'sublocality_level_1']},
                          {u'long_name': u'New York',
                           u'short_name': u'New York',
                           u'types': [u'locality', u'political']},
                          {u'long_name': u'Kings County',
                           u'short_name': u'Kings County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'Williamsburg, Brooklyn, NY, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 40.7251773,
                                           u'lng': -73.936498},
                            u'southwest': {u'lat': 40.6979329,
                                           u'lng': -73.96984499999999}},
                u'location': {u'lat': 40.7081156, u'lng': -73.9570696},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 40.7251773,
                                             u'lng': -73.936498},
                              u'southwest': {u'lat': 40.6979329,
                                             u'lng': -73.96984499999999}}},
  u'place_id': u'ChIJQSrBBv1bwokRbNfFHCnyeYI',
  u'types': [u'neighborhood', u'political']},
 {u'address_components': [{u'long_name': u'Brooklyn',
                           u'short_name': u'Brooklyn',
                           u'types': [u'political',
                                      u'sublocality',
                                      u'sublocality_level_1']},
                          {u'long_name': u'New York',
                           u'short_name': u'New York',
                           u'types': [u'locality', u'political']},
                          {u'long_name': u'Kings County',
                           u'short_name': u'Kings County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'Brooklyn, NY, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 40.739446,
                                           u'lng': -73.8333651},
                            u'southwest': {u'lat': 40.551042,
                                           u'lng': -74.05663}},
                u'location': {u'lat': 40.6781784, u'lng': -73.9441579},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 40.739446,
                                             u'lng': -73.8333651},
                              u'southwest': {u'lat': 40.551042,
                                             u'lng': -74.05663}}},
  u'place_id': u'ChIJCSF8lBZEwokRhngABHRcdoI',
  u'types': [u'political', u'sublocality', u'sublocality_level_1']},
 {u'address_components': [{u'long_name': u'New York',
                           u'short_name': u'New York',
                           u'types': [u'locality', u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'New York, NY, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 40.9175771,
                                           u'lng': -73.70027209999999},
                            u'southwest': {u'lat': 40.4773991,
                                           u'lng': -74.25908989999999}},
                u'location': {u'lat': 40.7127837, u'lng': -74.0059413},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 40.9152555,
                                             u'lng': -73.70027209999999},
                              u'southwest': {u'lat': 40.4960439,
                                             u'lng': -74.2557349}}},
  u'place_id': u'ChIJOwg_06VPwokRYv534QaPC8g',
  u'types': [u'locality', u'political']},
 {u'address_components': [{u'long_name': u'11211',
                           u'short_name': u'11211',
                           u'types': [u'postal_code']},
                          {u'long_name': u'Brooklyn',
                           u'short_name': u'Brooklyn',
                           u'types': [u'political',
                                      u'sublocality',
                                      u'sublocality_level_1']},
                          {u'long_name': u'New York',
                           u'short_name': u'New York',
                           u'types': [u'locality', u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'Brooklyn, NY 11211, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 40.7280089,
                                           u'lng': -73.9207299},
                            u'southwest': {u'lat': 40.7008331,
                                           u'lng': -73.9644697}},
                u'location': {u'lat': 40.7093358, u'lng': -73.9565551},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 40.7280089,
                                             u'lng': -73.9207299},
                              u'southwest': {u'lat': 40.7008331,
                                             u'lng': -73.9644697}}},
  u'place_id': u'ChIJvbEjlVdZwokR4KapM3WCFRw',
  u'types': [u'postal_code']},
 {u'address_components': [{u'long_name': u'Kings County',
                           u'short_name': u'Kings County',
                           u'types': [u'administrative_area_level_2',
                                      u'political']},
                          {u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'Kings County, NY, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 40.739446,
                                           u'lng': -73.8333651},
                            u'southwest': {u'lat': 40.551042,
                                           u'lng': -74.05663}},
                u'location': {u'lat': 40.6528762,
                              u'lng': -73.95949399999999},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 40.7391407,
                                             u'lng': -73.83363179999999},
                              u'southwest': {u'lat': 40.5703742,
                                             u'lng': -74.0419592}}},
  u'place_id': u'ChIJOwE7_GTtwokRs75rhW4_I6M',
  u'types': [u'administrative_area_level_2', u'political']},
 {u'address_components': [{u'long_name': u'New York-Northern New Jersey-Long Island, NY-NJ-PA',
                           u'short_name': u'New York-Northern New Jersey-Long Island, NY-NJ-PA',
                           u'types': [u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'New York-Northern New Jersey-Long Island, NY-NJ-PA, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 41.6018065,
                                           u'lng': -71.856214},
                            u'southwest': {u'lat': 39.49853299999999,
                                           u'lng': -75.3585939}},
                u'location': {u'lat': 40.9590293, u'lng': -74.0300122},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 41.6018065,
                                             u'lng': -71.856214},
                              u'southwest': {u'lat': 39.49853299999999,
                                             u'lng': -75.3585939}}},
  u'place_id': u'ChIJ3YJV4PRWwokRFFI21ZrHXtQ',
  u'types': [u'political']},
 {u'address_components': [{u'long_name': u'New York Metropolitan Area',
                           u'short_name': u'New York Metropolitan Area',
                           u'types': [u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'New York Metropolitan Area, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 42.0809059,
                                           u'lng': -71.777491},
                            u'southwest': {u'lat': 39.475198,
                                           u'lng': -75.3587649}},
                u'location': {u'lat': 40.7127761, u'lng': -74.0059544},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 42.0809059,
                                             u'lng': -71.777491},
                              u'southwest': {u'lat': 39.475198,
                                             u'lng': -75.3587649}}},
  u'place_id': u'ChIJ-5Z24NaGwokRiMh4Rj8FNMo',
  u'types': [u'political']},
 {u'address_components': [{u'long_name': u'New York',
                           u'short_name': u'NY',
                           u'types': [u'administrative_area_level_1',
                                      u'establishment',
                                      u'point_of_interest',
                                      u'political']},
                          {u'long_name': u'United States',
                           u'short_name': u'US',
                           u'types': [u'country', u'political']}],
  u'formatted_address': u'New York, USA',
  u'geometry': {u'bounds': {u'northeast': {u'lat': 45.015865,
                                           u'lng': -71.777491},
                            u'southwest': {u'lat': 40.4773991,
                                           u'lng': -79.7625901}},
                u'location': {u'lat': 43.2994285,
                              u'lng': -74.21793260000001},
                u'location_type': u'APPROXIMATE',
                u'viewport': {u'northeast': {u'lat': 45.0125923,
                                             u'lng': -71.8562029},
                              u'southwest': {u'lat': 40.4961036,
                                             u'lng': -79.761996}}},
  u'place_id': u'ChIJqaUj8fBLzEwRZ5UY3sHGz90',
  u'types': [u'administrative_area_level_1',
             u'establishment',
             u'point_of_interest',
             u'political']}]

In [11]:
# Request directions via public transit
now = datetime.now()
directions_result = gmaps.directions("Yerevan, Armenia","Dilijan, Armenia", departure_time=now)

In [12]:
pprint(directions_result)


[{u'bounds': {u'northeast': {u'lat': 40.7404981, u'lng': 44.9991202},
              u'southwest': {u'lat': 40.1708793, u'lng': 44.4999565}},
  u'copyrights': u'Map data \xa92017 Google',
  u'legs': [{u'distance': {u'text': u'98.8 km', u'value': 98792},
             u'duration': {u'text': u'1 hour 32 mins', u'value': 5546},
             u'duration_in_traffic': {u'text': u'1 hour 32 mins',
                                      u'value': 5546},
             u'end_address': u'Dilijan, Armenia',
             u'end_location': {u'lat': 40.7402533,
                               u'lng': 44.86269859999999},
             u'start_address': u'Yerevan, Armenia',
             u'start_location': {u'lat': 40.1790325, u'lng': 44.4999565},
             u'steps': [{u'distance': {u'text': u'11 m', u'value': 11},
                         u'duration': {u'text': u'1 min', u'value': 2},
                         u'end_location': {u'lat': 40.1790946,
                                           u'lng': 44.5000376},
                         u'html_instructions': u'Head <b>northeast</b> toward <b>Dzoragyugh 1st St</b>',
                         u'polyline': {u'points': u'}mftFwkrnGEACCAI'},
                         u'start_location': {u'lat': 40.1790325,
                                             u'lng': 44.4999565},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'79 m', u'value': 79},
                         u'duration': {u'text': u'1 min', u'value': 38},
                         u'end_location': {u'lat': 40.1798047,
                                           u'lng': 44.5000778},
                         u'html_instructions': u'Slight <b>left</b> onto <b>Dzoragyugh 1st St</b>',
                         u'maneuver': u'turn-slight-left',
                         u'polyline': {u'points': u'inftFglrnG_AAmAE'},
                         u'start_location': {u'lat': 40.1790946,
                                             u'lng': 44.5000376},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'0.4 km', u'value': 396},
                         u'duration': {u'text': u'2 mins', u'value': 126},
                         u'end_location': {u'lat': 40.1774142,
                                           u'lng': 44.5032066},
                         u'html_instructions': u'Turn <b>right</b> onto <b>Paronyan St</b>',
                         u'maneuver': u'turn-right',
                         u'polyline': {u'points': u'wrftFolrnGRkAdAaFFSNAXYhCoBLK`Aw@jA}@VQRO'},
                         u'start_location': {u'lat': 40.1798047,
                                             u'lng': 44.5000778},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'0.8 km', u'value': 845},
                         u'duration': {u'text': u'4 mins', u'value': 210},
                         u'end_location': {u'lat': 40.1709779,
                                           u'lng': 44.5084946},
                         u'html_instructions': u'Continue onto <b>Grigor Lusavorich Street</b>',
                         u'polyline': {u'points': u'ycftFa`snGTOVQPMRSfBsAtBcB`CiBr@i@d@]|AmAvBcBxEwDdDcClA}@rAeA'},
                         u'start_location': {u'lat': 40.1774142,
                                             u'lng': 44.5032066},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'0.6 km', u'value': 562},
                         u'duration': {u'text': u'1 min', u'value': 53},
                         u'end_location': {u'lat': 40.1732816,
                                           u'lng': 44.5141728},
                         u'html_instructions': u'Turn <b>left</b> onto <b>Agatangeghos St</b>',
                         u'maneuver': u'turn-left',
                         u'polyline': {u'points': u's{dtFaatnGRWY]Q[Sc@{@eCaAoCyAgEMc@aAwCcAuCa@{AI_@Ei@Ac@'},
                         u'start_location': {u'lat': 40.1709779,
                                             u'lng': 44.5084946},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'1.0 km',
                                       u'value': 1048},
                         u'duration': {u'text': u'2 mins', u'value': 96},
                         u'end_location': {u'lat': 40.1786325,
                                           u'lng': 44.5232025},
                         u'html_instructions': u'Continue onto <b>Khanjyan St</b>',
                         u'polyline': {u'points': u'_jetFqdunGCkACgACm@M_BCg@Gs@C_@IqAMgAMcAM_AG_@Iq@Qy@U}@a@sAc@aAKUO]Yi@Yc@We@KMGIy@aAKOq@s@QS_@_@YWa@]WUa@[YUi@_@_@WYQWQ_@SQI[O[O]O_@O[O[OYMc@Q'},
                         u'start_location': {u'lat': 40.1732816,
                                             u'lng': 44.5141728},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'1.1 km',
                                       u'value': 1084},
                         u'duration': {u'text': u'1 min', u'value': 81},
                         u'end_location': {u'lat': 40.1874194,
                                           u'lng': 44.5263856},
                         u'html_instructions': u'Take the ramp to <b>Heratsi St</b>',
                         u'polyline': {u'points': u'mkftF_}vnGg@i@IGKEME[MkA[qA[g@Im@Is@Iw@AcAGsAEi@A[GSE_@MWOOMOQQUKSGQIWMa@K[Q]SWSW_@We@Ui@WYO]Qu@c@[Ma@M_@KEASCaBUEAG?E?WBWFSFMHULc@\\WRSJOHUDUBO?K?OEQGUMSMQQMM'},
                         u'start_location': {u'lat': 40.1786325,
                                             u'lng': 44.5232025},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'0.7 km', u'value': 745},
                         u'duration': {u'text': u'1 min', u'value': 66},
                         u'end_location': {u'lat': 40.1924055,
                                           u'lng': 44.5321047},
                         u'html_instructions': u'Continue onto <b>Heratsi St</b>',
                         u'polyline': {u'points': u'kbhtF}pwnGyByBkEuEiFqE{@{@]YEEQQs@o@KGq@kAkA_BOU}@cBSg@Oi@Su@'},
                         u'start_location': {u'lat': 40.1874194,
                                             u'lng': 44.5263856},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'6.8 km',
                                       u'value': 6781},
                         u'duration': {u'text': u'9 mins', u'value': 529},
                         u'end_location': {u'lat': 40.2376422,
                                           u'lng': 44.56365419999999},
                         u'html_instructions': u'Merge onto <b>Myasnikyan Ave</b>/<b>M4</b><div style="font-size:0.9em">Continue to follow M4</div>',
                         u'maneuver': u'merge',
                         u'polyline': {u'points': u'qaitFstxnGYuBY_Be@sAS_@SYS]sCmDcBuB_AwAYe@Wm@Qq@Oy@Gy@Cm@Ae@TaD`@_El@cFJ{@LsAJwAFcBByA?yAAu@IoAI_AOqAIc@O}@WuA[mA]gA[}@Ui@Ui@[m@gDuFkCiEiA{Ae@o@i@o@s@{@}AqBaCyCw@_AeAuAuBiCq@w@iAqAq@q@c@a@_@_@mAiAmAkAiDgDcEcE{GqGu@q@k@g@a@]e@a@s@c@}@k@gAo@mAg@}Aq@wE_BcA]kBo@uCeAiBm@oBq@kAc@s@S{@Sg@K}@Gu@GgA?cABs@BSDKNM@UDg@Fu@L}@LaALcAPoANiBRcGv@i@H[DgBTcBTw@JqATu@Pw@Rm@Pk@Ro@T}@`@u@^s@^{@d@s@^q@^uAt@oAp@uAt@qAr@e@Ve@V_Bz@c@Rc@Pm@Ra@L]Hs@Ls@Hk@F_@Bg@@m@@y@AiACy@CiBGkBEYCc@Ci@Gg@Iy@Oq@Su@Wc@Qi@WsAu@g@o@g@a@m@i@sFyF{GiHyAeBg@o@o@_Am@eAg@cA'},
                         u'start_location': {u'lat': 40.1924055,
                                             u'lng': 44.5321047},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'86.9 km',
                                       u'value': 86943},
                         u'duration': {u'text': u'1 hour 12 mins',
                                       u'value': 4309},
                         u'end_location': {u'lat': 40.7403314,
                                           u'lng': 44.8660773},
                         u'html_instructions': u'Keep <b>left</b> to continue on <b>AH83</b>/<b>M4</b>',
                         u'maneuver': u'keep-left',
                         u'polyline': {u'points': u'g|qtFyy~nGi@iAm@wA}@eCqC_IqBwFg@uAyAcEgEsLqCqHyAcE_@cAc@iAUo@kBwEYu@gMq[Se@}@_Ci@mAUo@k@{Ae@gAc@_Ae@aAo@gAs@aAw@cAw@}@o@o@[W]YMIOKKIKGOMQKiEyCiBsAuAgAgC{B{C}CMMWYIMaAkAyAkB]a@s@cAeAaBQWGM}@uAe@{@gAoB_AoBwAkCo@qAg@_Ac@u@_@m@i@w@k@w@k@s@a@c@o@m@u@q@s@k@o@e@iAu@cB_AuAq@oAe@y@Wo@QaAYu@Ok@IcAMqAKaACuAC{A?uA@oA@sBByADeBBiCDwB@mCBaBB{@?y@A_ACu@CaAGuAMuAOaAMwAUqAUwBc@uBc@qBi@sA_@kBi@kBo@qC_AyAk@oAg@}Aq@cAi@iBaAgBaAqBoAuCiB}CoBkCaBqCeBeC}AiGyDiAw@gBgAgAq@kBgAiBgA{@k@}@k@[Sg@[yBsA_CwAyBuAiBiAcC{AwCkBqBoAsAy@cDsBa@WQKQMKGkC_BoD{ByEyCeGwDuH{EyFqDoG{DgDsBeC}A{DcCuHyEgFaDgFaDsBoAeF_DoDaCkBqAeEaD{CcCqGsFyDiDeEuDsH}GqHsGcGoFkGuFgB}A{@o@}@o@s@c@uAu@mAq@y@_@oAg@wAg@aAUaAIaAAwA?yBD{AHsANmAN_@Hm@HcB`@gBb@c@NMDMDoA^{ExAaD`AcEnAuEvAiDv@_Er@iDh@wCb@}F~@{Er@aG|@_IlA_JpAOBKDKHUTMDu@HcEf@iD`@kBTwBV_CXaBP}B\\qAXw@P_B`@qBd@uBh@y@Je@Bk@@g@Cg@Ei@Kc@Oe@Qe@Ue@]c@_@[]Y_@e@y@Wo@Qg@Qo@Os@Io@K{@K{@Kw@Iq@My@Ms@Oq@Sm@Um@S]]i@_@c@e@c@c@[YQg@We@Oc@Mi@Ck@CwAEsBIk@Ee@Gc@Kk@Qk@Yg@_@]]c@i@_@o@a@_AYy@a@iBK}@C{@CsECqBCm@Io@Kq@YqASm@c@_Ai@y@c@g@o@k@a@Wg@S{@Ww@SsBa@sAY_B]iB_@i@OSIe@Ui@_@][_@e@]g@c@w@m@{A_AcCiBaFyBeGy@sBYm@S_@i@q@_@_@k@e@e@Y[K}@]k@Ki@Eu@Ay@Fk@J{@R{Bf@kB^]Bg@@sAEq@E_@EaAUs@Ws@[}A}@eEkC_FyCeEgCqJ_G_FyCuFcDwGqEu@m@sB}AsBqBcCaCwCaDkCyCgHwHyCcD}AiBoBqBcBkByBeCgBoBeBkBcCiC{BcCeBoByBaC_CgCeDqDgDsDsCyCoByBi@k@oAuAcCsCeCgCcBoBOQq@s@s@y@kBqB{AaB{A}AcAgAyBcC{GwHqEwFsEeGeEiGwE}GqFcIuFsIeEoGaDqE{D_GgBkCuEaHmEsG}BiDiDiFaE_GyFoIiFuHyAkBiAmAs@m@uBaBkBiAyC_B}GiDcI{DwL{FyJyEaCmA_EqBeDcB{CyAkCsAuCwAiCoAkCqAmCsAqCuAmCqAcBy@_@Sy@a@gD}A{CyBwAs@eAm@wDyBoFqDuEeDmDeCqEeDqEaD}C{BaFoDkE_DsDmC}CyBoEeDeEyC_EuCqDgCgDeCkBsAiBsAm@g@q@o@q@u@c@m@_@e@m@{@c@w@m@kAkAiCMYa@}@c@cAi@kAuByEsCoGuB}EmCeGkCcGcCuFo@{A_AwB}@oB}CeH}@qBm@oAi@eAaAqBsAkCcB_DsBwDyAqC_BwCwAoCoBuDyBeEeBcDqAeCuB}D{C_GyBeEwCsF{C{FgCaFyBeEmBsDyBcEsCqFmA_C_HoMaB_Dw@uAo@mAk@aAo@gAkBaDyBsDuC{E{CaFiDwFgDqFuDiGkD{FaA_B}EcIaC{DwE_IgDqFuBiD_BkCoBeD_EyG{CcFiCgEcAmB{@_BcAoBwBiEyFeLoDgHcCaFqE_JaDsGyDyHuDkHqAkCu@{Aq@{Ao@}Ak@{AiB{EaBmEyCyH}B}F{EcMsCqHgCwGcAmCq@iB_CcG{B_G}CiIcDoIYu@_@iA[aA]kA]oA_@_BoA{FgCsLgCoLwAoGwBaKgCoLeBaIkAoFaBwH}CwNiAgF{BiKmDePcB{Hi@gCqAaGm@qCi@iCe@eCu@eFo@iE}@eGgBoLg@gD}@cGg@kDk@kDq@cEu@{Dm@kCc@kBo@kCQo@y@_DkCwIkCmIgG_Sc@yAk@iBaA_DyD}LkD}KaDiKq@}Bo@aCa@iBa@iBy@qEi@gD]oCWgC_A}Ko@sHSuDMsCEoAGyBC_CAuB@sC@iCJ}DLeDRoDZoE\\oEZuEZiEd@aGhA}Od@oGr@qKb@eGTqCjAmPjAaPfAkO^}ExCwa@nA{PjA_Pp@qJbAkNnAcQ\\}ELcBHmADuA@iAAyACqACWE}@O{A[uCsAsK[aCu@oG{AwLCYKw@qAoK[eC[kCCQmA}J_AuHa@eDa@{CUgAQ_Ae@gBGUY_Ae@sAe@gAi@iAg@_Ai@}@kF{Ha@k@oDgFgBiCoEsGeBgC}DyFmF{H_IgLsF_IeHeK}A}BkAcBqAmBqEsGsAoBw@gAcDwEgHcKiDaFmBqCu@gAa@g@]c@o@o@m@m@i@a@i@a@uB}AeCiByAgAwB}AoDkCsAaAq@m@g@e@mAsAaBaB_BaBmCoCgDiD_DeDm@m@a@[c@Y}@e@y@_@e@Oc@Om@Kg@Eo@Ak@?i@@e@Dq@HiBZ}Dn@eC`@cDh@g@J]H_@Jg@PsAh@sAj@yB|@oBt@cBx@w@\\k@Xe@ZeBrAkA`Ae@`@s@t@e@r@Yb@_@p@Sd@c@nAuBxG{@nCgAdD}BjHyAvE{AzEsBvGs@|Ba@lAQr@YtAu@tD{A`IgCnMmBtJc@rBk@lBk@xAs@|AgCrFqD~H}AjDg@bA_@n@k@v@o@p@qAhAeDrCkDxCSNqCbCm@b@a@Xc@Te@Ru@Vc@JsARmANaBTsC^eARw@Vq@Xu@\\e@Xi@`@q@j@w@t@kBjBaC`Cs@t@g@p@g@r@c@x@s@zA}@nBe@dA_BnDkC`GyAdDcAvB[h@OXa@h@q@h@uBrA_D|Aq@Xk@Py@T}@RuH|AiCh@eFbA_Ez@C@C@KJi@JyE`ASDq@N{@PgGjAaJhB_KpByCn@wCn@_IfC{Gh@qHdDeFhGcIpQaNrWgMbS_TxYuEfIwF`O}ErOaDdEaN|PuCnF}GvMoBvEsBrH}CnIuF~IoNfJmChCaBtEMvFSjKy@pGqGbSuFzOmAxFoBtPsAdMaA~EYv@s@v@gzBty@{Ar@[Lw@XeBn@eBbAyCbCiBhBiAnBcBnCiAbCa@p@Yd@oAjB}@`Cu@xAm@`Bc@jBK`@KNe@f@s@fAeAdBg@hA{@|Bi@x@q@Xa@Cy@a@g@Oc@HO`@Gf@Bv@HjALdBE~@Kp@Wl@YXu@VsBl@[X_@h@q@rBWf@[d@eAlAyBtB{@hAk@l@y@`@}A\\a@@{@Qg@@mCJg@JSPWb@Qp@IbA@nDCp@Qf@[h@]Tg@@g@G_AK{BGa@JGR?H@LNN\\@jACv@B`AFhA^rA~@NZAVILE?MEq@u@]OmAOuBCy@Fi@T[`@Sj@KlA@t@Nv@\\`BDx@Ev@Mf@UPcAZsA^uCv@eCbBa@Lc@@e@IQBCBGNAHBLRP`@Jh@Cp@StAc@dBa@lAi@dAe@bBc@dAIbAMP?JL@LCPIJ]HqAHaATiAd@cClAeCtAg@X}@`@WFkAMY@URM\\[rBWr@_@d@aAt@eAv@cAp@]b@aAdBq@~@u@l@g@H[GWOc@_@]Me@Ek@F_@P[b@U~@a@vBa@bB[t@g@d@]Nk@J}BDw@@{@Iy@YwAi@cBgAu@c@a@MQ@KPG\\FVJHbA^^Pv@h@v@`@n@^jAn@h@Zn@Tt@LVBzBNdBC|@QlC{@pA]dBi@f@Uh@g@x@mAl@s@NEF?FDBL?JETm@fA]x@w@~By@rBcAdCWb@WR_@NaANM?{@BwB?mCKqAIqCa@{Bg@aAMkAGmAD_G~@SBkADq@@gFGSBi@F}D`AiDx@}Bb@oCh@oADs@@iAEk@@e@BgAG{@McA_@sBu@iAw@IGgAo@u@[o@QoDy@gCo@wCu@oA_@_AOsAEeB@iCDuD@uCHiBPg@F}@JaDd@oC^}@Di@Ke@Yc@i@KSA?Sc@O]e@uA]}AEaAIkIEmCKgCKoBMeAOgAUaAYcAe@_Au@sB_@eBKiAGcBCuBGoCCq@Ks@S_Au@gCg@cBy@eCm@oAk@}@s@cAmCgBoAq@o@Mo@?w@BwCh@}Dj@_DXaBTsD|@eBVq@NWFi@Lq@Xs@^e@JgB?e@Hs@XkAR[Fc@Ps@f@eBr@mA^mALcAQaBYa@Hk@RcBtAi@@aAYk@Qe@{@Uq@q@kBs@_A_Au@OGMCO?'},
                         u'start_location': {u'lat': 40.2376422,
                                             u'lng': 44.56365419999999},
                         u'travel_mode': u'DRIVING'},
                        {u'distance': {u'text': u'0.3 km', u'value': 298},
                         u'duration': {u'text': u'1 min', u'value': 36},
                         u'end_location': {u'lat': 40.7402533,
                                           u'lng': 44.86269859999999},
                         u'html_instructions': u'At the roundabout, take the <b>2nd</b> exit onto <b>M8</b><div style="font-size:0.9em">Destination will be on the right</div>',
                         u'maneuver': u'roundabout-right',
                         u'polyline': {u'points': u'abtwF_|ypGSPGTAZ@FBPHNK~@GdA?pDp@|F'},
                         u'start_location': {u'lat': 40.7403314,
                                             u'lng': 44.8660773},
                         u'travel_mode': u'DRIVING'}],
             u'traffic_speed_entry': [],
             u'via_waypoint': []}],
  u'overview_polyline': {u'points': u'}mftFwkrnGkAQmAERkAlAuF`EwCxDwCfNoKpXgTgJwVuB{HMeFqAyN{CsKwEqGkFqEmLqGiKkB}EW{Aq@kBaEeG{DgFeAiD|AmCPuTyScGkHuBkFmBiI_H{IcC}E]gEpBaSd@iJU_HmDgOsPoWaSgV_\\g[yMaIwZkKwEo@sELqIzAgWbD}LxDcPvIaJ|DmK`@yM{@uDuAqEqDqSyToDsGkYuw@uWgq@iIkRkH{HkQ}MyLqNcLeS_I}LiEqDsImEaFsAcGg@uWRuSGwViEiWiJ{_@sUqs@wc@eiAas@wp@eb@}y@{s@mNsLqGkDkHoBoJLmNnC{M`EcWrGmu@bLkQtCsXtEaGz@}Ce@uCeBsBgDkB}K_AmEgByCkCiB_De@}G]cDwAcCwDkA}GUcL}AqF_DeDoGaBgIgBaC{AoCaF}I_VwB_DkDiBeEKoIfBkEEiEoAix@{f@aL_KeVwWyZw\\{r@sv@uJkKg[_a@ap@eaA_i@gv@oLyHsk@{X{d@kUo\\cQeQmKgXsRsn@id@oPuLuD{D_IkO_m@csAmy@s}As\\}n@e]gk@sbAwbBik@siA{Raf@g^g_AsNwa@}t@ajDqLot@{J_j@}Vyy@yPcj@mDgP_D}YwAmUKcOn@}SzHagAbPezBlIglAGmGeCcUgI}p@cHwf@mBqFgJcO{i@ww@}~@urA_WkRsVgVsGiGaEeBqDSkFl@iUxEaLxEoFfDkElEqBjEuUdu@yNhs@kRxb@sUxSaDzAgHdAcIdBwDdCyIxIgDzFyOh]iJdGuEtAc\\bH_n@`MwMvD{Gh@qHdDeFhGcIpQi\\vk@uZ`d@uMt_@cSbWsLfUcFjO}CnIuF~I}RpNaBtEMvFmA|SgO~c@sItm@mAnBc}Bh{@_HzCcGlFmD~FuEfIeEhLqB`DsEfJsATaBq@s@j@C~ADbHq@fAiDdAeC~EwGrHeBnA_C^yGFgAjDA`Fm@pAmDB}CBG\\zBZxBJ|C~AA`AkD{AoDBeAv@MfFNzFcIdCgDpBiAG_@`@bBf@zHcCrHaBZl@{Dt@{JbF{D\\wAxEkFdEgEvF_Cm@oCDuB~HcAzAiAZkH[sGcD]hAdKrFxFv@bDU~EyAlC_AbBuBlAs@cGjPqCvAoIGaLaBmL`AyJBoOfD}Ij@uEOkGuC}IwCoLuCyNBeJn@yK~@wAwAgBuFa@cT_A_IuC}I_@sLyAmH{DwJaEkD_C_A}LxA{OdCeD~@gFt@_EfAuHhCeDk@mA\\mCvAmBk@aDyGmBaA[jAEfDp@nL'},
  u'summary': u'M4',
  u'warnings': [],
  u'waypoint_order': []}]

In [16]:
for i in directions_result:
    legs = i["legs"]
    for leg in legs:
        dist = leg["distance"]
        print dist


{u'text': u'98.8 km', u'value': 98792}

In [17]:
type(dist)


Out[17]:
dict

In [23]:
loc1 = raw_input("Please, provide the start location: ")+", Armenia"
loc2 = raw_input("Please, provide the end location: ")+", Armenia"
directions_result = gmaps.directions(loc1,loc2, departure_time=datetime.now())
for i in directions_result:
    legs = i["legs"]
    for leg in legs:
        dist = leg["distance"]
print("\n")
print("The distance between "+loc1+" and "+loc2+" is "+dist["text"])


Please, provide the start location: Yerevan
Please, provide the end location: Dilijan


The distance between Yerevan, Armenia and Dilijan, Armenia is 98.8 km