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
Address autocomplete endpoint. Returns ranked suggestions as the user types — attach to any text input with a debounced fetch call.
integration path
1
Create a free Mapsi account
Free tier: 1,000 calls/day. At ~5 calls per address typed, that covers 200 form fills/day before needing Growth plan.
2
Call GET /v1/autocomplete on keyup
Pass the partial text as the 'text' param (minimum 2 chars). Returns up to 5 ranked suggestions each with label, lat, lon.
3
Debounce at 300ms
Don't fire on every keystroke. Wait 300ms after typing stops. Cuts your call volume by ~70% with no UX impact.
4
Store lat/lon from the selected result
When user picks a suggestion, save suggestion.lat and suggestion.lon — not just the label string. You'll need coordinates for everything downstream.
integration guide
// Debounced address autocomplete
let timer;
document.getElementById('address-input').addEventListener('input', (e) => {
clearTimeout(timer);
timer = setTimeout(async () => {
const text = e.target.value;
if (text.length < 2) return;
const res = await fetch(
`https://mapsi.dev/v1/autocomplete?text=${encodeURIComponent(text)}&limit=5`,
{ headers: { 'X-API-Key': 'YOUR_KEY' } }
);
const { suggestions } = await res.json();
// suggestions → [{ text: 'MG Road, Bengaluru', lat, lon }, ...]
renderDropdown(suggestions);
}, 300);
});
// When user selects a suggestion:
function onSelect(suggestion) {
document.getElementById('address-input').value = suggestion.text;
// Critical: always store coordinates, not just the label
saveToState({ address: suggestion.text, lat: suggestion.lat, lon: suggestion.lon });
clearDropdown();
}
Watch out: The response field is 'text', not 'label', and coordinates use 'lat'/'lon' not 'lat'/'lng'. Check the exact response shape — a mismatched field name is the #1 integration bug.
~3–8 calls per address typed with 300ms debounce. Budget ~5 calls per form submission. Growth plan covers 35,000 calls/day.