Available now

US income and tax data by ZIP code and county, with county-to-county migration

IRS Statistics of Income ZIP Code, County and Migration data in nine tables: returns, income, deductions, credits and tax by income band, and household moves between counties and states. 5,025,727 rows.

Coverage: ZIP code income for tax years 2011 to 2022, with 27,588 ZIP codes in tax year 2022. County income for 3,143 counties, tax years 2011 to 2023. County-to-county and state-to-state migration for filing years 2011-2012 through 2022-2023. Tax year 2023 ZIP data was not published at build time.

Why pay for public data

The IRS publishes these as 73 CSV files and 37 guides, and changed file layouts, income bands and items over the years. This package puts every year in one schema under the original IRS item codes, adds a data dictionary row for each of the 511 columns, and labels the state-total, other-ZIP and summary migration rows so nothing is counted twice.

How it is built

  1. 1

    Pull the SOI Individual Income Tax ZIP Code Data, County Data and Migration Data from irs.gov.

  2. 2

    Reconcile every tax year into one layout. A column is NULL for a year the IRS did not publish it, and suppressed migration flows are flagged with IS_SUPPRESSED, never imputed.

  3. 3

    Add income band, state and county lookups with Census region, metro area and 2020 population. Rebuilt once a year when the IRS posts the next tax year.

What is in each record

FieldNotes
TAX_YEAR, STATE_ABBR, ZIP_CODE, ROW_TYPEROW_TYPE marks ZIP rows, state totals and the other-ZIPs row, ZIP_CODE 99999
AGI_STUB, AGI_BAND_LABELAdjusted gross income band, with dollar bounds in AGI_BAND
N1, MARS1, MARS2, MARS4, N2Returns by filing status, and individuals, as published
A00100, N00200, A00200AGI and wages. ZIP_INCOME carries 196 IRS items, with money in thousands of dollars
RETURNS, AGI_THOUSANDS, AVG_AGI_PER_RETURN_USD, PCT_RETURNS_AGI_200K_PLUSZIP_SUMMARY: one row per ZIP code and year, all income bands combined
COUNTY_FIPS, COUNTY_NAMECOUNTY_INCOME: the same items for 3,143 counties in 210 columns
FLOW_DIRECTION, ORIGIN_COUNTY_FIPS, DEST_COUNTY_FIPS, N1, N2, AGIMIGRATION_COUNTY: households, people and income moving between counties
ROW_LABEL, IS_SUMMARY, IS_SUPPRESSEDLabel the non-migrant, foreign, other-flow and total migration rows
CBSA_CODE, CBSA_TITLE, POPULATION_2020COUNTY lookup, plus STATE with Census region and division
DATA_DICTIONARYOne row for each of the 511 columns, with the IRS source field

Who uses it

  • Marketing, site selection and trade-area analysts
  • Credit, insurance and real estate modelers
  • Economic development and relocation researchers

Pricing

$199 a year.

No personal contact data is collected or sold in any QuestionPunk dataset.

Questions

Is this data not free from the government?
Yes. The source files are public and we link to them. You pay for the cleaning, the joins, the documented schema and the refresh, not for the data itself.
How is it delivered?
As Parquet or CSV files, by download link or to your own cloud bucket. The same tables load into Snowflake with the scripts we include.
Can I see the data before paying?
Yes. Ask for a sample and we send the Vermont rows from every table, plus the full data dictionary.
Is IRS data also free on Snowflake?
Yes. The IRS posts these files free on irs.gov, and the free public data listings on Snowflake Marketplace also carry IRS income and migration tables. Compare them before you buy. This package keeps every published item under its IRS code, back to tax year 2011, with a data dictionary row for every column.
Why is a ZIP code missing or a count rounded?
The IRS protects privacy before publishing. ZIP codes with fewer than 100 returns are folded into a per-state other-ZIPs row, items with fewer than 20 returns are dropped or combined, and counts are rounded to the nearest 10 from tax year 2012 on. Nothing is imputed.
How do I avoid double counting?
Filter ROW_TYPE to ZIP or COUNTY before summing, because the state-total and other-ZIPs rows are kept. Each migration flow appears once as an inflow and once as an outflow, so filter FLOW_DIRECTION too.
What is the license?
The sources are US government works from the IRS Statistics of Income Division. This product uses IRS data but is not endorsed or certified by the IRS.

Tell us what you need

Geography, size and fields. A two-line email is enough, and a person replies.

Request a sample

More from the catalog