# 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.

- Status: Coming soon
- Price: $0.01–$0.02 / call (x402 exact, USDC on Base eip155:8453, payTo 0xfbF7413bcB3a604936775C96FDbe0b0C9c9E37F5)
- Planned URL: https://toolmint-hud-fmr-income-limits.toolmint.workers.dev
- OpenAPI: https://toolmint.toolmint.workers.dev/tools/hud-fmr-income-limits/openapi.json

## Routes

- `GET /fmr/county/{fips}` $0.01: Fair Market Rents for a county-year
- `GET /il/county/{fips}` $0.01: Income Limits for a county-year
- `GET /county/{fips}` $0.02: FMR + Income Limits for a county-year

## 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

```bash
# 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.
```json
{
  "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.
