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.