Geocoding you can keep.
Turn addresses into rooftop coordinates with honest accuracy labels, plus Census, congressional, school-district and time-zone appends. Built on public data, so every result is yours to store forever.
No card. One key for the API, the spreadsheet tool and the MCP server for agents.
Yours to keep.
The big map platforms rent you their answers: hold them for a while, then delete them or pay again. Every coordinate and district we return is yours for good, on every plan, free included.
- Day 0Geocode it
One unit per address, appends included.
- Day 1Store it
In your database, your warehouse or the spreadsheet you started with.
- Cache limitRented results end
Their caching terms run out. Delete the coordinates, or pay to look them up again.
- Month 6Build on it
Join it to your data, draw it on any map, ship it in what you sell.
- Year 2Leave
Cancel, downgrade or switch providers. Nothing to hand back.
- Year 10Still yours
Nothing to delete, nothing to geocode twice.
Showing time zone or IP results publicly? Those two ask for a one-line credit. What the licence allows · How other geocoders compare
The appends people pay for, from public data.
Ask with fields= and every result carries the geographies you would otherwise join yourself. Same lookup, same unit. One key also covers reverse, batch and IP lookups.
census
State and county FIPS, county subdivision, place, tract, block group and ZCTA. 2020 geographies on TIGER/Line 2025.
cd · stateleg
119th Congress district, state senate and house districts with names and GEOIDs.
school
Unified, elementary and secondary school districts with grade ranges.
timezone
IANA zone, current UTC offset, abbreviation and whether it observes DST.
reverse
Nearest address point within 300 m, else the nearest street, else the containing place. Distance included.
batch
Up to 10,000 addresses or points per call, results in input order, one unit each.
ip
City-level IP geolocation with country, region, time zone and the country's primary languages, so a site can talk like a local before anyone types an address.
Drop in a spreadsheet. Get it back with coordinates.
No code, no upload to our servers. The spreadsheet tool runs in your browser, geocodes in batches on your key, and hands back a CSV or Excel file with the columns you chose appended. Preview the points on a map before you download.
Open the spreadsheet toolAgents welcome.
Every endpoint is also a tool on an MCP server at mcp.geocode.net, keyed the same way. Agents get the accuracy type too, so they can tell your user when a point is interpolated.
// .mcp.json { "mcpServers": { "geocode": { "url": "https://mcp.geocode.net/mcp", "headers": { "Authorization": "Bearer YOUR_KEY" } } } }
// .cursor/mcp.json { "mcpServers": { "geocode": { "url": "https://mcp.geocode.net/mcp/k/YOUR_KEY" } } }
# tools/list, tools/call — Streamable HTTP curl https://mcp.geocode.net/mcp -H "Authorization: Bearer YOUR_KEY" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Pricing you can do in your head.
One unit per address or point, every append included, results yours to keep on every plan.
Free
- 10,000 lookups a month
- Every endpoint and append
- Spreadsheet tool and MCP
- No card
Metered
- 10,000 free each month, then metered
- No daily caps, 20 requests a second
- Batch up to 10,000 per call
- Monthly invoice, cancel any time
Unlimited
- Unlimited lookups
- Priority support by email
- For 600,000+ lookups a month
- Annual option
Compare: Google charges $5 per 1,000 after 10,000 and forbids storing results. Geocodio charges $1 per 1,000 after 2,500 a day. We charge $0.50 and let you keep everything.
One request.
The key goes in the X-API-Key header or as Authorization: Bearer. Every response carries accuracy_type.
curl "https://api.geocode.net/v1/geocode?q=1600+Pennsylvania+Ave+NW+Washington+DC&fields=census,cd,timezone" \ -H "X-API-Key: YOUR_KEY"
import requests r = requests.get("https://api.geocode.net/v1/geocode", params={"q": "1600 Pennsylvania Ave NW, Washington, DC", "fields": "census,cd"}, headers={"X-API-Key": "YOUR_KEY"}) best = r.json()["results"][0] print(best["location"], best["accuracy_type"])
const r = await fetch("https://api.geocode.net/v1/geocode?q=" + encodeURIComponent(address), { headers: { "X-API-Key": process.env.GEOCODE_KEY } }); const { results } = await r.json(); console.log(results[0].location, results[0].accuracy_type);
curl -X POST https://api.geocode.net/v1/geocode/batch -H "X-API-Key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"addresses": ["1600 Pennsylvania Ave NW, Washington DC", {"street": "1 Loockerman Plz", "city": "Dover", "state": "DE"}], "fields": "timezone"}' # results come back in input order; the response header X-Gw-Units says how many units were metered
curl "https://api.geocode.net/v1/ip?ip=8.8.8.8" -H "X-API-Key: YOUR_KEY" # {"country": {"code": "US", "name": "United States"}, "region": {"name": "California"}, "city": "Mountain View", # "location": {"lat": 37.4, "lng": -122.08}, "timezone": {"name": "America/Los_Angeles", "utc_offset": "-07:00"}, "languages": ["en", "es"]}
Questions people ask.
Where does the data come from?
Address points come from the US Department of Transportation's National Address Database, which states contribute to. Street ranges, Census geographies, legislative and school districts come from the Census Bureau's TIGER/Line files. Time zones come from the timezone-boundary-builder project. The release dates are in the API's health endpoint.
Can I store the results?
Yes, indefinitely, on every plan. The index is built from public-domain and permissively licensed sources and contains no OpenStreetMap data, so there are no share-alike terms attached to what you get back.
Which states are covered?
Street ranges cover all 50 states, DC and Puerto Rico. Rooftop address points depend on what each state has contributed to the National Address Database. Hawaii, Michigan, Mississippi, New Hampshire, Nevada and Puerto Rico currently have no state points and a few others are thin, so results there interpolate along street ranges and say so in accuracy_type.
How is this different from Google or Geocodio?
Google is excellent and expensive, and its terms forbid storing results. Geocodio pioneered honest accuracy types and appends; we offer the same shape at half the per-lookup price and a fifth of the unlimited price, with a spreadsheet tool that never uploads your file.
Is there a rate limit?
20 requests a second per key, with batch calls of up to 10,000 addresses counting as one request. Free keys are capped at 10,000 lookups a month.