Free US Population Density And Unemployment Rate By Zip Code

US Census Population Density By Zip Code
Take a peek: the population, land area, and population density of every zip-code / ZCTA in the USA.
  • 2010 US Population Density, By Zip Code, in XLS and CSV
  • 2007-2011 US Unemployment Rate By Zip Code, also in XLS or CSV

Unemployment and population density are probably two of the most important local statistics you might hear quoted about a city or town. Our US Population by Zip Code post from September has gotten rather popular, and a polite commenter requested population density and unemployment rate. So here they are, totally free and in the public domain, in two different formats (see above).

How did I get this data?  Two different Census APIs (the Decennial Census 2010 and the ACS 5-year 2007-2011), combined with the square-footage by ZCTA listings from the 2013 U.S. Gazetteer Files.

I was planning to use this post to document my methods and send everyone on their own journey through the data, but it got too long and I realized that I wanted to talk a more systematic approach. In a follow up post, I will explain how to pull Census data yourself for different variables at different geographical resolution. But if you need a jump start now, my first and most helpful guide was the National Civic Day Of Hacking support slides.

Published by

Jon Bittner

Splitwise helps you and your friends keep track of shared expenses, so that bills (and friends) get paid on time.

13 thoughts on “Free US Population Density And Unemployment Rate By Zip Code”

  1. Hi Jon,
    I was wondering if you know how to find the population by zip code for past years as well. I am working on a project that is trying to track population growth by zip code since 1950, but I am only able to find comprehensive historical population data on the state level. Do you know where I can find it at the zip level?

    1. Hi Chris! Sadly, that sounds quite a bit harder. A few problems you might run into by using zip codes for historical data:

      – Zip codes are based on postal routes, not land areas. These Census counts are really ZCTAs, which are only the Census approximation of zip codes interpreted as a land area. Their approximations and definitions change each Census, so this is probably a tricky methodology to use.

      – The Census APIs I was using are fairly new, and only support the new data sets, so I don’t have any historical data at all (but old Census data can be fetched from the Census website via FTP).

      You might try looking it populations by the tract or tract-block level, which I suspect will be available more readily via FTP server, and then developing your own procedure which slots the historical tract-blocks into modern zip code buckets based on the current ZCTA definitions. But I confess, that sounds like a fair amount of work. You may also find a researcher in the academic literature who has done something similar and reach out to them about their methods. In any case, good luck, and I hope this helps!

  2. Hi Jon-

    These guides are incredibly useful. I’m doing some socioeconomic status research for a research project and I’m trying to create tables for key socioeconomic factors such as population, unemployment rate, population density, % of population below poverty level, etc. etc., and organizing it by zip code.

    So your articles have been absolutely perfect!! I’m very much looking forward to reading your walkthrough. I’ve tried both the guided search and advanced search function on the Census Fact Finder and can’t seem to get it to make tables based on zip code! When I try to filter by zip code, I seem to only get Business Patterns and Economic Census data. From your blog post it seems like I should try to get a key for the census API, is that correct?

    I’ll be looking forward to your walkthrough article! Or, if you happen to have any time, I’d love to talk to you further about figuring out how you went about this.

    By the way, I love Splitwise! I went to college at Brown and heard about Splitwise back when I was in college and it has changed my life. I’d like to personally thank you for such a wonderful (and free) app!!

    1. for anyone else interested in making similar tables to the ones Jon has posted, here’s an email exchange I had with Jon (posted with his consent):

      Hey Jon!

      I went to the links you posted in your blog and have a key with the census api. I also have a good basic understanding about how it works from the slideshow you posted on your blog.

      I think I am almost there, but unfortunately I can’t get a full list of every zip code. For example, this works: here&get=P0010001&for=zip+code+tabulation+area:*&in=state:02

      and it gives me all the populations of each zip code in Alaska, but when i try to remove the &in=state filter so that I can get a list of all the zip codes for the country, I get
      “error: unknown/unsupported geography hierarchy”

      Do you think you can help me out regarding your research methods?


      to which he responded:

      Hi Mike! Unfortunately you have run up against exactly where I got stuck. The only way I was able to figure out to do all the zipcodes in the country was to simply run 50 queries, one for every state. I know this is ridiculous but that’s just the way the census works unfortunately. if you do the American Community Survey your query will work but may not be the variables you want. The tool I ended up using was a excel spreadsheet that enabled me to make 50 query’s at a time relatively easily but that also involved installing a program called curl and running a shell script. I don’t know how much you know about the command line but I hope this helps and feel free to ask me more questions.

      Would you mind me posting our conversation on the blog to help others?


      Thanks again Jon for your help on this

  3. Thanks for these posts. Data by zcta s for the entire nation are the products I need. In my opinion the methods to download census variables by zcta are not so straight forward.

    Do I understand Jon ‘s reply suggesting that you can get all the data for every zcta in the country if you fetch from the ACS data but you can only fetch data by zcta for variable(s) from the 2010 census one state at a time?

    Would you be willing to make your script available that loops through all of the 50+ queries in order to download variables for every zcta in the country?


  4. JB, would you believe I was googling around for this data and came upon your page? You rock, sir! But, of course, you knew that already. For a moment I was concerned about whether I could trust the source, but then I realized it was you…. 🙂

  5. Hi Jon, this data is incredibly useful. I paired the two files above so I had all the data on one sheet and was curious what the “# in sample” field is? I was curious because there are several zips that have a 2010 census population estimate of 0 but have 10-20K in “# in sample” – THANKS!

  6. Jon,
    Did you ever get around to writing the post about
    “how to pull Census data yourself for different variables at different geographical resolution.”
    I’d love to reproduce your work with Microsoft Power Query, and analyze with PowerPivot.

  7. Hey JB. Are you able to post population by zip for Census 2000???? I really need that excel sheet so bad……

  8. This is amazing. It’s 2017 and I seemingly repeated the same blind wandering tasks through the US Census data that too many others have done over the past years. And here Jon, you cut down on all my wanderings! Thanks so much for sharing your research, data, and workflow!

  9. Hey, just to note – all Puerto Rican zip codes are numerically less than 1000. I’m not sure how the ZTCA’s are organized for Puerto Rico, but I can tell you that your Excel tables have population 0 for all Puerto Rican zip codes, which, needless to say, is inaccurate.

Leave a Reply to Kim Ness Sundeen Cancel reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s