BYTETOOLS

US Census Geocoder API

Free official US address geocoding API with no key or account: match addresses to coordinates and census geography, one at a time or 10,000 per batch. Tested example included.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the US Census Geocoder API?

The US Census Bureau Geocoder is a free, key-free API that matches American street addresses to coordinates using the TIGER road network. It also returns census geography — state, county, tract and block — and accepts batch files of up to 10,000 addresses at a time.

Most free geocoders throttle you at a few thousand calls a month and forbid storing the results. The Census Geocoder does neither, because it exists to support the decennial census rather than to sell an upgrade: there is no key, no account, no attribution requirement, and no restriction on keeping what it returns. For United States addresses that combination is close to unique.

What you get is a TIGER line interpolation, not a rooftop point. The response for the White House shows this clearly — the matched record covers the address range 1600 to 1698 on the left side of the block, and the coordinates are a position estimated along that segment. For routing, districting and demographic joins that is entirely adequate. For dropping a pin on a specific building, it is not, and no amount of parameter tuning will change that.

Quick facts

Base URL
https://geocoding.geo.census.gov/geocoder
Authentication
No API key, account or attribution requirement. US federal government work, in the public domain.
Rate limit
No published per-IP limit for single lookups. Batch files are capped at 10,000 addresses per submission.
Pricing
Free, with no restriction on storing or redistributing results.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the US Census Geocoder API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Geocode a US street address in one line

GET https://geocoding.geo.census.gov/geocoder/locations/onelineaddress?address=1600+Pennsylvania+Ave+NW%2C+Washington%2C+DC&benchmark=2020&format=json

curl
curl 'https://geocoding.geo.census.gov/geocoder/locations/onelineaddress?address=1600+Pennsylvania+Ave+NW%2C+Washington%2C+DC&benchmark=2020&format=json'
JavaScript (fetch)
const res = await fetch("https://geocoding.geo.census.gov/geocoder/locations/onelineaddress?address=1600+Pennsylvania+Ave+NW%2C+Washington%2C+DC&benchmark=2020&format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://geocoding.geo.census.gov/geocoder/locations/onelineaddress?address=1600+Pennsylvania+Ave+NW%2C+Washington%2C+DC&benchmark=2020&format=json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "result": {
    "input": {
      "address": {
        "address": "1600 Pennsylvania Ave NW, Washington, DC"
      },
      "benchmark": {
        "isDefault": false,
        "benchmarkDescription": "Public Address Ranges - Census 2020 Benchmark",
        "id": "2020",
        "benchmarkName": "Public_AR_Census2020"
      }
    },
    "addressMatches": [
      {
        "tigerLine": {
          "side": "L",
          "tigerLineId": "76225813"
        },
        "coordinates": {
          "x": -77.03518753691,
          "y": 38.89869893252
        },
        "addressComponents": {
          "zip": "20500",
          "streetName": "PENNSYLVANIA",
          "preType": "",
          "city": "WASHINGTON",
          "preDirection": "",
          "suffixDirection": "NW",
          "fromAddress": "1600",
          "state": "DC",
          "suffixType": "AVE",
          "toAddress": "1698",
          "suffixQualifier": "",
          "preQualifier": ""
        },
        "matchedAddress": "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC, 20500"
      }
    ]
  }
}

Parameters

ParameterTypeRequiredDescription
addressqueryRequiredThe full address as one string, for the `onelineaddress` endpoint. 1600 Pennsylvania Ave NW, Washington, DC
benchmarkqueryRequiredWhich road vintage to match against. `2020` is the Census 2020 benchmark; `Public_AR_Current` tracks the latest. 2020
formatqueryRequired`json` or `html`. Always send `json` for programmatic use. json
street / city / state / zipqueryOptionalComponent form, used by the `/locations/address` endpoint instead of one line. 1600 Pennsylvania Ave NW
vintagequeryOptionalRequired by the `/geographies/` endpoints, which return census tract and block alongside coordinates. Census2020_Census2020
(batch)form fieldOptional`/locations/addressbatch` accepts a CSV upload of up to 10,000 addresses in one POST.

Response fields

result.inputobject
Echo of what you sent, including the benchmark actually applied — worth logging when results look odd.
result.addressMatchesarray
Matches found. An empty array means no match, and that is the normal failure mode.
matchedAddressstring
The standardised address the geocoder matched, in Census formatting.
coordinates.x / coordinates.yfloat
Longitude is `x` and latitude is `y`. The naming is the reverse of the usual habit, so read it carefully.
addressComponents.fromAddress / toAddressstring
The house-number range of the matched street segment. A wide range means a coarse interpolation.
addressComponents.streetName, suffixType, suffixDirectionstring
Parsed pieces of the street name, normalised and uppercased.
tigerLine.tigerLineId / sidestring
Identifier of the road segment matched and which side of it the address falls on.
(geographies endpoint) geographiesobject
State, county, tract and block codes, when you call `/geographies/` rather than `/locations/`.

What you can build with the US Census Geocoder API

  • Geocode a large US address file with no per-record cost
  • Attach census tract and block codes for demographic analysis
  • Assign customers to counties or congressional districts
  • Standardise messy user-entered US addresses to a consistent format
  • Bulk-geocode a research dataset where storing results is a requirement

Common errors and how to fix them

Empty addressMatches with HTTP 200

The address could not be matched.

Fix: This is the standard no-match response. Retry without the unit or suite number, which the matcher does not use and which frequently prevents a match.

400 Bad Request

The `benchmark` parameter is missing.

Fix: It is mandatory on every request. Use `2020` for a fixed vintage or `Public_AR_Current` to follow the latest road file.

Coordinates fall in the middle of a block

Not an error — this is TIGER line interpolation, not rooftop geocoding.

Fix: Check `fromAddress` and `toAddress`. A wide range means the point was estimated across many buildings, so treat the precision accordingly.

No census tract in the response

You called a `/locations/` endpoint, which returns coordinates only.

Fix: Use `/geographies/onelineaddress` with a `vintage` parameter to get tract, block and county codes.

US Census Geocoder API — frequently asked questions

Is the Census Geocoder really free with no API key?

Yes. It is a US federal service with no key, no account and no attribution requirement, and results are in the public domain — you may store and redistribute them freely.

How accurate is it?

It interpolates along TIGER road segments rather than locating rooftops. That is fine for demographic joins, district assignment and routing, but the point can sit tens of metres from the actual building, and further on rural segments with long address ranges.

Can I geocode thousands of addresses at once?

Yes. The `addressbatch` endpoint accepts a CSV of up to 10,000 addresses per submission. Processing takes a while for a full file, so treat it as an asynchronous job rather than an interactive call.

Does it geocode addresses outside the United States?

No. Coverage is the United States and its territories only, since the underlying TIGER file is built for the census. International addresses return no match.

Tools that pair with this API

US Census Geocoder is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.