Address Tools

Validate, parse, normalize, standardize, interpolate, compare — plus timezone & distance utilities

17
Endpoints
ML
Address parser
744M+
Reference addresses

What's in the toolbox

Validate

Check whether an address resolves to a real, geocodable location. Returns yes/no plus the matched record. Single (GET /v1/validate) or batch (POST).

Parse

Break a free-form address string into structured components — house number, street, city, state, postcode — using a machine-learned address parser trained on OpenStreetMap-derived data.

Normalize

Clean a raw address before you store or geocode it. Returns USPS Publication 28 parts — house number, predirectional, street name, suffix, postdirectional, unit, city, state, ZIP, ZIP+4 — directionals as N S E W NE NW SE SW and suffixes as ST AVE BLVD …, plus a one-line formatted address and a changed flag with the list of fixes. Invalid ZIPs, invalid states and oversize fields are flagged in a warnings list and never altered, and one bad row never fails a batch. Parse-only: no geocoding, no database lookup, never invents a house number. GET /v1/normalize or POST /v1/normalize (up to 1,000 addresses). Docs and examples.

Standardize

Normalize an address to canonical form: USPS-style abbreviations, casing, ordering. Useful for deduplication and matching.

Compare

Score the similarity between two addresses (0-1). Handles abbreviation variance, typos, and formatting differences. POST /v1/addresses/compare.

Cross-Street

Find the nearest cross-street to a coordinate. GET /v1/addresses/crossstreet?lat=...&lng=.... Useful for navigation hints and dispatch logic.

Interpolate

Estimate a house-number coordinate by interpolating from known address-range data. GET /v1/addresses/interpolate?q=.... Falls through to the ML address parser for free-form input.

Timezone & Distance

GET /v1/timezone?lat=...&lng=... returns the IANA timezone for a coordinate. GET /v1/distance calculates Haversine distance between two points (km/miles).

Address discovery

/addresses/{nearby,street,stats,random} — find addresses near a point, list addresses on a street + postcode, get coverage stats per country, sample random addresses for testing.

All 17 Endpoints

MethodEndpointDescription
GET/v1/validateValidate a single address
POST/v1/validateBatch validate addresses
GET/v1/parseParse a free-form address
POST/v1/parseBatch parse addresses
GET/v1/normalizeNormalize an address to USPS Pub 28 parts (parse-only)
POST/v1/normalizeBatch normalize up to 1,000 addresses
GET/v1/standardizeNormalize an address to canonical form
POST/v1/addresses/compareCompare two addresses for similarity
GET/v1/addresses/nearbyFind addresses within radius of a coordinate
GET/v1/addresses/streetList addresses on a given street + postcode
GET/v1/addresses/randomRandom sample of addresses (testing)
GET/v1/addresses/statsAddress-database statistics
GET/v1/addresses/interpolateInterpolate a coordinate from address-range data
GET/v1/addresses/crossstreetFind the cross-street nearest to a coordinate
GET/v1/timezoneIANA timezone for a coordinate
GET/v1/distanceHaversine distance between two coordinates
GET/v1/postcodePostcode-only address lookup

Examples

Parse a free-form address

GET /v1/parse?q=1600+Pennsylvania+Ave+NW+Washington+DC&api_key={key}

Response:
{
  "components": {
    "house_number": "1600",
    "road":         "pennsylvania ave nw",
    "city":         "washington",
    "state":        "dc"
  }
}

Find the cross-street nearest to a coordinate

GET /v1/addresses/crossstreet?lat=40.7580&lng=-73.9855&radius=300&api_key={key}

Response:
{
  "intersections": [
    { "street_a": "W 47th St", "street_b": "7th Ave", "lat": 40.758, "lng": -73.985 }
  ]
}