{"openapi":"3.1.1","info":{"title":"County income and migration from IRS tax returns: data API","version":"v1","summary":"Static, read-only JSON and CSV files. No key, no sign-up. CORS open.","description":"County income and migration from IRS tax returns: Individual income tax returns, individuals, adjusted gross income, salaries and wages in every U.S. county for the latest tax year, with the change in income per return from the year before, and the returns and income that moved into and out of each county and state between two filing years, from the IRS Statistics of Income county and migration files. The IRS rounds county returns to the nearest 10 and withholds a migration flow under 20 returns; withheld cells are left empty and marked suppressed, never estimated.\n\nProbative is a marketing firm, not a law firm; not legal advice. Every JSON response starts with a \"meta\" object holding the credit line, citation, DOI and license (CC BY 4.0).","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"contact":{"name":"Probative Growth","url":"https://probativegrowth.com/contact/","email":"hello@probativegrowth.com"}},"servers":[{"url":"https://probativegrowth.com"}],"externalDocs":{"description":"How to use the API and the MCP server","url":"https://probativegrowth.com/resources/rules-api/"},"paths":{"/data/v1/county-income/index.json":{"get":{"summary":"County income and migration from IRS tax returns: index","description":"county-income: meta, summary and what the dataset holds","parameters":[],"responses":{"200":{"description":"County income and migration from IRS tax returns: index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/changes.json":{"get":{"summary":"County income and migration from IRS tax returns: confirmed changes","description":"county-income: confirmed changes, newest first","parameters":[],"responses":{"200":{"description":"County income and migration from IRS tax returns: confirmed changes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/jurisdictions/{key}.json":{"get":{"summary":"County income and migration from IRS tax returns: one jurisdiction","description":"county-income: the records for one jurisdiction","parameters":[{"name":"key","in":"path","required":true,"description":"The jurisdiction key, uppercase","schema":{"type":"string"}}],"responses":{"200":{"description":"County income and migration from IRS tax returns: one jurisdiction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/county-income.csv":{"get":{"summary":"County income and migration from IRS tax returns as CSV","description":"county-income: every record (credit line in README.txt)","parameters":[],"responses":{"200":{"description":"County income and migration from IRS tax returns as CSV","content":{"text/csv":{"schema":{"type":"string"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/county-income.json":{"get":{"summary":"County income and migration from IRS tax returns: every record","description":"county-income: every record in one file","parameters":[],"responses":{"200":{"description":"County income and migration from IRS tax returns: every record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/search.json":{"get":{"summary":"County income and migration from IRS tax returns: keyword index","description":"county-income: id, key, status and text of every record","parameters":[],"responses":{"200":{"description":"County income and migration from IRS tax returns: keyword index","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Envelope"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}},"/data/v1/county-income/README.txt":{"get":{"summary":"Credit line, citation and columns","description":"county-income: the CSV sidecar","parameters":[],"responses":{"200":{"description":"Credit line, citation and columns","content":{"text/plain":{"schema":{"type":"string"}}}},"404":{"description":"No such file"}},"tags":["county-income"]}}},"components":{"schemas":{"Meta":{"type":"object","description":"Credit line, citation, DOI, version, license and disclaimer. Present in every response.","required":["dataset","version","license","attribution","disclaimer","url"],"properties":{"dataset":{"type":"string"},"title":{"type":"string"},"version":{"type":"string"},"doi":{"type":["string","null"]},"doiUrl":{"type":["string","null"]},"conceptDoi":{"type":["string","null"]},"license":{"type":"string","const":"CC BY 4.0"},"licenseUrl":{"type":"string"},"attribution":{"type":"string"},"citation":{"type":"string"},"disclaimer":{"type":"string"},"notice":{"type":"string"},"lastChecked":{"type":"string"},"url":{"type":"string"},"humanUrl":{"type":"string"},"statusCodes":{"type":"object"}}},"Envelope":{"type":"object","required":["meta"],"properties":{"meta":{"$ref":"#/components/schemas/Meta"}},"additionalProperties":true}}}}