Comparison
GraphHopper or us — two OpenStreetMap routing APIs, priced very differently
GraphHopper and this API have more in common than either has with Google. Both route on OpenStreetMap data, both are open about not having live traffic, and both exist because the incumbent’s per-element price is hard to justify for work that does not need it.
So this is not a comparison about quality of data. It is about the shape of the bill, and about which one of us is already speaking the protocol your code speaks.
| Feature | WayMatrix | GraphHopper |
|---|---|---|
| How you buy it | A monthly allowance of elements | A plan with a daily credit ceiling |
| This is the difference that matters and every other row follows from it. You cannot buy more credits for a day; you buy a plan whose daily ceiling you either fit under or you do not. | ||
| What a matrix costs | One element per pair | origins × destinations ÷ 2 credits |
| Both are element-shaped underneath. A 30 × 40 matrix is 1,200 elements here and 400 credits there — their own worked example. | ||
| Entry paid plan | $29 / month | €69 / month |
| Their Basic plan allows 5,000 credits a day, and caps a matrix at 30 locations. Ours is a monthly element allowance with no per-day ceiling. | ||
| Matrix size per call | 2,500 on the free tier, up to 90,000 on paid | 30 to 200 locations, by plan |
| Ours is per tier too — 50 by 50 free, and the full figure on paid tiers. Their location limit rises with the plan and reaches 10,000 on a custom agreement. Below that, a large matrix is a plan upgrade rather than a bigger request. | ||
| Free tier | 250,000 elements / month | 500 credits / day, 5 locations |
| Five locations is a 5 × 5 matrix. It is a place to check that the API responds, not a place to evaluate it against your data. | ||
| Live traffic | No | No — historic, via a paid add-on |
| Their TomTom add-on uses historical traffic patterns and is arranged separately. Neither of us is the right answer for tracking a driver in real time. | ||
| Road data | OpenStreetMap, build date in every response | OpenStreetMap |
| Storing results | Keep them, indefinitely | Client-side, temporarily |
| Their terms permit temporary caching in a browser or mobile app and require a custom agreement to redistribute. Their terms were last revised in 2021. Ours has one caveat we would rather state here than in a footnote: internal storage and use are unconditionally fine, but a database you assemble from these results and then publicly redistribute may itself carry the ODbL's share-alike obligation. | ||
| Coverage | North America | Global |
| Geocoding included | No — bring coordinates | Yes |
| Route optimization | Not yet | Yes, and it is their strength |
| Vehicle routing is what GraphHopper is best known for and they have been at it far longer than we have. If that is the problem you are solving, start there. | ||
Figures checked against GraphHopper's own published pages on 2 September 2026. Their prices are quoted in euros; we have not converted them, because an exchange rate is not a price.
Checked against 4 published sources on · re-check before
- GraphHopper pricing
- GraphHopper — what is one credit? Last modified February 2026. The credit formula below is quoted from it.
- GraphHopper terms of service Version 9, dated August 2021. The caching clause we quote is five years old, which is itself worth knowing.
- GraphHopper — traffic data
Which of us you should buy
Choose GraphHopper if…
- You route outside North America. They are global and we are one continent. That is the shortest version of this whole page.
- You want route optimization from the same vendor. Vehicle routing is their long suit, it is mature, and buying it alongside routing from one company is a real simplification.
- You need geocoding in the same bill. They have it. We deliberately do not, and we are not going to pretend that is a feature for everyone.
- A daily ceiling suits your traffic better than a monthly one. If your load is even, a daily cap is perfectly comfortable and can be cheaper. It is spiky workloads that it punishes.
Come to us if…
- Your usage is spiky. A month-end batch that needs ten times an ordinary day's volume fits a monthly allowance and breaks a daily ceiling. You would be buying a plan sized for your worst day, every day.
- You want one large matrix rather than a bigger plan. Our per-request ceiling comes from the tier, not from a location count that steps up through four price points.
- You need to keep what you computed. Store the durations, build your own tables, keep them as long as you like. Their terms allow temporary client-side caching and nothing more.
- You are already speaking the openrouteservice protocol. We are request- and response-compatible with it. Moving here is a base URL; moving to GraphHopper is a rewrite of the calling code.
Two honest OpenStreetMap APIs.
Neither of us has live traffic, both of us are built on the same public map, and both of us are far cheaper than the incumbent. Work out which shape of bill fits your traffic, and check the durations against your own coordinates before you decide anything.