Meet API v2.0 with UK support 🇬🇧 Try it out

Guides
for everything Geocodio

Guides
Census: Demographics

Census: Demographics

With Geocodio, you can bulk lookup the Census demographic data for addresses or coordinates via API as well as spreadsheet upload. If you're uploading a spreadsheet, you can click the "Demographics" append in Step 3 of the upload process to append this data.

Geocodio returns Census demographic data from the most recent five-year American Community Survey, which is currently the 2024 survey results published in 2026. (The 1-year American Community Surveys do not have granularity at this level.)

Selecting the geography level

As of API v1.8, ACS data is automatically returned at the most appropriate geographic level based on the accuracy of the geocoded result.

For example:

Accuracy Type Census Geography
rooftop, range_interpolation, nearest_street, point, nearest_rooftop_match, street_center, intersection Census Block Group
nearest_place, place Census Place
county County
state State

With Geocodio, you can also explicitly request Census demographic data for a specific geographic level through our API or through the spreadsheet geocoding tool. Data is available at the following geographies:

  • Block Group

  • Tract

  • ZIP Code Tabulation Area (ZCTA)

  • Place

  • County Subdivision

  • County

  • MSA

  • State

  • Census Division

  • Census Region

  • Nation

Four of these levels — ZIP Code Tabulation Area, Census Division, Census Region and Nation — behave differently from the rest of the list: they are never selected automatically, no matter how a result geocodes. You will only receive data at those levels if you request them by name.

These four levels are available through the API today. They are not yet options in the geography dropdown of the spreadsheet geocoding tool.

Via API, you should add the geography name to your ACS field request. For example:

  • acs-demographics-tract (for Census Tract level)

  • acs-demographics-county (for County level)

  • acs-demographics-place (for Census Place level)

  • acs-demographics-zcta (for ZIP Code Tabulation Area level)

  • acs-social-nation (for Nation level, from the Social category)

The suffix works the same way across all five ACS categories acs-demographics, acs-economics, acs-families, acs-housing and acs-social — so acs-housing-zcta and acs-economics-region are both valid field requests.

When using Geocodio's spreadsheet geocoding tool, you can choose which geographic level you'd like to receive Census demographic data for by using the dropdown menu that appears when the ACS Demographics data append has been selected.

Demographics geography select box

Please note: We do not provide data at the individual household level.

If you are using an API version prior to v1.8, all results return at the Census Block Group level.

Demographics by ZIP code

ACS demographics are now available at the ZIP code level. Request acs-demographics-zcta — or the -zcta suffix on any of the other four ACS categories — and Geocodio returns the survey data for the ZIP Code Tabulation Area that contains the geocoded address.

It's worth being precise about what that is, because a ZIP Code Tabulation Area is not quite a ZIP code. USPS ZIP codes are mail delivery routes, and the Postal Service redraws them whenever operations require it. ZCTAs are the Census Bureau's statistical stand-in: the Bureau takes each census block, assigns it the ZIP code used by most of the addresses inside it, and stitches those blocks together. A ZCTA carries the same five digits as the ZIP code it is named after and usually covers roughly the same ground, but its boundaries are drawn for tabulating survey data, not for delivering mail.

The two sets are also different sizes. There are 33,791 ZCTAs against 41,540 distinct USPS ZIP codes, and 7,758 USPS ZIP codes (18.7%) have no ZCTA at all. Those are almost entirely PO-box-only and single-point ZIP codes, which have no resident population for the Census Bureau to survey.

What to expect when a ZIP code has no ZCTA

In an API response, the acs field is absent from the result and a warning is returned:

acs field was skipped since no data was found for the requested category and geography

In a spreadsheet upload, those cells are simply blank. Plan for it: fall back to county or tract level for the affected rows, since both cover the entire country.

This is a property of the Census data rather than a Geocodio limitation. The Census Bureau does not publish American Community Survey estimates for USPS ZIP codes, so any vendor offering ZIP-level demographics is working from ZCTAs and inherits the same gaps.

Benchmarking against national, regional and division averages

The nation, region and division levels return the same ACS tables for the whole United States, for one of the four Census regions, or for one of the nine Census divisions. The most common use for them is indexing: comparing a local figure against a broader average without maintaining your own reference table.

Request the local geography and the benchmark geography in two passes, then divide:

index = (local percentage / national percentage) x 100

An index of 100 means the local area matches the national average. Below 100 is under-represented, above 100 over-represented.

For example, the Hispanic or Latino share of population for 1109 N Highland St, Arlington VA:

Field Percentage
Local (ZCTA 22201) acs-demographics-zcta 0.110
National acs-demographics-nation 0.193

0.110 / 0.193 x 100 = 57, so this ZIP code under-indexes on Hispanic or Latino population relative to the country as a whole.

Two things to keep in mind when doing this arithmetic:

  • Percentages are returned as decimals, so 0.110 means 11.0%.

  • Percentages are relative to the parent row, not the grand total. A nested key such as Hispanic or Latino: White alone is a share of the Hispanic or Latino population, so multiply down the chain when you need a percentage of the total.

region and division give you intermediate benchmarks when the nation is too broad a comparison. The Arlington address above sits in region 3 (South) and division 5 (South Atlantic), and returns a total population of 129,288,316 at the region level and 67,775,152 at the division level, against 334,922,499 for the nation.

Margins of error compound when you index

Indexing divides one uncertain estimate by another, so the margin of error on both numbers carries into the result. At the block group level, the margin of error on a small subgroup can approach the size of the estimate itself. Tract, ZCTA or county produce steadier indexes than block group does.

Download an example

You can download an example of the results when you add Census demographics to a list of addresses here or latitude/longitude coordinates here.

Demographic Data Returned

Geocodio provides the data exactly as it is packaged by the Census Bureau in the breakouts it gives. The only change we have made is to add a "percentage" calculation to aid ease of use.

The data returned includes the following data points. For each data point, the data returned includes the value, margin of error, and percentage.

  • Total (Table #B01002)

    • total, male, female

  • Population by age range (Table #B01001)

    • Broken out by male and female

    • under 5 years, 5-9 years, 10-14 years, 15-17 years, 18-19 years, 20 years, 21 years, 22-24 years, 25-29 years, 30-34 years, 35-39 years, 40-44 years, 45-49 years, 50-54 years, 55-59 years, 60-64 years, 65-69 years, 70-74 years, 75-79 years, 80-84 years, 85 years and over

  • Sex (Table #B01001)

    • total, male, female

  • Race and ethnicity (Table #B03002)

    • Broken out by not-Hispanic or Latino and Hispanic or Latino

    • Not Hispanic or Latino, white alone, black or African American alone, American Indian and Alaska Native alone, Asian alone, Native Hawaiian and Other Pacific Islander alone; some other race alone; two or more races; two or more races: two races including some other race; two or more races: two races excluding some other race, and three or more races

We recognize that age, sex, gender, race and ethnicity are sensitive subjects. Accordingly, we return the categories exactly as the Census Bureau provides. We recognize that the categories listed may not be all-inclusive or use preferred terminology.

Special ACS Values

There are a number of special values that may be returned when working with ACS data. Use the chart below to determine their meaning, which can assist with troubleshooting.

Value Definition
-888888888 Estimate not applicable or not available
-999999999 Insufficient sample cases in the geographic area
-222222222 Margin of error couldn't be computed due to insufficient sample
-555555555 Controlled estimate (no sampling error)

Cost

Requests are billed as geocode + ACS Demographic info (i.e., two lookups). For example, if you have 100 addresses that you want Census demographic data for, that would count as 200 lookups.

You can calculate how much this will cost you and how long it will take here.