# GraphHopper Directions API API

> GraphHopper Directions API API on Apizie: 16 endpoints (POST Cluster Endpoint, Batch Cluster Endpoint, GET Batch Solution Endpoint, Geocoding Endpoint, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://zieapi.vercel.app/v1/places:graphhopper/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `places:graphhopper`
- Category: Places
- Status: byok
- Source: https://www.graphhopper.com/
- Page: https://zieapi.vercel.app/api/places/graphhopper
- OpenAPI: https://zieapi.vercel.app/api/places/graphhopper/openapi.json

With the [GraphHopper Directions API](https://www.graphhopper.com/products/) you can integrate A-to-B route planning, turn-by-turn navigation, route optimization, isochrone calculations and other tools in your…

## Endpoints

### POST Cluster Endpoint
`POST https://zieapi.vercel.app/v1/places:graphhopper/solve-clustering-problem` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### Batch Cluster Endpoint
`POST https://zieapi.vercel.app/v1/places:graphhopper/async-clustering-problem` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### GET Batch Solution Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-cluster-solution` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| jobId | string | yes | Request solution with jobId |

### Geocoding Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-geocode` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| q | string | no | If you do forward geocoding, this is `required` and is a textual description of the address you are looking for. |
| locale | string | no | Display the search results for the specified locale. Currently French (fr), English (en), German (de) and Italian (it) are supported. If… |
| limit | integer | no | Specify the maximum number of results to return |
| reverse | boolean | no | It is `required` to be `true` if you want to do a reverse geocoding request. If it is `true`, `point` must be defined as well, and `q`… |
| debug | boolean | no | If `true`, the output will be formatted. |
| point | string | no | _Forward geocoding_: The location bias in the format 'latitude,longitude' e.g. point=45.93272,11.58803. _Reverse geocoding_: The location… |
| provider | string | no | The provider parameter is currently under development and can fall back to `default` at any time. The intend is to provide alternatives to… |

### Isochrone Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-isochrone` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| point | string | yes | Specify the start coordinate |
| time_limit | integer | no | Specify which time the vehicle should travel. In seconds. |
| distance_limit | integer | no | Specify which distance the vehicle should travel. In meters. |
| vehicle | string | no | The vehicle profile for which the route should be calculated. |
| buckets | integer | no | Number by which to divide the given `time_limit` to create `buckets` nested isochrones of time intervals… |
| reverse_flow | boolean | no | If `false` the flow goes from point to the polygon, if `true` the flow goes from the polygon "inside" to the point. Example use case for… |
| weighting | string | no | Use `"shortest"` to get an isodistance line instead of an isochrone. |

### Map-match a GPX file
`POST https://zieapi.vercel.app/v1/places:graphhopper/post-gpx` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| gps_accuracy | integer | no | Specify the precision of a point, in meter |
| vehicle | string | no | Specify the vehicle profile like car |

### GET Matrix Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-matrix` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| point | array | no | Specify multiple points in `latitude,longitude` for which the weight-, route-, time- or distance-matrix should be calculated. In this case… |
| from_point | array | no | The starting points for the routes in `latitude,longitude`. E.g. if you want to calculate the three routes A-&gt;1, A-&gt;2, A-&gt;3 then… |
| to_point | array | no | The destination points for the routes in `latitude,longitude`. |
| point_hint | array | no | Optional parameter. Specifies a hint for each `point` parameter to prefer a certain street for the closest location lookup. E.g. if there… |
| from_point_hint | array | no | For the from_point parameter. See point_hint |
| to_point_hint | array | no | For the to_point parameter. See point_hint |
| snap_prevention | array | no | Optional parameter to avoid snapping to a certain road class or road environment. Current supported values `motorway`, `trunk`, `ferry`,… |
| curbside | array | no | Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via… |
| from_curbside | array | no | Curbside setting for the from_point parameter. See curbside. |
| to_curbside | array | no | Curbside setting for the to_point parameter. See curbside. |
| out_array | array | no | Specifies which arrays should be included in the response. Specify one or more of the following options 'weights', 'times', 'distances'.… |
| vehicle | string | no | The vehicle profile for which the matrix should be calculated. |
| fail_fast | boolean | no | Specifies whether or not the matrix calculation should return with an error as soon as possible in case some points cannot be found or… |
| turn_costs | boolean | no | Specifies if turn restrictions should be considered. Enabling this option increases the matrix computation time. Only supported for motor… |

### POST Matrix Endpoint
`POST https://zieapi.vercel.app/v1/places:graphhopper/post-matrix` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | JSON request body |

### Batch Matrix Endpoint
`POST https://zieapi.vercel.app/v1/places:graphhopper/calculate-matrix` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | JSON request body |

### GET Batch Matrix Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-matrix-solution` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| jobId | string | yes | Request solution with jobId |

### GET Route Endpoint
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-route` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| point | array | yes | The points for which the route should be calculated. Format: `[latitude,longitude]`. Specify at least an origin and a destination. Via… |
| point_hint | array | no | The `point_hint` is typically a road name to which the associated `point` parameter should be snapped to. Specify no `point_hint`… |
| snap_prevention | array | no | Optional parameter to avoid snapping to a certain road class or road environment. Currently supported values are `motorway`, `trunk`,… |
| vehicle | string | no | The vehicle profile for which the route should be calculated. |
| curbside | array | no | Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via… |
| turn_costs | boolean | no | Specifies if turn restrictions should be considered. Enabling this option increases the route computation time. Only supported for motor… |
| locale | string | no | The locale of the resulting turn instructions. E.g. `pt_PT` for Portuguese or `de` for German. |
| elevation | boolean | no | If `true`, a third coordinate, the altitude, is included with all positions in the response. This changes the format of the `points` and… |
| details | array | no | Optional parameter to retrieve path details. You can request additional details for the route: `street_name`, `time`, `distance`,… |
| optimize | string | no | Normally, the calculated route will visit the points in the order you specified them. If you have more than two points, you can set this… |
| instructions | boolean | no | If instructions should be calculated and returned |
| calc_points | boolean | no | If the points for the route should be calculated at all. |
| debug | boolean | no | If `true`, the output will be formatted. |
| points_encoded | boolean | no | Allows changing the encoding of location data in the response. The default is polyline encoding, which is compact but requires special… |
| ch.disable | boolean | no | Use this parameter in combination with one or more parameters from below. |
| weighting | string | no | Determines the way the "best" route is calculated. Besides `fastest` you can use `short_fastest` which finds a reasonable balance between… |
| heading | array | no | Favour a heading direction for a certain point. Specify either one heading for the start point or as many as there are points. In this… |
| heading_penalty | integer | no | Time penalty in seconds for not obeying a specified heading. Requires `ch.disable=true`. |
| pass_through | boolean | no | If `true`, u-turns are avoided at via-points with regard to the `heading_penalty`. Requires `ch.disable=true`. |
| block_area | string | no | Block road access by specifying a point close to the road segment to be blocked, with the format `lat,lon`. You can also block all road… |
| avoid | string | no | Specify which road classes and environments you would like to avoid. Possible values are `motorway`, `steps`, `track`, `toll`, `ferry`,… |
| algorithm | string | no | Rather than looking for the shortest or fastest path, this parameter lets you solve two different problems related to routing: With… |
| round_trip.distance | integer | no | If `algorithm=round_trip`, this parameter configures approximative length of the resulting round trip. Requires `ch.disable=true`. |
| round_trip.seed | integer | no | If `algorithm=round_trip`, this sets the random seed. Change this to get a different tour for each value. |
| alternative_route.max_paths | integer | no | If `algorithm=alternative_route`, this parameter sets the number of maximum paths which should be calculated. Increasing can lead to worse… |
| alternative_route.max_weight_factor | number | no | If `algorithm=alternative_route`, this parameter sets the factor by which the alternatives routes can be longer than the optimal route.… |
| alternative_route.max_share_factor | number | no | If `algorithm=alternative_route`, this parameter specifies how similar an alternative route can be to the optimal route. Increasing can… |

### POST Route Endpoint
`POST https://zieapi.vercel.app/v1/places:graphhopper/post-route` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | JSON request body |

### Coverage information
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-route-info` (byok)

### POST route optimization problem
`POST https://zieapi.vercel.app/v1/places:graphhopper/solve-vrp` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### POST route optimization problem (batch mode)
`POST https://zieapi.vercel.app/v1/places:graphhopper/async-vrp` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | yes | JSON request body |

### GET the solution (batch mode)
`GET https://zieapi.vercel.app/v1/places:graphhopper/get-solution` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| jobId | string | yes | Request solution with jobId |

## Example
```
curl "https://zieapi.vercel.app/v1/places:graphhopper/solve-clustering-problem" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the GraphHopper Directions API API?
Create a free Apizie key, then send POST https://zieapi.vercel.app/v1/places:graphhopper/solve-clustering-problem with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the GraphHopper Directions API API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. GraphHopper Directions API itself also needs your own key from graphhopper.com.

### Can AI agents use the GraphHopper Directions API API?
Yes. Add the Apizie MCP server (https://zieapi.vercel.app/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key places:graphhopper.

### What is the status of the GraphHopper Directions API API?
Needs your own provider key (bring your own key)
