U.S. Census Bureau
App · Misc References · 21 actions
Read official U.S. population, housing and economic statistics straight from the Census Bureau, and turn addresses into the geographies they are published against. Search roughly 1,800 datasets (the American Community Survey, the Decennial Census, Population Estimates, County Business Patterns, International Trade), find the table or variable you need, and pull it for any area from the nation down to a census block. Geocode an address or a list of up to 10,000 to coordinates and to their state, county, tract and block, and go straight from a street address to the statistics for the neighbourhood around it. Public domain data, a free API key, and no third party in between.
Actions
| Action | What it does |
|---|---|
| Describe a table | List every variable in one table, with the label that says what each measures. |
| Geocode an address | Find the latitude and longitude of a street address, together with the address as the Census Bureau standardises it and the parts it split it into. |
| Geocode many addresses | Geocode up to 10,000 addresses in one step and get coordinates for each, with the standardised address and whether the match was exact. |
| Get a whole table | Pull an entire Census table for a geography in one step: every line of it, each column labelled with what it measures. |
| Get data | Run a Census data query and get one record per area, with the counts converted to numbers you can add up and the codes left as codes so they still match. |
| Get data for an address | Go straight from a street address to the Census statistics for the area around it. |
| Get dataset details | Everything the Census Bureau records about one dataset: what it covers, the period it describes, when it was last published, who to contact about it, and every geography level it can be broken down by. |
| Get example query | The dataset's own worked example: which variables the Census Bureau suggests starting from, and a real code for every geography level it publishes: the state code for California, a county code, a tract code. |
| Get variable details | What one variable measures: its full label, the table and subject it belongs to, the population it covers, whether it is a count or a dollar figure, and (for a variable used as a filter) the codes it accepts and what each one means. |
| List dataset topics | The subjects a dataset covers, as the Census Bureau files them: income, poverty, commuting, veterans, housing. |
| List geocoder benchmarks | The snapshots of the Census address ranges the geocoder can match against, and which is current. |
| List geography codes | List the areas at one geography level with the code each is called by: every county in Texas, every place in Oregon, every congressional district. |
| List geography levels | Which kinds of area a dataset can be broken down by, and what each needs to be asked for: a tract has to be asked for inside a state, a state does not. |
| List geography vintages | The years of geography boundaries a benchmark can report against. |
| Look up a point's census areas | Find which census areas a latitude and longitude falls in: state, county, tract, block, districts and places. |
| Look up an address's census areas | Find which census areas a street address falls in: its state, county, tract and block, plus its congressional district, state legislative districts, place, ZIP Code Tabulation Area and school district. |
| Look up census areas for many addresses | Find the state, county, tract and block for up to 10,000 addresses at once, along with their coordinates. |
| Look up census areas for many points | Find the state, county, tract and block for up to 10,000 latitude/longitude points at once. |
| Search datasets | Search the roughly 1,800 datasets the Census Data API publishes (the American Community Survey, the Decennial Census, Population Estimates, County Business Patterns, International Trade and the rest), and get the exact path each one answers on, which every other action needs. |
| Search tables | Search a dataset's tables by subject: 'median household income', 'commuting', 'housing tenure'. |
| Search variables | Find the code for a statistic by searching a dataset's variables on the words in their labels: 'median gross rent', 'without health insurance', 'bachelor's degree'. |
Describe a table
List every variable in one table, with the label that says what each measures. Use it to see what a table contains before pulling it, or to find the one line of it you want.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Table
grouptextRequired - The table to describe. Pick from the list, or chain in a table code from 'Search tables'.
Outputs
concepttextdatasettextgrouptextvariable_countnumbervariableslist
Example output
{
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"dataset": "2023/acs/acs5",
"group": "B19013",
"variable_count": 6,
"variables": [
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001E",
"predicate_only": true,
"predicate_type": "int",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Annotation of Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001EA",
"predicate_only": true,
"predicate_type": "string",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Margin of Error!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001M",
"predicate_only": true,
"predicate_type": "int",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Annotation of Margin of Error!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001MA",
"predicate_only": true,
"predicate_type": "string",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "",
"group": "B19013",
"label": "Geography",
"name": "GEO_ID",
"predicate_only": true,
"predicate_type": "string",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "",
"group": "B19013",
"label": "Geographic Area Name",
"name": "NAME",
"predicate_only": true,
"predicate_type": "string",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
}
]
}Geocode an address
Find the latitude and longitude of a street address, together with the address as the Census Bureau standardises it and the parts it split it into. Free, with no usage limits and no third party involved, for any address in the United States, Puerto Rico or the island areas.
Inputs
- Address (all on one line)
addresstext - The whole address in one field, the simplest way in. A street plus a ZIP code, or a street plus a city and state, is enough. Fill this in or the separate fields below, not both.
- Street address
streettext - House number and street. Needed if you are not using the one-line field above.
- City
citytext - City or town. Give this and the state, or give a ZIP code.
- State
statetext - Two-letter state code, such as DC or CA. Give this and the city, or give a ZIP code.
- ZIP code
zip_codetext - Five-digit ZIP code. A street plus a ZIP code is enough on its own.
- Urbanización (Puerto Rico only)
urbanizationtext - The urbanización of a Puerto Rico address. Filling this in (or the municipio) sends the address to the geocoder's Puerto Rico route, which is the only one that understands them. Leave empty everywhere else.
- Municipio (Puerto Rico only)
municipiotext - The municipio of a Puerto Rico address, in place of a city. Leave empty everywhere else.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current.
Outputs
benchmarktextbest_matchobjectinputobjectmatch_countnumbermatchedtrue/falsematcheslistvintagetext
Example output
{
"benchmark": "Public_AR_Current",
"best_match": {
"address_components": {
"city": "WASHINGTON",
"fromAddress": "4600",
"preDirection": "",
"preQualifier": "",
"preType": "",
"state": "DC",
"streetName": "SILVER HILL",
"suffixDirection": "",
"suffixQualifier": "",
"suffixType": "RD",
"toAddress": "4700",
"zip": "20233"
},
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"tiger_line_id": "657091557"
},
"input": {
"address": {
"address": "4600 Silver Hill Rd, Washington, DC 20233"
},
"benchmark": {
"benchmarkDescription": "Public Address Ranges - Current Benchmark",
"benchmarkName": "Public_AR_Current",
"id": "4",
"isDefault": true
}
},
"match_count": 1,
"matched": true,
"matches": [
{
"address_components": {
"city": "WASHINGTON",
"fromAddress": "4600",
"preDirection": "",
"preQualifier": "",
"preType": "",
"state": "DC",
"streetName": "SILVER HILL",
"suffixDirection": "",
"suffixQualifier": "",
"suffixType": "RD",
"toAddress": "4700",
"zip": "20233"
},
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"tiger_line_id": "657091557"
}
]
}Geocode many addresses
Geocode up to 10,000 addresses in one step and get coordinates for each, with the standardised address and whether the match was exact. Each row can carry your own reference, which comes back with the answer so the results line up with the list you sent. No file to build: give the addresses as rows and the file is made for you.
Inputs
- Addresses
addresseslistRequired - One row per address. Each needs a street, plus a ZIP code or a city and state. Up to 10,000 rows in one step.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current.
Outputs
benchmarktextcountnumbermatch_rate_percentnumbermatched_countnumberresultslistsubmittednumbertie_countnumberunmatched_countnumber
Example output
{
"benchmark": "Public_AR_Current",
"count": 2,
"match_rate_percent": 100.0,
"matched_count": 2,
"results": [
{
"id": "wh",
"input_address": "1600 Pennsylvania Ave NW, Washington, DC, 20500",
"latitude": 38.89869893252,
"longitude": -77.03518753691,
"match_status": "Match",
"match_type": "Exact",
"matched": true,
"matched_address": "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC, 20500",
"side": "L",
"tiger_line_id": "76225813"
},
{
"id": "hq",
"input_address": "4600 Silver Hill Rd, Washington, DC, 20233",
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"match_status": "Match",
"match_type": "Exact",
"matched": true,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"tiger_line_id": "657091557"
}
],
"submitted": 2,
"tie_count": 0,
"unmatched_count": 0
}Get a whole table
Pull an entire Census table for a geography in one step: every line of it, each column labelled with what it measures. This is the way to get a full breakdown (age by sex, income brackets, means of travel to work) without naming dozens of variables, and it is not subject to the 50-variable limit a normal query has. By default the estimates and their margins of error come back and the annotation flags are left out.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Table
grouptextRequired - Which table to pull. Pick from the list, or chain in a code from 'Search tables'.
- Geography level
geography_leveltextRequired - What kind of area each row should be: a state, a county, a census tract, a ZIP Code Tabulation Area. The list is the levels this dataset actually publishes, and says which larger area each one sits inside.
- Which areas
geography_codestext - Which areas at that level. Leave as * for all of them, or give the Census codes, separated by commas: Los Angeles County is 037. 'List geography codes' returns the code for every area at a level, so you can chain one in rather than look it up.Default:
*. - State
statetext - Narrow the result to one state. Most levels below state level need this, because a dataset will not return every census tract in the once. Leave empty for the whole country where the level allows it.One of:
01(Alabama (01)),02(Alaska (02)),60(American Samoa (60)),04(Arizona (04)),05(Arkansas (05)),06(California (06)),08(Colorado (08)),09(Connecticut (09)),10(Delaware (10)),11(District of Columbia (11)), and 46 more. - Within (deeper parent areas)
withintext - Only for levels that sit more than one step down: a block group needs its county and tract as well as its state. Write each parent as level:code, separated by spaces: 'county:033 tract:802405'. Leave empty otherwise; the state above is enough for a county, a place or a tract.
- Geography IDs (advanced)
geography_idstext - An alternative to the four fields above, for mixing levels in one query: give fully qualified Census GEO IDs, separated by commas, and they are used instead. '0400000US24,0500000US24017' returns Maryland and Charles County together. Leave empty unless you need that.
- Which columns
columnstext - How much of the table to keep. A Census table carries an estimate, a margin of error and two annotation flags for every line; most workflows want the first two.One of:
estimates(Estimates only),estimates_and_margins(Estimates and margins of error),all(Everything, including annotation flags). Default:estimates_and_margins.
Outputs
annotationslistcolumn_labelslistcolumnslistcolumns_returnedtextconcepttextdatasettextgrouptexthas_annotated_valuestrue/falsenumeric_columnslistquery_urltextrow_countnumberrowslist
Example output
{
"annotations": [],
"column_labels": [
{
"concept": "",
"label": "Geographic Area Name",
"name": "NAME"
},
{
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"label": "Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001E"
},
{
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"label": "Margin of Error!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001M"
},
{
"concept": "",
"label": "Geography",
"name": "GEO_ID"
},
{
"concept": "",
"label": "",
"name": "state"
}
],
"columns": [
"NAME",
"B19013_001E",
"B19013_001M",
"GEO_ID",
"state"
],
"columns_returned": "estimates_and_margins",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"dataset": "2023/acs/acs5",
"group": "B19013",
"has_annotated_values": false,
"numeric_columns": [
"B19013_001E",
"B19013_001M",
"GEO_ID",
"NAME"
],
"query_url": "https://api.census.gov/data/2023/acs/acs5?get=NAME,group(B19013)&for=state:24,51",
"row_count": 2,
"rows": [
{
"B19013_001E": 98461,
"B19013_001M": 628,
"GEO_ID": "0400000US24",
"NAME": "Maryland",
"state": "24"
},
{
"B19013_001E": 89393,
"B19013_001M": 552,
"GEO_ID": "0400000US51",
"NAME": "Virginia",
"state": "51"
}
]
}Get data
Run a Census data query and get one record per area, with the counts converted to numbers you can add up and the codes left as codes so they still match. Choose a dataset, the variables you want, and the kind of area to break them down by; the parent areas a level needs are filled in from the dataset's own rules. Values the Census Bureau publishes in place of an estimate it could not compute are reported as annotations rather than passed off as numbers.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Table (to choose variables from)
tabletextRequired - Which table the variable list below is drawn from. This only narrows that list; it is not part of the query. Choose 'All variables' for a small dataset; for the ACS detailed tables, which hold tens of thousands of variables, choose a table so the list is short enough to read. 'Search tables' finds one by subject.Default:
*. - Variables
variableslistRequired - Which statistics to return, up to 50 in one query. Pick NAME to get each area's name alongside the numbers. The list holds the variables of the table chosen above; with 'All variables' chosen it stops at 3,000 entries, so pick a table (or use 'Search variables' and chain the code in) for a dataset larger than that.
- Geography level
geography_leveltextRequired - What kind of area each row should be: a state, a county, a census tract, a ZIP Code Tabulation Area. The list is the levels this dataset actually publishes, and says which larger area each one sits inside.
- Which areas
geography_codestext - Which areas at that level. Leave as * for all of them, or give the Census codes, separated by commas: Los Angeles County is 037. 'List geography codes' returns the code for every area at a level, so you can chain one in rather than look it up.Default:
*. - State
statetext - Narrow the result to one state. Most levels below state level need this, because a dataset will not return every census tract in the once. Leave empty for the whole country where the level allows it.One of:
01(Alabama (01)),02(Alaska (02)),60(American Samoa (60)),04(Arizona (04)),05(Arkansas (05)),06(California (06)),08(Colorado (08)),09(Connecticut (09)),10(Delaware (10)),11(District of Columbia (11)), and 46 more. - Within (deeper parent areas)
withintext - Only for levels that sit more than one step down: a block group needs its county and tract as well as its state. Write each parent as level:code, separated by spaces: 'county:033 tract:802405'. Leave empty otherwise; the state above is enough for a county, a place or a tract.
- Geography IDs (advanced)
geography_idstext - An alternative to the four fields above, for mixing levels in one query: give fully qualified Census GEO IDs, separated by commas, and they are used instead. '0400000US24,0500000US24017' returns Maryland and Charles County together. Leave empty unless you need that.
- Filters
filtersobject - Narrow the rows by the value of a variable, as name/value pairs: HISP = 2 for the Hispanic population in Population Estimates, or PAYANN = '400000:500000' for a range. 'Get variable details' lists the codes a filter variable accepts. Leave empty for no filtering.
- Time period
time_periodtext - For time-series datasets only: which period to return. A year (2015), a month (2015-01), a quarter (2015-Q1), or a range written as 'from 1997 to 2012'. Leave empty for every period the dataset holds.
Outputs
annotationslistcolumnslistdatasettexthas_annotated_valuestrue/falsenumeric_columnslistquery_urltextrow_countnumberrowslist
Example output
{
"annotations": [
{
"code": -666666666,
"column": "B19013_001E",
"meaning": "The estimate could not be computed because there were an insufficient number of sample observations",
"row_count": 1
},
{
"code": -222222222,
"column": "B19013_001M",
"meaning": "The margin of error could not be computed because there were an insufficient number of sample observations",
"row_count": 1
}
],
"columns": [
"NAME",
"B19013_001E",
"B19013_001M",
"state",
"county"
],
"dataset": "2023/acs/acs5",
"has_annotated_values": true,
"numeric_columns": [
"B19013_001E",
"B19013_001M",
"NAME"
],
"query_url": "https://api.census.gov/data/2023/acs/acs5?get=NAME,B19013_001E,B19013_001M&for=county:*&in=state:24",
"row_count": 5,
"rows": [
{
"B19013_001E": 129549,
"B19013_001M": 3126,
"NAME": "Howard County, Maryland",
"county": "027",
"state": "24"
},
{
"B19013_001E": 125583,
"B19013_001M": 1587,
"NAME": "Montgomery County, Maryland",
"county": "031",
"state": "24"
},
{
"B19013_001E": 97935,
"B19013_001M": 1502,
"NAME": "Prince George's County, Maryland",
"county": "033",
"state": "24"
},
{
"B19013_001E": 58349,
"B19013_001M": 1338,
"NAME": "Baltimore city, Maryland",
"county": "510",
"state": "24"
},
{
"B19013_001E": -666666666,
"B19013_001M": -222222222,
"NAME": "Somerset County, Maryland",
"county": "039",
"state": "24"
}
]
}Get data for an address
Go straight from a street address to the Census statistics for the area around it. The address is geocoded, the census tract (or county, or whichever level you choose) it falls in is identified, and the variables or table you asked for are returned for that area. Three steps in one, with no codes to copy between them. Use it to enrich a customer list, size up a catchment, or check the neighbourhood behind a lead.
Inputs
- Address (all on one line)
addresstext - The whole address in one field, the simplest way in. A street plus a ZIP code, or a street plus a city and state, is enough. Fill this in or the separate fields below, not both.
- Street address
streettext - House number and street. Needed if you are not using the one-line field above.
- City
citytext - City or town. Give this and the state, or give a ZIP code.
- State
statetext - Two-letter state code, such as DC or CA. Give this and the city, or give a ZIP code.
- ZIP code
zip_codetext - Five-digit ZIP code. A street plus a ZIP code is enough on its own.
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Table (to choose variables from)
tabletextRequired - Which table the variable list below is drawn from. This only narrows that list; it is not part of the query. Choose 'All variables' for a small dataset; for the ACS detailed tables, which hold tens of thousands of variables, choose a table so the list is short enough to read. 'Search tables' finds one by subject.Default:
*. - Variables
variableslist - Which statistics to return for the area. Leave empty if you are pulling a whole table below instead.
- Whole table (instead of variables)
grouptext - Pull an entire table for the area instead of picking variables. Leave empty if you chose variables above.
- Area type
geography_leveltext - How big an area around the address to report on. A census tract is roughly a neighbourhood of 4,000 people and is the default; a county or a place is wider; a block is the smallest area published.One of:
block,block group,congressional district,county,county subdivision,place,public use microdata area,state,tract,zip code tabulation area. Default:tract. - Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current. - Geography vintage
vintagetext - Which year's geography boundaries to report. Tracts and districts are redrawn, so a 2019 address falls in a different tract under a 2019 vintage than under the current one. Match this to the dataset you will query: ACS 2023 data goes with the ACS2023 vintage.Default:
Current_Current.
Outputs
dataobjectdatasettextgeographyobjectgeography_codetextgeography_leveltextlatitudenumberlongitudenumbermatched_addresstextrowobject
Example output
{
"data": {
"annotations": [],
"columns": [
"NAME",
"B01003_001E",
"B19013_001E",
"state",
"county",
"tract"
],
"dataset": "2023/acs/acs5",
"has_annotated_values": false,
"numeric_columns": [
"B01003_001E",
"B19013_001E",
"NAME"
],
"query_url": "https://api.census.gov/data/2023/acs/acs5?get=NAME,B01003_001E,B19013_001E&for=tract:802405&in=state:24+county:033",
"row_count": 1,
"rows": [
{
"B01003_001E": 4184,
"B19013_001E": 104427,
"NAME": "Census Tract 8024.05; Prince George's County; Maryland",
"county": "033",
"state": "24",
"tract": "802405"
}
]
},
"dataset": "2023/acs/acs5",
"geography": {
"block": "2004",
"block_geoid": "240338024052004",
"block_group": "2",
"block_group_geoid": "240338024052",
"combined_statistical_area": "Washington-Baltimore-Arlington, DC-MD-VA-WV-PA",
"congressional_district": "4",
"congressional_district_geoid": "2404",
"county_fips": "033",
"county_geoid": "24033",
"county_name": "Prince George's County",
"county_subdivision_fips": "90524",
"county_subdivision_name": "District 6, Spauldings",
"metropolitan_statistical_area": "Washington-Arlington-Alexandria, DC-VA-MD-WV",
"place_fips": "75725",
"place_name": "Suitland CDP",
"public_use_microdata_area": "01107",
"school_district": "Prince George's County Public Schools",
"state_abbreviation": "MD",
"state_fips": "24",
"state_legislative_district_lower": "24",
"state_legislative_district_upper": "24",
"state_name": "Maryland",
"tract": "802405",
"tract_geoid": "24033802405",
"urban_area": "Washington--Arlington, DC--VA--MD",
"zip_code_tabulation_area": "20746"
},
"geography_code": "802405",
"geography_level": "tract",
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"row": {
"B01003_001E": 4184,
"B19013_001E": 104427,
"NAME": "Census Tract 8024.05; Prince George's County; Maryland",
"county": "033",
"state": "24",
"tract": "802405"
}
}Get dataset details
Everything the Census Bureau records about one dataset: what it covers, the period it describes, when it was last published, who to contact about it, and every geography level it can be broken down by.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
Outputs
access_urltextapi_pathtextcontact_emailtextcontact_nametextdatasettextdescriptiontextdocumentation_urltextexamples_urltextgeography_levelslistgeography_urltextgroups_urltextis_aggregatetrue/falseis_availabletrue/falseis_microdatatrue/falseis_timeseriestrue/falsemodifiedtextspatialtexttags_urltexttemporaltexttitletextvariables_urltextvintagenumber
Example output
{
"access_url": "https://api.census.gov/data/2023/acs/acs5",
"api_path": "2023/acs/acs5",
"contact_email": "acso.users.support@census.gov",
"contact_name": "American Community Survey Office",
"dataset": "acs/acs5",
"description": "The American Community Survey (ACS) is an ongoing survey that provides data every year -- giving communities the current information they need to plan investments and services. The ACS covers a broad range of topics about social, economic, demographic, and housing characteristics of the U.S. population. Summary files include the following geographies: nation, all states (including DC and Puerto Rico), all metropolitan areas, all congressional districts, all counties, all places, and all tracts and block groups. Summary files contain the most detailed cross-tabulations, many of which are published down to block groups. The data are population and housing counts. There are over 64,000 variables in this dataset.",
"documentation_url": "https://www.census.gov/developer/",
"examples_url": "https://api.census.gov/data/2023/acs/acs5/examples.json",
"geography_levels": [
{
"name": "us",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "010",
"wildcard_allowed": []
},
{
"name": "state",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "040",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "state",
"reference_date": "2023-01-01",
"requires": [
"state"
],
"summary_level": "050",
"wildcard_allowed": [
"state"
]
},
{
"name": "tract",
"optional_with_wildcard_for": "county",
"reference_date": "2023-01-01",
"requires": [
"state",
"county"
],
"summary_level": "140",
"wildcard_allowed": [
"county"
]
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"metropolitan statistical area/micropolitan statistical area",
"state (or part)"
],
"summary_level": "313",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"metropolitan statistical area/micropolitan statistical area",
"metropolitan division",
"state (or part)"
],
"summary_level": "316",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"state",
"metropolitan statistical area/micropolitan statistical area (or part)"
],
"summary_level": "322",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"state",
"metropolitan statistical area/micropolitan statistical area (or part)",
"metropolitan division (or part)"
],
"summary_level": "324",
"wildcard_allowed": []
}
],
"geography_url": "https://api.census.gov/data/2023/acs/acs5/geography.json",
"groups_url": "https://api.census.gov/data/2023/acs/acs5/groups.json",
"is_aggregate": true,
"is_available": true,
"is_microdata": false,
"is_timeseries": false,
"modified": "2024-09-06 17:27:47.0",
"spatial": "US",
"tags_url": "https://api.census.gov/data/2023/acs/acs5/tags.json",
"temporal": "2023/2023",
"title": "ACS 5-Year Detailed Tables",
"variables_url": "https://api.census.gov/data/2023/acs/acs5/variables.json",
"vintage": 2023
}Get example query
The dataset's own worked example: which variables the Census Bureau suggests starting from, and a real code for every geography level it publishes: the state code for California, a county code, a tract code. The quickest way to see a valid value for each level before writing a query.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
Outputs
countnumberdatasettextexample_variableslistgeographieslist
Example output
{
"count": 65,
"dataset": "2023/acs/acs5",
"example_variables": [
"NAME",
"B01001_001E"
],
"geographies": [
{
"example_value": "1",
"name": "us",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "010",
"wildcard_allowed": []
},
{
"example_value": "06",
"name": "state",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "040",
"wildcard_allowed": []
},
{
"example_value": "037",
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "050",
"wildcard_allowed": []
},
{
"example_value": "018700",
"name": "tract",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "140",
"wildcard_allowed": []
},
{
"example_value": "037",
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "313",
"wildcard_allowed": []
},
{
"example_value": "037",
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "316",
"wildcard_allowed": []
},
{
"example_value": "037",
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "322",
"wildcard_allowed": []
},
{
"example_value": "037",
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "324",
"wildcard_allowed": []
}
]
}Get variable details
What one variable measures: its full label, the table and subject it belongs to, the population it covers, whether it is a count or a dollar figure, and (for a variable used as a filter) the codes it accepts and what each one means.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Variable
variabletextRequired - The variable code to look up, such as B19013_001E.
Outputs
attributestextconcepttextdatasettextgrouptextlabeltextnametextpredicate_onlytrue/falsepredicate_typetextrequiredtrue/falseuniversetextvalue_countnumbervaluesobjectvalues_truncatedtrue/false
Example output
{
"attributes": "B19013_001EA,B19013_001M,B19013_001MA",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"dataset": "2023/acs/acs5",
"group": "B19013",
"label": "Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001E",
"predicate_only": false,
"predicate_type": "int",
"required": false,
"universe": "",
"value_count": 0,
"values": {},
"values_truncated": false
}List dataset topics
The subjects a dataset covers, as the Census Bureau files them: income, poverty, commuting, veterans, housing. A quick way to see whether a dataset holds the kind of thing you are after before searching its variables.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
Outputs
countnumberdatasettexttagslist
Example output
{
"count": 44,
"dataset": "2023/acs/acs5",
"tags": [
"aian",
"ancestry",
"black",
"children",
"citizenship",
"class of worker",
"commuting",
"disability",
"earnings",
"educational attainment",
"employment",
"enrollment",
"experience",
"family",
"fertility",
"food",
"grandparents",
"heating",
"household",
"income",
"inequality",
"labor",
"language",
"marriage",
"men",
"native hawaiian",
"nativity",
"nonfamily",
"pacific islander",
"parents",
"plumbing",
"population",
"poverty",
"race",
"responsibility",
"rooms",
"sex",
"subfamily",
"transportation",
"travel",
"vehicle",
"veteran",
"women",
"workers"
]
}List geocoder benchmarks
The snapshots of the Census address ranges the geocoder can match against, and which is current. A benchmark fixes the vintage of the address data itself, which is useful when a result that was produced against an earlier one.
Inputs
None.
Outputs
benchmarkslistcountnumberdefault_benchmarktext
Example output
{
"benchmarks": [
{
"description": "Public Address Ranges - Current Benchmark",
"id": "4",
"is_default": true,
"name": "Public_AR_Current"
},
{
"description": "Public Address Ranges - ACS2025 Benchmark",
"id": "8",
"is_default": false,
"name": "Public_AR_ACS2025"
},
{
"description": "Public Address Ranges - LUCA Benchmark",
"id": "11",
"is_default": true,
"name": "Public_AR_LUCA"
},
{
"description": "Public Address Ranges - Census 2020 Benchmark",
"id": "2020",
"is_default": false,
"name": "Public_AR_Census2020"
}
],
"count": 4,
"default_benchmark": "Public_AR_Current"
}List geography codes
List the areas at one geography level with the code each is called by: every county in Texas, every place in Oregon, every congressional district. This is how the 'Which areas' field elsewhere gets filled in without looking codes up by hand: run this, then chain the code you want into a query.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Geography level
geography_leveltextRequired - What kind of area each row should be: a state, a county, a census tract, a ZIP Code Tabulation Area. The list is the levels this dataset actually publishes, and says which larger area each one sits inside.
- State
statetext - Narrow the result to one state. Most levels below state level need this, because a dataset will not return every census tract in the once. Leave empty for the whole country where the level allows it.One of:
01(Alabama (01)),02(Alaska (02)),60(American Samoa (60)),04(Arizona (04)),05(Arkansas (05)),06(California (06)),08(Colorado (08)),09(Connecticut (09)),10(Delaware (10)),11(District of Columbia (11)), and 46 more. - Within (deeper parent areas)
withintext - Only for levels that sit more than one step down: a block group needs its county and tract as well as its state. Write each parent as level:code, separated by spaces: 'county:033 tract:802405'. Leave empty otherwise; the state above is enough for a county, a place or a tract.
- Search
searchtext - Narrow the list to entries containing every word you type. Leave empty to list everything.
- How many to return
limitnumber - How many areas to return, up to 5,000. There are 3,143 counties and 85,000 census tracts, so narrow tracts and block groups to a state.From 1 to 5000. Default:
1000.
Outputs
areaslistcountnumberdatasettextgeography_leveltextquery_urltexttotal_matchesnumbertruncatedtrue/false
Example output
{
"areas": [
{
"code": "001",
"name": "Allegany County, Maryland",
"parents": {
"state": "24"
}
},
{
"code": "003",
"name": "Anne Arundel County, Maryland",
"parents": {
"state": "24"
}
},
{
"code": "005",
"name": "Baltimore County, Maryland",
"parents": {
"state": "24"
}
},
{
"code": "510",
"name": "Baltimore city, Maryland",
"parents": {
"state": "24"
}
},
{
"code": "009",
"name": "Calvert County, Maryland",
"parents": {
"state": "24"
}
}
],
"count": 5,
"dataset": "2023/acs/acs5",
"geography_level": "county",
"query_url": "https://api.census.gov/data/2023/acs/acs5?get=NAME&for=county:*&in=state:24",
"total_matches": 24,
"truncated": false
}List geography levels
Which kinds of area a dataset can be broken down by, and what each needs to be asked for: a tract has to be asked for inside a state, a state does not. Not every dataset publishes every level: the ACS 1-year estimates stop at areas of 65,000 people, while the 5-year estimates reach block groups.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
Outputs
countnumberdatasettextgeography_levelslistlevel_nameslist
Example output
{
"count": 65,
"dataset": "2023/acs/acs5",
"geography_levels": [
{
"name": "us",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "010",
"wildcard_allowed": []
},
{
"name": "state",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [],
"summary_level": "040",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "state",
"reference_date": "2023-01-01",
"requires": [
"state"
],
"summary_level": "050",
"wildcard_allowed": [
"state"
]
},
{
"name": "tract",
"optional_with_wildcard_for": "county",
"reference_date": "2023-01-01",
"requires": [
"state",
"county"
],
"summary_level": "140",
"wildcard_allowed": [
"county"
]
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"metropolitan statistical area/micropolitan statistical area",
"state (or part)"
],
"summary_level": "313",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"metropolitan statistical area/micropolitan statistical area",
"metropolitan division",
"state (or part)"
],
"summary_level": "316",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"state",
"metropolitan statistical area/micropolitan statistical area (or part)"
],
"summary_level": "322",
"wildcard_allowed": []
},
{
"name": "county",
"optional_with_wildcard_for": "",
"reference_date": "2023-01-01",
"requires": [
"state",
"metropolitan statistical area/micropolitan statistical area (or part)",
"metropolitan division (or part)"
],
"summary_level": "324",
"wildcard_allowed": []
}
],
"level_names": [
"county",
"state",
"tract",
"us"
]
}List geography vintages
The years of geography boundaries a benchmark can report against. Tracts, districts and place limits are redrawn over time, so an address can sit in a different tract under a 2019 vintage than under the current one, so match the vintage to data you are joining to.
Inputs
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current.
Outputs
benchmarktextcountnumberdefault_vintagetextvintageslist
Example output
{
"benchmark": "Public_AR_Current",
"count": 11,
"default_vintage": "Current_Current",
"vintages": [
{
"description": "Current Vintage - Current Benchmark",
"id": "4",
"is_default": true,
"name": "Current_Current"
},
{
"description": "Census2010 Vintage - Current Benchmark",
"id": "410",
"is_default": false,
"name": "Census2010_Current"
},
{
"description": "ACS2017 Vintage - Current Benchmark",
"id": "417",
"is_default": false,
"name": "ACS2017_Current"
},
{
"description": "ACS2018 Vintage - Current Benchmark",
"id": "418",
"is_default": false,
"name": "ACS2018_Current"
},
{
"description": "ACS2019 Vintage - Current Benchmark",
"id": "419",
"is_default": false,
"name": "ACS2019_Current"
},
{
"description": "Census2020 Vintage - Current Benchmark",
"id": "420",
"is_default": false,
"name": "Census2020_Current"
},
{
"description": "ACS2021 Vintage - Current Benchmark",
"id": "421",
"is_default": false,
"name": "ACS2021_Current"
},
{
"description": "ACS2022 Vintage - Current Benchmark",
"id": "422",
"is_default": false,
"name": "ACS2022_Current"
},
{
"description": "ACS2023 Vintage - Current Benchmark",
"id": "423",
"is_default": false,
"name": "ACS2023_Current"
},
{
"description": "ACS2024 Vintage - Current Benchmark",
"id": "424",
"is_default": false,
"name": "ACS2024_Current"
},
{
"description": "ACS2025 Vintage - Current Benchmark",
"id": "425",
"is_default": false,
"name": "ACS2025_Current"
}
]
}Look up a point's census areas
Find which census areas a latitude and longitude falls in: state, county, tract, block, districts and places. Use it for a point that came from a map, a phone, a fleet log or another geocoder, where there is no address to look up.
Inputs
- Longitude
longitudenumberRequired - Longitude in decimal degrees. Negative everywhere in the United States, so -77.0352 is Washington, DC.From -180 to 180.
- Latitude
latitudenumberRequired - Latitude in decimal degrees, such as 38.8987.From -90 to 90.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current. - Geography vintage
vintagetext - Which year's geography boundaries to report. Tracts and districts are redrawn, so a 2019 address falls in a different tract under a 2019 vintage than under the current one. Match this to the dataset you will query: ACS 2023 data goes with the ACS2023 vintage.Default:
Current_Current. - Geography layers
layerslist - Which kinds of area to report. Leave empty for the geocoder's own default set (state, county, tract, block, districts and places), or choose 'All layers' to get everything this vintage publishes.
Outputs
benchmarktextgeographyobjectgeography_layersobjectlatitudenumberlongitudenumbermatchedtrue/falsevintagetext
Example output
{
"benchmark": "Public_AR_Current",
"geography": {
"block": "",
"block_geoid": "",
"block_group": "",
"block_group_geoid": "",
"combined_statistical_area": "",
"congressional_district": "",
"congressional_district_geoid": "",
"county_fips": "001",
"county_geoid": "11001",
"county_name": "District of Columbia",
"county_subdivision_fips": "",
"county_subdivision_name": "",
"metropolitan_statistical_area": "",
"place_fips": "",
"place_name": "",
"public_use_microdata_area": "",
"school_district": "",
"state_abbreviation": "DC",
"state_fips": "11",
"state_legislative_district_lower": "",
"state_legislative_district_upper": "",
"state_name": "District of Columbia",
"tract": "980000",
"tract_geoid": "11001980000",
"urban_area": "",
"zip_code_tabulation_area": ""
},
"geography_layers": {
"Census Tracts": [
{
"AREALAND": "6514231",
"AREAWATER": "4996397",
"BASENAME": "9800",
"CENTLAT": "+38.8801546",
"CENTLON": "-077.0352173",
"COUNTY": "001",
"FUNCSTAT": "S",
"GEOID": "11001980000",
"INTPTLAT": "+38.8809933",
"INTPTLON": "-077.0363219",
"LSADC": "CT",
"MTFCC": "G5020",
"NAME": "Census Tract 9800",
"OBJECTID": 35043,
"OID": "2079015504267431",
"STATE": "11",
"TRACT": "980000"
}
]
},
"latitude": 38.89869,
"longitude": -77.03518,
"matched": true,
"vintage": "Current_Current"
}Look up an address's census areas
Find which census areas a street address falls in: its state, county, tract and block, plus its congressional district, state legislative districts, place, ZIP Code Tabulation Area and school district. These codes are what every Census statistic is published against, so this is the bridge from an address in a spreadsheet to the data about where it is.
Inputs
- Address (all on one line)
addresstext - The whole address in one field, the simplest way in. A street plus a ZIP code, or a street plus a city and state, is enough. Fill this in or the separate fields below, not both.
- Street address
streettext - House number and street. Needed if you are not using the one-line field above.
- City
citytext - City or town. Give this and the state, or give a ZIP code.
- State
statetext - Two-letter state code, such as DC or CA. Give this and the city, or give a ZIP code.
- ZIP code
zip_codetext - Five-digit ZIP code. A street plus a ZIP code is enough on its own.
- Urbanización (Puerto Rico only)
urbanizationtext - The urbanización of a Puerto Rico address. Filling this in (or the municipio) sends the address to the geocoder's Puerto Rico route, which is the only one that understands them. Leave empty everywhere else.
- Municipio (Puerto Rico only)
municipiotext - The municipio of a Puerto Rico address, in place of a city. Leave empty everywhere else.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current. - Geography vintage
vintagetext - Which year's geography boundaries to report. Tracts and districts are redrawn, so a 2019 address falls in a different tract under a 2019 vintage than under the current one. Match this to the dataset you will query: ACS 2023 data goes with the ACS2023 vintage.Default:
Current_Current. - Geography layers
layerslist - Which kinds of area to report. Leave empty for the geocoder's own default set (state, county, tract, block, districts and places), or choose 'All layers' to get everything this vintage publishes.
Outputs
benchmarktextbest_matchobjectinputobjectmatch_countnumbermatchedtrue/falsematcheslistvintagetext
Example output
{
"benchmark": "Public_AR_Current",
"best_match": {
"address_components": {
"city": "WASHINGTON",
"fromAddress": "4600",
"preDirection": "",
"preQualifier": "",
"preType": "",
"state": "DC",
"streetName": "SILVER HILL",
"suffixDirection": "",
"suffixQualifier": "",
"suffixType": "RD",
"toAddress": "4700",
"zip": "20233"
},
"geography": {
"block": "",
"block_geoid": "",
"block_group": "",
"block_group_geoid": "",
"combined_statistical_area": "",
"congressional_district": "",
"congressional_district_geoid": "",
"county_fips": "033",
"county_geoid": "24033",
"county_name": "Prince George's County",
"county_subdivision_fips": "",
"county_subdivision_name": "",
"metropolitan_statistical_area": "",
"place_fips": "",
"place_name": "",
"public_use_microdata_area": "",
"school_district": "",
"state_abbreviation": "MD",
"state_fips": "24",
"state_legislative_district_lower": "",
"state_legislative_district_upper": "",
"state_name": "Maryland",
"tract": "802405",
"tract_geoid": "24033802405",
"urban_area": "",
"zip_code_tabulation_area": ""
},
"geography_layers": {
"Census Tracts": [
{
"AREALAND": "3974772",
"AREAWATER": "8728",
"BASENAME": "8024.05",
"CENTLAT": "+38.8553715",
"CENTLON": "-076.9365872",
"COUNTY": "033",
"FUNCSTAT": "S",
"GEOID": "24033802405",
"INTPTLAT": "+38.8582393",
"INTPTLON": "-076.9347941",
"LSADC": "CT",
"MTFCC": "G5020",
"NAME": "Census Tract 8024.05",
"OBJECTID": 48647,
"OID": "20790286332785",
"STATE": "24",
"TRACT": "802405"
}
]
},
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"tiger_line_id": "657091557"
},
"input": {
"address": {
"address": "4600 Silver Hill Rd, Washington, DC 20233"
},
"benchmark": {
"benchmarkDescription": "Public Address Ranges - Current Benchmark",
"benchmarkName": "Public_AR_Current",
"id": "4",
"isDefault": true
},
"vintage": {
"id": "4",
"isDefault": true,
"vintageDescription": "Current Vintage - Current Benchmark",
"vintageName": "Current_Current"
}
},
"match_count": 1,
"matched": true,
"matches": [
{
"address_components": {
"city": "WASHINGTON",
"fromAddress": "4600",
"preDirection": "",
"preQualifier": "",
"preType": "",
"state": "DC",
"streetName": "SILVER HILL",
"suffixDirection": "",
"suffixQualifier": "",
"suffixType": "RD",
"toAddress": "4700",
"zip": "20233"
},
"geography": {
"block": "",
"block_geoid": "",
"block_group": "",
"block_group_geoid": "",
"combined_statistical_area": "",
"congressional_district": "",
"congressional_district_geoid": "",
"county_fips": "033",
"county_geoid": "24033",
"county_name": "Prince George's County",
"county_subdivision_fips": "",
"county_subdivision_name": "",
"metropolitan_statistical_area": "",
"place_fips": "",
"place_name": "",
"public_use_microdata_area": "",
"school_district": "",
"state_abbreviation": "MD",
"state_fips": "24",
"state_legislative_district_lower": "",
"state_legislative_district_upper": "",
"state_name": "Maryland",
"tract": "802405",
"tract_geoid": "24033802405",
"urban_area": "",
"zip_code_tabulation_area": ""
},
"geography_layers": {
"Census Tracts": [
{
"AREALAND": "3974772",
"AREAWATER": "8728",
"BASENAME": "8024.05",
"CENTLAT": "+38.8553715",
"CENTLON": "-076.9365872",
"COUNTY": "033",
"FUNCSTAT": "S",
"GEOID": "24033802405",
"INTPTLAT": "+38.8582393",
"INTPTLON": "-076.9347941",
"LSADC": "CT",
"MTFCC": "G5020",
"NAME": "Census Tract 8024.05",
"OBJECTID": 48647,
"OID": "20790286332785",
"STATE": "24",
"TRACT": "802405"
}
]
},
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"tiger_line_id": "657091557"
}
],
"vintage": "Current_Current"
}Look up census areas for many addresses
Find the state, county, tract and block for up to 10,000 addresses at once, along with their coordinates. This is how a customer or patient list gets the tract codes that Census statistics are published against, in one step rather than one per row.
Inputs
- Addresses
addresseslistRequired - One row per address. Each needs a street, plus a ZIP code or a city and state. Up to 10,000 rows in one step.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current. - Geography vintage
vintagetext - Which year's geography boundaries to report. Tracts and districts are redrawn, so a 2019 address falls in a different tract under a 2019 vintage than under the current one. Match this to the dataset you will query: ACS 2023 data goes with the ACS2023 vintage.Default:
Current_Current.
Outputs
benchmarktextcountnumbermatch_rate_percentnumbermatched_countnumberresultslistsubmittednumbertie_countnumberunmatched_countnumbervintagetext
Example output
{
"benchmark": "Public_AR_Current",
"count": 1,
"match_rate_percent": 100.0,
"matched_count": 1,
"results": [
{
"block": "2004",
"county_fips": "033",
"id": "hq",
"input_address": "4600 Silver Hill Rd, Washington, DC, 20233",
"latitude": 38.845053106269,
"longitude": -76.928365658124,
"match_status": "Match",
"match_type": "Exact",
"matched": true,
"matched_address": "4600 SILVER HILL RD, WASHINGTON, DC, 20233",
"side": "L",
"state_fips": "24",
"tiger_line_id": "657091557",
"tract": "802405"
}
],
"submitted": 1,
"tie_count": 0,
"unmatched_count": 0,
"vintage": "Current_Current"
}Look up census areas for many points
Find the state, county, tract and block for up to 10,000 latitude/longitude points at once. For points that came from a map, a device, a fleet log or another geocoder, where there are no addresses to send.
Inputs
- Points
coordinateslistRequired - One row per point, each with a longitude and a latitude in decimal degrees. Up to 10,000 rows in one step.
- Benchmark
benchmarktext - Which snapshot of the Census address ranges to match against. Leave on the current one unless you are reproducing an older result.Default:
Public_AR_Current. - Geography vintage
vintagetext - Which year's geography boundaries to report. Tracts and districts are redrawn, so a 2019 address falls in a different tract under a 2019 vintage than under the current one. Match this to the dataset you will query: ACS 2023 data goes with the ACS2023 vintage.Default:
Current_Current.
Outputs
benchmarktextcountnumbermatch_rate_percentnumbermatched_countnumberresultslistsubmittednumbertie_countnumberunmatched_countnumbervintagetext
Example output
{
"benchmark": "Public_AR_Current",
"count": 1,
"match_rate_percent": 100.0,
"matched_count": 1,
"results": [
{
"block": "1034",
"county_fips": "001",
"id": "wh",
"latitude": 38.89869,
"longitude": -77.03518,
"match_status": "Match",
"matched": true,
"state_fips": "11",
"tract": "980000"
}
],
"submitted": 1,
"tie_count": 0,
"unmatched_count": 0,
"vintage": "Current_Current"
}Search datasets
Search the roughly 1,800 datasets the Census Data API publishes (the American Community Survey, the Decennial Census, Population Estimates, County Business Patterns, International Trade and the rest), and get the exact path each one answers on, which every other action needs. Filter by year, by keyword, or by whether a dataset holds published totals, individual records or a run of years.
Inputs
- Search
searchtext - Narrow the list to entries containing every word you type. Leave empty to list everything.
- Year
vintagetext - Limit to one year of data, such as 2023, or to 'timeseries' for the datasets that span years. Leave empty to search every dataset.
- Kind of dataset
dataset_typetext - Limit to one kind. Aggregate datasets publish totals for an area and are what most workflows want; microdata publishes one record per person or household.One of:
aggregate(Aggregate: published totals for an area),microdata(Microdata: one record per person or household),timeseries(Time series: one dataset spanning many years). - How many to return
limitnumber - How many results to return in one step, up to 500.From 1 to 500. Default:
50. - Skip
offsetnumber - How many results to skip before returning any; chain the previous step's 'next offset' here to walk a long list.From 0 to 1000000. Default:
0.
Outputs
countnumberdatasetslisthas_moretrue/falsenext_offsetnumberoffsetnumbertotal_matchesnumber
Example output
{
"count": 1,
"datasets": [
{
"access_url": "https://api.census.gov/data/2023/acs/acs5",
"api_path": "2023/acs/acs5",
"contact_email": "acso.users.support@census.gov",
"contact_name": "American Community Survey Office",
"dataset": "acs/acs5",
"description": "The American Community Survey (ACS) is an ongoing survey that provides data every year -- giving communities the current information they need to plan investments and services. The ACS covers a broad range of topics about social, economic, demographic, and housing characteristics of the U.S. population. Summary files include the following geographies: nation, all states (including DC and Puerto Rico), all metropolitan areas, all congressional districts, all counties, all places, and all tracts and block groups. Summary files contain the most detailed cross-tabulations, many of which are published down to block groups. The data are population and housing counts. There are over 64,000 variables in this dataset.",
"documentation_url": "https://www.census.gov/developer/",
"examples_url": "https://api.census.gov/data/2023/acs/acs5/examples.json",
"geography_url": "https://api.census.gov/data/2023/acs/acs5/geography.json",
"groups_url": "https://api.census.gov/data/2023/acs/acs5/groups.json",
"is_aggregate": true,
"is_available": true,
"is_microdata": false,
"is_timeseries": false,
"modified": "2024-09-06 17:27:47.0",
"spatial": "US",
"tags_url": "https://api.census.gov/data/2023/acs/acs5/tags.json",
"temporal": "2023/2023",
"title": "ACS 5-Year Detailed Tables",
"variables_url": "https://api.census.gov/data/2023/acs/acs5/variables.json",
"vintage": 2023
}
],
"has_more": false,
"next_offset": 1,
"offset": 0,
"total_matches": 1
}Search tables
Search a dataset's tables by subject: 'median household income', 'commuting', 'housing tenure'. Get each one's code and the population it describes. A table is the unit the Census Bureau publishes in, so finding the right one is usually the fastest route to the right numbers.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Search
searchtext - Narrow the list to entries containing every word you type. Leave empty to list everything.
- How many to return
limitnumber - How many results to return in one step, up to 500.From 1 to 500. Default:
50. - Skip
offsetnumber - How many results to skip before returning any; chain the previous step's 'next offset' here to walk a long list.From 0 to 1000000. Default:
0.
Outputs
countnumberdatasettextgroupslisthas_moretrue/falsenext_offsetnumberoffsetnumbertotal_matchesnumber
Example output
{
"count": 2,
"dataset": "2023/acs/acs5",
"groups": [
{
"description": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"name": "B19013",
"universe": "Households",
"variables_url": "https://api.census.gov/data/2023/acs/acs5/groups/B19013.json"
},
{
"description": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars) (White Alone Householder)",
"name": "B19013A",
"universe": "Households with a householder who is White alone",
"variables_url": "https://api.census.gov/data/2023/acs/acs5/groups/B19013A.json"
}
],
"has_more": true,
"next_offset": 2,
"offset": 0,
"total_matches": 37
}Search variables
Find the code for a statistic by searching a dataset's variables on the words in their labels: 'median gross rent', 'without health insurance', 'bachelor's degree'. Returns each code with its label, the table it belongs to and the population it is measured over. Every data query is written in these codes, and this is how you find them.
Inputs
- Dataset
datasettextRequired - Which Census dataset to read. Pick from the list; it is every dataset the API publishes, newest first. The American Community Survey's 5-year detailed tables are the usual choice for anything below state level, because they are the only ones published for small areas.
- Search
searchtext - Narrow the list to entries containing every word you type. Leave empty to list everything.
- Table
grouptext - Search inside one table only. Leave empty to search the whole dataset.
- How many to return
limitnumber - How many results to return in one step, up to 500.From 1 to 500. Default:
50. - Skip
offsetnumber - How many results to skip before returning any; chain the previous step's 'next offset' here to walk a long list.From 0 to 1000000. Default:
0.
Outputs
countnumberdatasettextgrouptexthas_moretrue/falsenext_offsetnumberoffsetnumbertotal_matchesnumbervariableslist
Example output
{
"count": 2,
"dataset": "2023/acs/acs5",
"group": "B19013",
"has_more": true,
"next_offset": 2,
"offset": 0,
"total_matches": 4,
"variables": [
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001E",
"predicate_only": true,
"predicate_type": "int",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
},
{
"attributes": "",
"concept": "Median Household Income in the Past 12 Months (in 2023 Inflation-Adjusted Dollars)",
"group": "B19013",
"label": "Annotation of Estimate!!Median household income in the past 12 months (in 2023 inflation-adjusted dollars)",
"name": "B19013_001EA",
"predicate_only": true,
"predicate_type": "string",
"required": false,
"universe": "Households",
"value_count": 0,
"values": {},
"values_truncated": false
}
]
}