ToolMint

Catalog / ToolMint HUD FMR + Income Limits

Coming soon Property & places

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

RoutePriceWhat it doesParameters (* required)
GET /fmr/county/{fips}$0.01Fair Market Rents for a county-yearfips*, year
GET /il/county/{fips}$0.01Income Limits for a county-yearfips*, year
GET /county/{fips}$0.02FMR + Income Limits for a county-yearfips*, 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 smallAreaFmr is true.
  • 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:

StatusMeaning (from the OpenAPI)Charged?
400Bad state (code bad_input)No
404No HUD data for that county/year, code not_found (not charged)No
500Internal error, code internal (not charged)No
502Upstream error, code upstream_error (not charged)No
503Rate limited (code rate_limited, Retry-After) or not configuredNo