ACS data download at zip code level

Could someone point out the URL for downloading the ACS either single year or 5-year average data at the zip code level?  There are about 45000 zip codes in the US so I expect to see the data file with about 45000 rows.

Thank you!


  • Assuming you already know which table(s) you want, you can get ZCTA (ZIP Code Tabulation Areas) for 2016 5 year ACS by
    going to,
    clicking on "advanced search",
    then "show me all",
    then click "Geographies" on the left side,
    select "5 Digit ZIP Code Tabulation Area- 860" (ZCTA) (ignore that fact that "5 digit ZIP code" is an option, as it is not available for ACS and therefore won't give you any options to select ACS data if you choose it),
    then select "ALL 5 Digit ZIP Code Tabulation Areas in the United States and Puerto Rico",
    click the "Add to your selections" button,
    click close (for the geographic selection window).

    You will then see ALL the tables available, and you can filter these by entering a "topic or table name".

    I would suggest that you play around using a smaller set of ZCTAs (like all within a county or a smaller state) before you try downloading ALL of them, just so you can explore the file download options and make sure you can open it and get what you expect in the program you are going to read it into. All or which will be less unwieldy with a smaller data set.
  • Thank you very much, Peter. I was able to obtain the zip level info with your super clear instruction.

    I am curious to know how many total number of zip codes I should expect in the US. I thought it is about 45,000s, but I only got 33,000s. Would you have any insight on this?

    Appreciate your reply and information!

  • Below is a short description from Census of how they create ZCTAs (From the link I included above). I've highlighted the two main reasons that some ZIP codes do not appear in the universe of ZCTAs. I am not sure whether or not that explains the entire discrepancy between the total number of ZIP codes and the total number of ZCTAs.

    The Census Bureau first examined all of the addresses within each census block to define the list of ZIP Codes by block. Next, the most frequently occurring ZIP Code within each block was assigned to the entire census block as a preliminary ZCTA code. After all of the census blocks with addresses were assigned a preliminary ZCTA code, blocks were aggregated by code to create larger areas.

    The Census Bureau assigned blocks that contained addresses, but did not have a single most frequently occurring ZIP Code to the ZCTA with which the blocks had the longest shared boundary.

    If the area of an unassigned enclave was less than two square miles, it was assigned to the surrounding ZCTA. The Census Bureau used block group boundaries to identify and group unassigned blocks. These unassigned blocks were merged into an adjacent ZCTA based on the length of shared boundary.

    For the Census 2000 ZCTAs the Census Bureau created ZCTAs that ended in "XX" to represent large areas of land without ZIP Codes or "HH" to represent large areas of water without ZIP Codes. For the 2010 Census, large water bodies and large unpopulated land areas do not have ZCTAs.

    ZCTAs were created using residential and nonresidential ZIP Codes that are available in the Census Bureau’s MAF/TIGER database. ZIP Codes assigned to businesses only or single delivery point address will not necessarily appear as ZCTAs.

    In most instances the ZCTA code is the same as the ZIP Code for an area.

    In creating ZCTAs, the Census Bureau took the most frequently occurring ZIP Code in an area for the ZCTA code. Some addresses will end up with a ZCTA code different from their ZIP Code.

    Some ZIP Codes represent very few addresses (sometimes only one) and therefore will not appear in the ZCTA universe.

  • That explained the difference.

    Thank you, Peter.

  • Hi Peter,

    I am not able to find ZCTA geography level data via API (base URL:
    However, I do see the data at ZCTA level on factfinder website.
    Is this not available via API?

    But I could see the data at ZCTA level for ACS 5 year Detailed tables - 2011 (

    Did they discontinue ZCTA level data API after that?
    Could you please help me here.

  • ZCTAs are not included in the 1-year data release, because only ~250 ZCTAs (out of ~33000) surpass the 65,000 population threshold required for inclusion in the 1-year data release.

    Change "acs1" to "acs5" in your example and you should have better results.
  • HI Joe,

    Thanks for your inputs.
    I could see data at ZCTA level for 5 year estimates.

  • Hi Joe,

    I have one more question.
    Is it possible to retrieve data of all the features (called variables in the website. Example: B01001_001E) in one API call.
    As of now, I guess, we need to call API one by one for each variable.

    For example, Below API call retrieves total population estimate (B01001_001E) for ZCTA=33141

    But if I replace B01001_001E with wildcard * to retrieve data for all variables, it does not work.
    I understand if we use *, there will be lot of data. But is this not supported?
    Could you please help me here?

    Thanks & Regards,
  • I'm afraid I'm not extremely experienced using the API; perhaps someone else here can advise?

    I lead a project called Census Reporter, which provides an alternative web presentation for the current ACS (that is, there's no historic data, and each year, we update it when new ACS data is released) -- we have an API which was designed for our own needs, but we welcome public access to the API, as long as their use doesn't interfere with our ability to run our site, which mostly manifests as an upper limit to the number of geographies which are returned in a single query.

    You can get all variables for a single table from our site, for about 3500 geographies at a time. (I can't remember exactly where the threshold is set.) For example, this is all of B01001 for ZCTA 33141

    See for more information.
  • I was looking to download the number of housing units per zip code for certain US cities/counties. I followed the instructions given by Peter regarding the ZCTA data available on the US census site. I entered "Housing Units" as my topic for San Diego County and downloaded the table called "Profile of General Population and Housing Characteristics: 2010" that resulted from the query. However, the file has more than 33,000 rows and the second column which I assume to be the zip codes ("Geo.id2") starts at 601 and goes all the way to 99929. The top row has "Geo.id2" as 6073 and lists the Geography as San Diego County. The total population and total # of households seem right. But I am not sure how to interpret all the data below it. I would greatly appreciate any help in understanding this data!

    Thank you!
  • Hi Peter,

    I am very new to ACS. I followed your way to download the zip code level data from 2011-2017. Do you have any idea where I could download the summary data at the zip code tabulation level for 2004-2010? Thank you very much!
  • Hi Peter,

    I am trying to follow these steps on the new site, but I can't seem to find the right filter to get to a zip code/zcta option - any ideas?


  • Olivia:

    I've found that if you have the wrong set of filters on, it can prevent you from adding ZCTAs. This always seems to happen to me if I choose a table suggestion directly from the search box at

    What has worked for me is to go to the "tables" page  (you may get there if you click "search" or type return instead of accepting a suggestion).  Then, on that page, you should see "filter" near the top of the sidebar on the left. Click on that, and navigate as in the screenshot:

    If when you get to "Zip Code Tabulation Area (Five-Digit)" you don't see options as in the screenshot, check "selected filters" below. Remove any that you don't actually need, as they seem to sometimes prevent the option from appearing -- or remove them all so that you can choose "all ZCTAs in the United States" and then, after that, build up the rest of the filters you need.

    Hope that helps!

  • Thanks Joe. I'm saving this tip!