Validate, geocode, and enrich US addresses with census tract, FEMA flood zone, and timezone — from a free API key. 198M addresses. Under 5ms.
Not just valid or invalid — a complete data package. Every address comes back verified, geocoded, and enriched with 8 fields. Ready for compliance, routing, risk scoring, or any workflow that needs to act on a location.
No SDK to install, no OAuth dance, no configuration files. One HTTPS request from any language, any country. If you can call a REST API, you're ready in minutes.
Pure REST + JSON. No SDK, no configuration, no query language to learn. Send a street address, get back county code, census tract, coordinates, flood zone, timezone, and confidence score — every time, from any stack.
# Verify and enrich an address curl "https://geoclear.io/api/address\ ?street=350+Fifth+Ave\ &city=New+York&state=NY" \ -H "X-Api-Key: gc_live_your_key" # Autocomplete as user types curl "https://geoclear.io/api/suggest\ ?q=350+fifth&state=NY&limit=5" \ -H "X-Api-Key: gc_live_your_key" # Bulk verify up to 1000 addresses curl -X POST "https://geoclear.io/api/address/bulk" \ -H "X-Api-Key: gc_live_your_key" \ -H "Content-Type: application/json" \ -d '{"addresses":[...]}'
// npm install node-fetch (or use built-in fetch) const GC_KEY = process.env.GC_API_KEY; async function verifyAddress(street, city, state) { const url = `https://geoclear.io/api/address ?street=${encodeURIComponent(street)} &city=${encodeURIComponent(city)} &state=${state}`; const res = await fetch(url, { headers: { 'X-Api-Key': GC_KEY } }); return res.json(); } const result = await verifyAddress( '350 Fifth Ave', 'New York', 'NY' ); console.log(result.county_fips); // "36061"
import requests, os GC_KEY = os.environ["GC_API_KEY"] def verify_address(street, city, state): resp = requests.get( "https://geoclear.io/api/address", params={ "street": street, "city": city, "state": state }, headers={"X-Api-Key": GC_KEY} ) resp.raise_for_status() return resp.json() data = verify_address("350 Fifth Ave", "New York", "NY") print(data["census_tract"]) # "010700"
{ "ok": true, "address": "350 5th Ave", "city": "New York", "state": "NY", "zip": "10118", "county": "New York", "county_fips": "36061", "census_tract": "010700", "lat": 40.7484, "lon": -73.9967, "timezone": "America/New_York", "fema_zone": "X", "plus4": "1901", "rdi": "Commercial", "confidence": 97, "status": "verified" }
Search any US address. Results are live — served directly from production, showing exactly what your application would receive.
Every lookup returns a complete intelligence package — not just whether an address exists, but everything your product needs to act on it. No extra calls, no joins, no lookups.
Start free. Scale as you grow. No per-seat fees, no setup costs, no long-term contracts. USD pricing — open to teams anywhere in the world.
Manual flood zone determination costs $3–$15 per address. GeoClear Professional includes unlimited flood zone lookups for $249/mo.
Need unpredictable volume? Pay-as-you-go at $0.001/lookup — no monthly commitment.
Every enrichment field is sourced from authoritative federal datasets — auditable, FOIA-accessible, and used as primary sources by FEMA, USPS, and the Census Bureau themselves.
The only address API that includes FEMA flood zone and census tract — free, on every plan.
| GeoClear | SmartyStreets | Lob | Melissa | |
|---|---|---|---|---|
| FEMA flood zone | ✓ Free | ✗ | ✗ | ✗ |
| Census tract (HMDA) | ✓ Free | ✗ | ✗ | Add-on |
| Address validation | ✓ | ✓ | ✓ | ✓ |
| County FIPS | ✓ Free | ✓ | ✗ | ✓ |
| Residential / commercial flag | ✓ Free | ✓ | ✗ | ✓ |
| Free tier | 10K / mo | 250 / mo | None | None |
| Starting price | $49 / mo | $299 / mo | $75 / mo | $499 / mo |
Used by teams in insurance, logistics, fintech, and real estate — building on US location data from anywhere in the world. Free tier: 10,000 lookups/month. No credit card. No lock-in.