Catalog / ToolMint HUD FMR + Income Limits
ToolMint HUD FMR + Income Limits
HUD Fair Market Rents and Income Limits by US county as clean agent JSON. Attribution, terms and provenance on every paid response.
Routes and prices
| Route | Price | What it does | Parameters (* required) |
|---|---|---|---|
GET /fmr/county/{fips} | $0.01 | Fair Market Rents for a county-year | fips*, year |
GET /il/county/{fips} | $0.01 | Income Limits for a county-year | fips*, year |
GET /county/{fips} | $0.02 | FMR + Income Limits for a county-year | fips*, year |
Free routes: /, /health, /openapi.json, /.well-known/x402, /counties/:state.
What question it answers
- "What are HUD's Fair Market Rents (studio to 4 bedroom) for this county?"
- "What are HUD's income limits (30%, 50%, 80% of area median) for this county, by household size 1 to 8?"
Rents are US dollars per month; income limits are dollars per year.
When to use it
- Rent-comparison and affordability screens, Section 8 style checks, underwriting first passes.
- You have a county FIPS code. If not, call the free
GET /counties/:state(for example/counties/LA) to list counties and their codes.
When not to
- Not for a specific address or ZIP. This is county (or New England town) level. In Small Area FMR areas you get the metro-level row only, and
smallAreaFmristrue. - Reference data for screening. HUD says to confirm current values on huduser.gov before program or underwriting decisions.
- Not a market rent estimate. FMR is a HUD program figure.
Example
# 5-digit county FIPS; 22015 = Bossier Parish, LA
curl -i "https://toolmint-hud-fmr-income-limits.toolmint.workers.dev/fmr/county/22015"
Unpaid, this returns HTTP 402. Trimmed 200 response shape.
{
"tool": "hud-fmr-income-limits",
"version": "0.1.0",
"query": { "fips": "2201599999", "year": null },
"fmr": {
"entityId": "2201599999",
"countyName": "Bossier Parish, LA",
"areaName": "Shreveport-Bossier City, LA MSA",
"metroStatus": true,
"smallAreaFmr": false,
"year": 2026,
"rentsUsdPerMonth": { "efficiency": 758, "oneBedroom": 769, "twoBedroom": 948, "threeBedroom": 1186, "fourBedroom": 1386 },
"basis": "County / FMR-area level"
},
"provenance": [{ "dataset": "Fair Market Rents",
"sourceUrl": "https://www.huduser.gov/hudapi/public/fmr/data/2201599999",
"fetchedAt": "2026-10-31T...Z", "toolVersion": "0.1.0", "contentHash": "sha256:..." }],
"attribution": "This product uses the HUD User Data API but is not endorsed or certified by HUD User.",
"notice": "Reference data only; confirm current-year values on huduser.gov before program or underwriting decisions.",
"cacheHit": false
}
Income limits come back as incomeLimits with medianFamilyIncomeUsd and incomeLimitsUsdPerYear.{extremelyLow30, veryLow50, low80}, each an array of 8 values for household sizes 1 to 8.
Data source and licence
HUD USER Data API (US Department of Housing and Urban Development). Under HUD's API terms, services may search, display and analyze the data; the notice above must be shown, and HUD User's name must not imply endorsement. Values are passed through unchanged. Terms: https://www.huduser.gov/portal/dataset/api-terms-of-service.html. The USPS ZIP crosswalk is not used. Check HUD's terms for your own use.
Freshness and limits
- FMR and income limits are annual HUD figures. Responses are cached 24 hours per county and year on a warm Worker instance, and keep the original
fetchedAt. - HUD allows 60 queries a minute; the Worker stops itself at 50 a minute per instance and answers 503 (not charged).
- County level only. Small Area FMR ZIP rows are not returned.
Errors are not charged
Payment settles only on a successful answer. These responses are never settled:
| Status | Meaning (from the OpenAPI) | Charged? |
|---|---|---|
400 | Bad state (code bad_input) | No |
404 | No HUD data for that county/year, code not_found (not charged) | No |
500 | Internal error, code internal (not charged) | No |
502 | Upstream error, code upstream_error (not charged) | No |
503 | Rate limited (code rate_limited, Retry-After) or not configured | No |