<br />

**European Economic Area (EEA) developers**

> [!NOTE]
> If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](https://developers.google.com/maps/comms/eea/faq.md.txt).

> [!NOTE]
> This product is in [Legacy status](https://developers.google.com/maps/legacy.md.txt). As of October 2026, Directions API (Legacy) can no longer be enabled for new Google Cloud projects. Existing projects remain fully supported. For new features and improved performance, [migrate to the Routes
> API](https://developers.google.com/maps/documentation/routes/migrate-routes).

This demo shows you how to use the Directions API (Legacy) to get a set of driving
directions from one location to another. You may run this demo at no charge. Running
this demo alone does not exceed your [monthly quota](https://developers.google.com/maps/billing-credits).

## Before you begin

To use the Directions API (Legacy), complete the following required setup steps:

### Step 1: Set up your project

#### Console

[Video](https://www.youtube.com/watch?v=uINleRduCWM)

1. In the Google Cloud console, on the project selector page, click
   **Create Project** to begin creating a new Cloud
   project.

   [Go to the project selector page](https://console.cloud.google.com/projectselector2/home/dashboard?utm_source=Docs_NewProject&utm_content=Docs_Central)
2. Make sure that billing is enabled for your Cloud project.
   [Confirm that billing is enabled for your project](https://console.cloud.google.com/project/_/billing?utm_source=Docs_Billing&utm_content=Docs_Central).

   Google Cloud offers a $0.00 charge trial. The trial expires at the end of 90
   days or after the account has accrued $300 worth of charges, whichever comes first. Cancel
   anytime. For more information, see
   [Billing account credits](https://developers.google.com/maps/billing-credits) and [Billing](https://developers.google.com/maps/billing-and-pricing/billing).

#### Cloud SDK

```bash
gcloud projects create "PROJECT"
```

Read more about the [Google Cloud SDK](https://cloud.google.com/sdk), [Cloud SDK installation](https://cloud.google.com/sdk/docs/install), and the following commands:

- [`gcloud projects create`](https://cloud.google.com/sdk/gcloud/reference/projects/create)

> [!NOTE]
> **Note**: If you don't plan to keep the resources that you create in a learning exercise, create a project instead of selecting an existing project. After you finish the exercise, you can delete the project, removing all resources associated with the project.

### Step 2: Enable APIs or SDKs

To use Google Maps Platform, you must enable the APIs or SDKs you plan to use with your project.

#### Console


[Enable the Directions API (Legacy)](https://console.cloud.google.com/apis/library/directions-backend.googleapis.com?utm_source=Docs_EnableAPIs&utm_content=Docs_directions-backend)

#### Cloud SDK

```bash
gcloud services enable \
    --project "PROJECT" \
    "directions-backend.googleapis.com"
```

Read more about the [Google Cloud SDK](https://cloud.google.com/sdk), [Cloud SDK installation](https://cloud.google.com/sdk/docs/install), and the following commands:

- [`gcloud services enable`](https://cloud.google.com/sdk/gcloud/reference/services/enable)
- [`gcloud services disable`](https://cloud.google.com/sdk/gcloud/reference/services/disable)

### Step 3: Get an API key

This step only goes through the API key creation process. If you use your API key in
production, we strongly recommend that you restrict your API key. You can find more
information in the product-specific **Using API Keys** page.

The API key is a unique identifier that authenticates requests associated with your project for
usage and billing purposes. You must have at least one API key associated with your project.
To create a new key or add an API or SDK to an existing key, follow these instructions.

#### Console

1. Go to the **Google Maps Platform \> Keys \& Credentials**
   page.

   [Go to the Keys \&
   Credentials page](https://console.cloud.google.com/projectselector/google/maps-apis/credentials?utm_source=Docs_CreateAPIKey&utm_content=Docs_directions-backend)
2. If prompted, select your project.
3. Do one of the following:

   - **Create a new key**:

     1. Click **Create credentials \> API key**.
     2. In the **Create API key** panel, open the **Select API restrictions** list.
     3. Clear any APIs that this key doesn't need, and make sure **Directions API** stays selected.
     4. Click **Create**. The panel displays your new API key.
   - **Use an existing key**:

     1. Click the name of the key.
     2. In the **Select API restrictions** list, select **Directions API**.
     3. Click **Save**.

   Selecting an API here doesn't enable it. Make sure
   Directions API is enabled on its
   [API Library page](https://console.cloud.google.com/apis/library/directions-backend.googleapis.com).
4. To see the key string later, go to the **Keys \& Credentials** page and click **Show key** for the key.

If the console looks different from these steps, see
[Create an API key](https://cloud.google.com/docs/authentication/api-keys#create) and
[Add API restrictions](https://cloud.google.com/docs/authentication/api-keys#adding-api-restrictions) in the Google Cloud documentation.

#### Cloud SDK

Replace <var translate="no">PROJECT_ID</var> with your project ID in the following
commands.

- **Create a new key** : Run the following command, and
  replace <var translate="no">DISPLAY_NAME</var> with a name for the key.

  ```bash
  gcloud services api-keys create \
      --project="PROJECT_ID" \
      --display-name="DISPLAY_NAME" \
      --api-target=service=directions-backend.googleapis.com
  ```

  Read more about the [Google Cloud SDK](https://cloud.google.com/sdk), [Cloud SDK installation](https://cloud.google.com/sdk/docs/install), and the following commands:
  - [`gcloud services api-keys create`](https://cloud.google.com/sdk/gcloud/reference/services/api-keys/create)
- **Use an existing key** : Run the following command, and
  replace <var translate="no">KEY_ID</var> with the ID of the key.
  The `--append` flag keeps
  the APIs that the key already allows. Without it, the command replaces
  them.

  ```bash
  gcloud services api-keys update KEY_ID \
      --project="PROJECT_ID" \
      --append \
      --api-target=service=directions-backend.googleapis.com
  ```

  Read more about the [Google Cloud SDK](https://cloud.google.com/sdk), [Cloud SDK installation](https://cloud.google.com/sdk/docs/install), and the following commands:
  - [`gcloud services api-keys update`](https://cloud.google.com/sdk/gcloud/reference/services/api-keys/update)
  - [`gcloud services api-keys list`](https://cloud.google.com/sdk/gcloud/reference/services/api-keys/list)

  The key ID isn't the key string or display name. To find it, run
  `gcloud services api-keys list --project="PROJECT_ID"`.
  The ID is the last part of
  the `name` field:
  `projects/PROJECT_NUMBER/locations/global/keys/KEY_ID`.

To see the key string, run
`gcloud services api-keys get-key-string KEY_ID
--project="PROJECT_ID"`.

## Getting directions

To receive driving directions from Disneyland to Universal Studios, Hollywood in
JSON format, enter the URL into your web browser, and replace
<var translate="no">YOUR_API_KEY</var> with your API key:

```
https://maps.googleapis.com/maps/api/directions/json?origin=Disneyland&destination=Universal+Studios+Hollywood&key=YOUR_API_KEY
```

You should receive the following JSON response:

```
    {
       "geocoded_waypoints" : [
          {
             "geocoder_status" : "OK",
             "place_id" : "ChIJRVY_etDX3IARGYLVpoq7f68",
             "types" : [
                "bus_station",
                "transit_station",
                "point_of_interest",
                "establishment"
             ]
          },
          {
             "geocoder_status" : "OK",
             "partial_match" : true,
             "place_id" : "ChIJp2Mn4E2-woARQS2FILlxUzk",
             "types" : [ "route" ]
          }
       ],
       "routes" : [
          {
             "bounds" : {
                "northeast" : {
                   "lat" : 34.1330949,
                   "lng" : -117.9143879
                },
                "southwest" : {
                   "lat" : 33.8068768,
                   "lng" : -118.3527671
                }
             },
             "copyrights" : "Map data ©2016 Google",
             "legs" : [
                {
                   "distance" : {
                      "text" : "35.9 mi",
                      "value" : 57824
                   },
                   "duration" : {
                      "text" : "51 mins",
                      "value" : 3062
                   },
                   "end_address" : "Universal Studios Blvd, Los Angeles, CA 90068, USA",
                   "end_location" : {
                      "lat" : 34.1330949,
                      "lng" : -118.3524442
                   },
                   "start_address" : "Disneyland (Harbor Blvd.), S Harbor Blvd, Anaheim, CA 92802, USA",
                   "start_location" : {
                      "lat" : 33.8098177,
                      "lng" : -117.9154353
                   },

      ... Additional results shortened in this example[] ...


             "overview_polyline" : {
                "points" : "knjmEnjunUbKCfEA?_@]@kMBeE@qIIoF@wH@eFFk@WOUI_@?u@j@k@`@EXLTZHh@Y`AgApAaCrCUd@cDpDuAtAoApA{YlZiBdBaIhGkFrDeCtBuFxFmIdJmOjPaChDeBlDiAdD}ApGcDxU}@hEmAxD}[tt@yNb\\yBdEqFnJqB~DeFxMgK~VsMr[uKzVoCxEsEtG}BzCkHhKWh@]t@{AxEcClLkCjLi@`CwBfHaEzJuBdEyEhIaBnCiF|K_Oz\\
                {MdZwAbDaKbUiB|CgCnDkDbEiE|FqBlDsLdXqQra@kX|m@aF|KcHtLm@pAaE~JcTxh@w\\`v@gQv`@}F`MqK`PeGzIyGfJiG~GeLhLgIpIcE~FsDrHcFfLqDzH{CxEwAbBgC|B}F|DiQzKsbBdeA{k@~\\oc@bWoKjGaEzCoEzEwDxFsUh^wJfOySx[uBnCgCbCoFlDmDvAiCr@eRzDuNxC_EvAiFpCaC|AqGpEwHzFoQnQoTrTqBlCyDnGmCfEmDpDyGzGsIzHuZzYwBpBsC`CqBlAsBbAqCxAoBrAqDdDcNfMgHbHiPtReBtCkD|GqAhBwBzBsG~FoAhAaCbDeBvD_BlEyM``@uBvKiA~DmAlCkA|B}@lBcChHoJnXcB`GoAnIS~CIjFDd]A|QMlD{@jH[vAk@`CoGxRgPzf@aBbHoB~HeMx^eDtJ}BnG{DhJU`@mBzCoCjDaAx@mAnAgCnBmAp@uAj@{Cr@wBPkB@kBSsEW{GV}BEeCWyAWwHs@qH?
                cIHkDXuDn@mCt@mE`BsH|CyAp@}AdAaAtAy@lBg@pCa@jE]fEcBhRq@pJKlCk@hLFrB@lD_@xCeA`DoBxDaHvM_FzImDzFeCpDeC|CkExDiJrHcBtAkDpDwObVuCpFeCdHoIl\\uBjIuClJsEvMyDbMqAhEoDlJ{C|J}FlZuBfLyDlXwB~QkArG_AnDiAxC{G|OgEdLaE`LkBbEwG~KgHnLoEjGgDxCaC`BuJdFkFtCgCnBuClD_HdMqEzHcBpB_C|BuEzCmPlIuE|B_EtDeBhCgAdCw@rCi@|DSfECrCAdCS~Di@jDYhA_AlC{AxCcL`U{GvM_DjFkBzBsB`BqDhBaEfAsTvEmEr@iCr@qDrAiFnCcEzCaE~D_@JmFdGQDwBvCeErEoD|BcFjC}DbEuD~D`@Zr@h@?d@Wr@}@vAgCbEaHfMqA`Cy@dAg@bAO`@gCi@w@W"
             },
             "summary" : "I-5 N and US-101 N",
             "warnings" : [],
             "waypoint_order" : []
          }
       ],
       "status" : "OK"
    }
```

**Congratulations!** You've successfully set up and called the
Directions API (Legacy) to receive directions.

## Cleaning up

You can delete your Google Cloud project to stop billing for all the resources used
within that project.

> [!CAUTION]
> **Caution** : Deleting a project has the following effects:
>
> - Everything in the project is deleted. If you used an existing project for this tutorial, when you delete it, you also delete any other work you've done in the project.
> - Custom project IDs are lost. When you created this project, you may have created a custom project ID that you want to use in the future. To preserve the URLs that use the project ID, such as an appspot.com URL, delete selected resources inside the project instead of deleting the whole project.

1. In the Google Cloud console, go to the **Manage resources** page:

   [Go to the Manage resources page](https://console.cloud.google.com/iam-admin/projects)
2. If the project that you plan to delete is attached to an organization, select and expand the organization list at the top of the page.
3. In the project list, select the project that you want to delete and click **Delete**.
4. In the dialog, type the project ID and click **Shut down** to delete the project.

## Next steps

- Start developing with the Directions API (Legacy) by setting up your
  Google Cloud project:

  [Set up in Cloud console](https://developers.google.com/maps/documentation/directions/cloud-setup.md.txt)
- For a list of all parameters when building your Directions API (Legacy) HTTP
  request:

  [Getting directions](https://developers.google.com/maps/documentation/directions/get-directions.md.txt)
- Learn how to code with our client libraries that provide simple,
  native implementations of common tasks such as authentication, request
  throttling and automatic retry. The Directions API (Legacy) is
  available in the [Java Client,
  Python Client, Go Client and Node.js Client for Google Maps Services](https://developers.google.com/maps/documentation/directions/client-library).