GraphHopper
DATA · DATA & ANALYTICS
Routing, geocoding, distance matrices, isochrones, and route optimization on their own key.
Connect GraphHopper with Fabriq Developer
Your user pastes their GraphHopper credential on a page Agentic Fabriq hosts, so it never reaches your backend and never becomes one shared key across all of your users. Same call as OAuth, one more argument.
Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.
Connecting GraphHopper in practice
GraphHopper bills in credits computed from the size of the problem rather than the number of calls: an isochrone costs 2 credits per minute explored with a minimum of 10, a matrix costs the smaller of origins × destinations ÷ 2 and max(origins, destinations) × 10, and asking a route for optimize=true multiplies its cost by ten. X-RateLimit-Remaining is reported before the current request is charged, so the real balance is Remaining minus X-RateLimit-Credits.
Rate limits
- The credit budget is daily: X-RateLimit-Limit is the daily credit limit and X-RateLimit-Reset the seconds until the counter resets. The FAQ names 15,000 credits a day on Standard and 50,000 on Premium.
- Routing: 1 credit for 2–10 locations, locations ÷ 10 above that, +1 for alternative routes, 2 for a round trip, and 10× the standard cost with optimize=true.
- Matrix: the smaller of (origins × destinations ÷ 2) and (max(origins, destinations) × 10), minimum 1 credit per request.
- Route Optimization: vehicles × locations, minimum 10 and maximum 10 × locations, plus 0.3 credits for each GET of the solution.
- Isochrone: 2 credits per minute explored, minimum 10. Map Matching: input locations ÷ 50, minimum 1. Geocoding: 0.3 credits by default, 0.9 with Nominatim, NetToolkit or OpenCageData.
- Cluster: customers × 10 with a minimum of 10, or 1 credit per customer with the as_the_crow_flies profile.
Worth knowing
- A 429 means either the daily or the per-minute limit is exhausted and the response does not say which, so backoff has to assume the longer of the two.
- The Geocoding response uses point.lng while the Route Optimization request expects lon, so coordinates have to be renamed between the two calls in GraphHopper’s own documented delivery workflow.
- Cost is a function of input size, so a badly filtered stop list does not just run slower — it is priced higher, and a matrix grows quadratically until the ×10 cap kicks in.
- A custom routing profile has restricted geographic coverage and the maximum coverage depends on the plan, so the same profile definition is not portable between accounts.
Checked against GraphHopper Directions API (2026-09-29), What is one credit? (2026-09-29)
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
Often connected alongside
Put GraphHopper behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.