Snap noisy GPS traces onto the real road network — clean geometry, accurate mileage, zero infrastructure.
Built on OSRM's map matching service.
✅ No credit card required 🇪🇺 Hosted in the EU 🔓 Open source, no lock-in
Get Free API KeyAlways free for small projects. $10/mo covers most apps
GPS traces are noisy — a phone or telematics device reports points a few meters off the actual road, especially in cities or under tree cover. Map matching takes a sequence of timestamped GPS points and snaps them onto the real road network, returning a clean route geometry plus a confidence score for how well the trace matched. Feed it raw coordinates, get back the road a vehicle actually drove on.
A noisy 6-point GPS trace along Fifth Avenue, Manhattan — snapped onto the road network in real time.
# timestamps are semicolon-separated, one per coordinate, strictly increasing
curl "https://api.simplerouting.io/osrm/match/v1/driving/-73.9819,40.7614;-73.9803,40.7592;-73.9786,40.7569;-73.9769,40.7547;-73.9752,40.7524;-73.9735,40.7501?timestamps=1700000000;1700000030;1700000060;1700000090;1700000120;1700000150&geometries=geojson&radiuses=25;25;25;25;25;25" \
-H "Authorization: Bearer 988b35cc-6183-4922-bbc0-857e1a1d318d"
This is a live demo with a real API key (feel free to steal it).
Send a sequence of lon,lat coordinates plus a matching timestamps array (seconds, strictly increasing). Works with GPS logs from phones, dashcams, or telematics hardware.
Get back the actual road geometry the trace most likely followed, plus per-leg duration and distance — ready to store or display.
Each match includes a confidence value (0–1) so you can flag low-quality traces — sparse GPS logs or trips through tunnels and parking garages — for review.
Turn raw telematics GPS logs into accurate per-state mileage for IFTA and fuel-tax reporting, instead of estimating from noisy raw coordinates.
Show exactly which roads a driver used to complete a delivery — useful for dispute resolution and route-compliance audits.
Clean up jittery GPS traces before storing them or feeding them into downstream analytics — snap-to-road first, analyze second.
Once traces are matched to real roads, speed and route-adherence metrics are far more reliable than working from raw GPS pings.
Standard OSRM Match Service format — coordinates and timestamps as parallel arrays:
# /osrm/match/v1/{profile}/{coordinates}?timestamps={timestamps} — semicolon-separated
curl "https://api.simplerouting.io/osrm/match/v1/driving/-73.9819,40.7614;-73.9803,40.7592?timestamps=1700000000;1700000030&geometries=geojson&radiuses=25;25" \
-H "Authorization: Bearer YOUR_API_KEY"
No overages — your plan is your bill.
Hitting the limits, want more countries, or need a bespoke solution? Email [email protected] — we'll figure it out.
Match requests follow the same size limits as the standard OSRM Match Service. For most fleet and delivery traces (a single trip's worth of GPS pings), you're well within range on any tier.
The match service is built to tolerate noisy or sparse traces — check the per-match confidence score in the response to identify traces that need a closer look.
Yes. /match/v1/{profile}/{coordinates}?timestamps={timestamps} — if you're already calling a self-hosted OSRM instance, switching is a one-line URL change plus an Authorization header.