Store locator
on my website
Address autocomplete
in form / checkout
Route optimizer
multi-stop delivery
Delivery zone check
at checkout
Verify agent visit
proof of location
Google Maps bill
too high, want out
Mapsi API
what you actually need
Multi-stop routing API. Send up to 25 waypoints and get back total distance, duration, per-leg breakdown, and a GeoJSON LineString of the full route.
integration path
1
Create a free Mapsi account
Route API is available on all plans. Free tier rate limit: 2 req/sec, 1,000 calls/day.
2
Geocode your stop addresses if you only have strings
GET /v1/geocode?q={address} — cache the results. Don't re-geocode on every dispatch run.
3
POST your waypoints to /v1/route
Send an ordered array of {lat, lon} stops — first is origin, last is destination. Add 'mode' for bike or pedestrian routing.
4
Use the response to guide your drivers
result.polyline is a GeoJSON LineString — pass it directly to MapLibre. result.legs gives per-segment distance and time.
integration guide
// Multi-stop delivery route
const res = await fetch('https://mapsi.dev/v1/route', {
method: 'POST',
headers: { 'X-API-Key': 'YOUR_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({
waypoints: [
{ lat: 12.9716, lon: 77.5946 }, // depot
{ lat: 12.9611, lon: 77.6413 }, // stop 1
{ lat: 12.9342, lon: 77.6195 }, // stop 2
{ lat: 12.9780, lon: 77.5730 } // stop 3
],
mode: 'auto', // or 'motor_scooter', 'bicycle', 'pedestrian'
units: 'km'
})
});
const data = await res.json();
console.log(data.distance_km); // 18.4
console.log(data.duration_sec); // 2340
// Per-leg breakdown
data.legs.forEach((leg, i) => {
console.log(`Leg ${i+1}: ${leg.distance_km}km, ${leg.duration_sec}s`);
});
// GeoJSON geometry — pass directly to MapLibre
// map.addSource('route', { type: 'geojson', data: data.polyline })
Watch out: Max 25 waypoints per request. For larger delivery runs, split into batches of 25 and chain the routes. Also note: /v1/route returns the ordered route as-given — it does not reorder stops for you. For optimal ordering you need the Matrix API.
1 API call per route. A fleet of 20 drivers at 2 runs/day = 40 calls/day — negligible. Growth plan covers 35,000 calls/day.