What it returns
IRS individual income tax statistics for every US ZIP code, by adjusted gross income bracket, for tax years 2011 through 2023: number of returns by filing status, people, AGI and average AGI per return, wages, interest, dividends, business income, capital gains, IRA distributions, pensions, Social Security, unemployment, partnership and S-corp income, itemized deductions (state and local taxes, mortgage interest, charity), taxable income, EITC and child tax credit, income tax, total tax liability, refunds and amounts owed. Dollar amounts are in dollars.
Look up ZIP codes, a state's ZIP codes, or rank ZIP codes nationally by average AGI, wages, capital gains, business income, EITC or tax. Pick one tax year, every year for trends, the ZIP total or any of the six AGI brackets.
Source: IRS Statistics of Income ZIP code data, rebuilt yearly. The IRS leaves out ZIP codes with fewer than 100 returns and rounds counts.
Charged per ZIP code row returned.
Request
POST https://api.pushbuild.com/irs-income-by-zip/run with a JSON body. Send your key in the X-API-Key header.
| Field | Type | Description |
|---|---|---|
zips | list of strings | Five-digit ZIP codes, e.g. 10001, 94105. |
states | list of strings | Two-letter state codes. Use with sort to rank a state's ZIP codes. |
taxYear | integer | 2011-2023. Defaults to the latest year. |
allYears | boolean | Return every tax year (for trends) instead of one. |
incomeBracket | string: any, all, $1 under $25,000, $25,000 under $50,000, $50,000 under $75,000, $75,000 under $100,000, $100,000 under $200,000, $200,000 or more | all (ZIP total, default), any (every bracket), or one bracket. Default: "all". |
minReturns | integer | Skip ZIP codes with fewer returns, useful when ranking. |
sort | string: avgAgi, agi, returns, wages, capitalGains, businessIncome, eitc, totalTax | Rank by a measure, highest first: avgAgi, agi, returns, wages, capitalGains, businessIncome, eitc, totalTax. |
maxItems | integer | Maximum items to return (1-500). Default: 100. |
Example
curl -X POST https://api.pushbuild.com/irs-income-by-zip/run \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"zips": ["10001", "94105"], "maxItems": 20}'
Response
{"count": 20, "truncated": false, "seconds": 1.4, "items": [ { ... } ]}
Each call returns up to 500 items. Records that fail validation or are not found are flagged in the items and not charged.
Pricing
Pay only for results returned: $0.80 per 1,000 records. No charge for errors or empty searches.
Use it from Claude, ChatGPT or Cursor
This API is also an MCP server: https://api.pushbuild.com/mcp/irs-income-by-zip. Add it to any assistant that supports remote MCP servers, with your key in the X-API-Key header. Same prices. Setup for each app.
Tell us what you need built.
Questions about this API, higher volumes, or a data source you need that we don't cover yet.
hello@pushbuild.comWant this data inside your own app or CRM? API integrations and data sync