Pushbuild

US County Migration API – IRS Moves In and Out of Every County

Households, people and income moving between US counties each year since 2011, from IRS tax return address changes (SOI migration data).

$0.80 per 1,000 flows

Get an API key
POST

Example request

POST /us-county-migration/run
{
  "county": "Travis",
  "state": "TX",
  "maxItems": 20
}

What it returns

How many households and people moved into or out of any US county each year, where they came from or went, and their total adjusted gross income, from the IRS Statistics of Income migration data, built from address changes on individual tax returns.

Search by county name and state or FIPS code, inbound, outbound or both, for one year or all years since 2011-2012, with a minimum flow size. Each flow has origin and destination county and state, households (returns), people (exemptions), AGI in thousands and AGI per household. Optional summary rows give each county's total in- and out-migration, non-movers and foreign moves.

Source: IRS SOI county-to-county migration files, 2011-2012 through 2022-2023 (a new year appears about two years after the move). Small flows are suppressed by the IRS and folded into "other flows".

Charged per flow returned.

Request

POST https://api.pushbuild.com/us-county-migration/run with a JSON body. Send your key in the X-API-Key header.

FieldTypeDescription
countystringCounty name or its start, e.g. Travis. Pair with state.
statestringTwo-letter state of the county, or alone for every county in the state.
countyFipslist of stringsFive-digit county FIPS codes, e.g. 48453.
directionstring: inbound, outbound, bothinbound (moved into the county), outbound (moved out) or both. Default: "inbound".
yearintegerFirst filing year of the pair, e.g. 2022 for moves between 2022 and 2023 returns. Leave empty for all years.
minPeopleintegerSmallest flow to return.
includeSummaryRowsbooleanAlso return total, non-migrant, foreign and suppressed other-flow rows.
maxItemsintegerMaximum items to return (1-500). Default: 100.

Example

curl -X POST https://api.pushbuild.com/us-county-migration/run \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"county": "Travis", "state": "TX", "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 flows. 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/us-county-migration. 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.com

(617) 299-8887

Tell us about your project

A few questions so we can come back with a written scope. We reply within one business day.

Want this data inside your own app or CRM? API integrations and data sync