FHA Lender Data

The API

41 REST endpoints. One bearer token, JSON in / JSON out, predictable schemas. MCP for Claude →

Quick start

# Bearer token in every request
export KEY="fhad_live_..."

# UWM performance nationally — channelized T/R/S response
curl -H "Authorization: Bearer $KEY" \
  https://api.fhalenderdata.com/v1/lenders/71845/performance

# Every DE lender in the Atlanta MSA (auto-folds Met. Divisions)
curl -H "Authorization: Bearer $KEY" \
  https://api.fhalenderdata.com/v1/geography/msa/12060/lenders

# Every HUD field office Equity Prime touches, latest vs prior snapshot
curl -H "Authorization: Bearer $KEY" \
  https://api.fhalenderdata.com/v1/lenders/27909/hud-offices

Lenders

Profile, channelized performance, quarterly history, branches, sponsor/correspondent relationships, and per-geo/per-HUD-office breakdowns. Every shape that exposes Compare Ratio carries the full Total / Retail / Sponsored split plus the matching area-channel benchmark.

GET/v1/lenders?q={name}click for example ↓

Search lenders by name. Returns lightweight matches with ID, HQ, branch count, and CWT flag.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders?q=equity+prime&limit=2"
Sample response
[{
  "lender_id": "27909",
  "name": "EQUITY PRIME MORTGAGE LLC",
  "headquarters_city": "ATLANTA",
  "headquarters_state": "GA",
  "institution_type": "Mortgage Company",
  "active_branches": 5,
  "cwt_flag": false
}]
GET/v1/lenders/{id_or_name}click for example ↓

Full profile by FHA ID OR name. If the name matches multiple lenders you get a {multiple_matches:true, matches:[...]} envelope to disambiguate; otherwise the full profile (DBAs + DE-termination history folded in).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/27909"
Sample response
{
  "multiple_matches": false,
  "profile": {
    "lender_id": "27909",
    "name": "EQUITY PRIME MORTGAGE LLC",
    "mortgagee_type": "Non-Supervised",
    "institution_type": "Mortgage Company",
    "cwt_flag": false,
    "branches_active": 5,
    "branches_terminated": 131,
    "lender_insurance_status": "Removed from LI program",
    "lender_insurance_date": "09/25/2025",
    "de_unconditional_date": "06/25/2009",
    "de_unconditional_status": "Unconditional",
    "sponsoring_loan_correspondents": 0,
    "authorized_agent_for": 41,
    "acting_as_principal_for": 3,
    "last_updated": "June 22, 2026",
    "dbas": [
      { "name": "LIGHTHOUSE LENDING CAPITAL",
        "branch_ids": ["2790900019","2790901361"], "active": true },
      { "name": "N2 FUNDING", "branch_ids": ["2790900002"], "active": true }
    ],
    "de_terminations": [
      { "notice_date": "2026-01-21",
        "fr_citation": "FR 2026-01040",
        "notice_type": "termination",
        "hud_office": "Atlanta" }
    ]
  }
}
GET/v1/lenders/{id}/performanceclick for example ↓

Headline CR + SDQ + originations at one geography, channelized into Total / Retail / Sponsored with a symmetric area-channel benchmark. Default geography=US, loan_type=fhax (excl. streamlines), delinquency_horizon=3.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/71845/performance?geography=US&loan_type=fhax&delinquency_horizon=3"
Sample response
{
  "lender_id": "71845",
  "lender_name": "UNITED WHOLESALE MORTGAGE, LLC",
  "as_of": "2026-06-22",
  "hud_period_end": "2026-05-31",
  "geography": { "type": "national", "code": "US" },
  "loan_type": "fhax",
  "delinquency_horizon": 3,
  "compare_ratio_view": "excl_streamlines",
  "cohort_window_start": "2024-07-01",
  "cohort_window_end": "2026-06-22",
  "supplemental_performance_metric": "253%",
  "mix_adjusted_sdq_rate": "1.37%",
  "total":     { "compare_ratio": 101, "loans": 151264, "sdq_and_claims": 5249, "pct_sdq_and_claims": 3.47, "branches": 1 },
  "retail":    { "compare_ratio": 200, "loans": 2020,   "sdq_and_claims": 132,  "pct_sdq_and_claims": 6.53, "branches": 1 },
  "sponsored": { "compare_ratio": 89,  "loans": 149244, "sdq_and_claims": 5117, "pct_sdq_and_claims": 3.43, "branches": 2 },
  "benchmark": {
    "total":     { "loans": 1612355, "sdq_and_claims": 55205, "pct_sdq_and_claims": 3.42 },
    "retail":    { "loans": 1197775, "sdq_and_claims": 39150, "pct_sdq_and_claims": 3.27 },
    "sponsored": { "loans": 414580,  "sdq_and_claims": 16055, "pct_sdq_and_claims": 3.87 }
  }
}
GET/v1/lenders/{id}/historyclick for example ↓

Quarterly CR trend with full T/R/S split per snapshot. Up to 13 quarter-ends back to 2023-Q1. Use this to flag CR drift before HUD's quarterly publication.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/75159/history?geography=US&quarters_back=4"
Sample response
{
  "lender_id": "75159",
  "lender_name": "FREEDOM MORTGAGE CORPORATION",
  "geography": { "type": "national", "code": "US" },
  "loan_type": "fhax",
  "delinquency_horizon": 3,
  "snapshots": [
    { "snapshot_date": "2026-03-31",
      "total":     { "compare_ratio": 80,  "loans": 30825, "sdq_and_claims": 883, "pct_sdq_and_claims": 2.86 },
      "retail":    { "compare_ratio": 59,  "loans": 18433, "sdq_and_claims": 366, "pct_sdq_and_claims": 1.99 },
      "sponsored": { "compare_ratio": 103, "loans": 12392, "sdq_and_claims": 517, "pct_sdq_and_claims": 4.17 } },
    { "snapshot_date": "2025-12-31",
      "total":     { "compare_ratio": 79,  "loans": 30444, "pct_sdq_and_claims": 2.46 },
      "retail":    { "compare_ratio": 53,  "loans": 17729, "pct_sdq_and_claims": 1.58 },
      "sponsored": { "compare_ratio": 104, "loans": 12715, "pct_sdq_and_claims": 3.70 } },
    { "snapshot_date": "2025-09-30",
      "total":     { "compare_ratio": 74,  "loans": 29737, "pct_sdq_and_claims": 1.75 } },
    { "snapshot_date": "2025-06-30",
      "total":     { "compare_ratio": 58,  "loans": 28777, "pct_sdq_and_claims": 1.34 } }
  ]
}
GET/v1/lenders/{id}/branchesclick for example ↓

All branches with address + phone + DBA + dates. status=active|terminated|merged|all.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/71970/branches?status=active"
Sample response
[
  { "branch_id": "7197000003", "phone": "3133733000",
    "street": "1050 WOODWARD AVE", "city": "DETROIT", "state": "MI", "zip": "48226",
    "status": "A", "authorized_date": "05/04/1988", "dba": "" },
  { "branch_id": "7197015303", "phone": "3133734564",
    "street": "1001 WOODWARD AVE SUITE 1600", "city": "DETROIT", "state": "MI", "zip": "48226",
    "status": "A", "authorized_date": "02/01/2022", "dba": "" },
  { "branch_id": "7197015349", "phone": "9723168004",
    "street": "8950 CYPRESS WATERS BLVD", "city": "COPPELL", "state": "TX", "zip": "75019",
    "status": "A", "authorized_date": "03/05/2008", "dba": "MR. COOPER" }
  // ... truncated
]
GET/v1/lenders/{id}/branches-in/{level}/{code}click for example ↓

One lender's branches scoped to a geography. Level: state | zip | county | msa.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/71970/branches-in/state/TX?status=active"
Sample response
[{
  "branch_id": "7197015349",
  "lender_id": "71970",
  "phone": "9723168004",
  "street": "8950 CYPRESS WATERS BLVD",
  "city": "COPPELL", "state": "TX", "zip": "75019",
  "status": "A",
  "authorized_date": "03/05/2008",
  "dba": "MR. COOPER",
  "snapshot_date": "2026-06-22"
}]
GET/v1/branches/{branch_id}click for example ↓

Reverse lookup — branch ID -> owning lender + branch details.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/branches/2790900002"
Sample response
{
  "branch_id": "2790900002",
  "lender_id": "27909",
  "lender_name": "EQUITY PRIME MORTGAGE LLC",
  "city": "ATLANTA", "state": "GA", "zip": "30328",
  "status": "A",
  "dba": "N2 FUNDING"
}
GET/v1/lenders/{id}/relationshipsclick for example ↓

Sponsor/correspondent graph (1 hop) as principal + agent counterparty lists. Each row carries counterparty ID, name, city/state, and status. Equity Prime is sponsor-heavy (3 principals, 41 agents) — ideal for TPO diligence.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/27909/relationships"
Sample response
{
  "lender_id": "27909",
  "lender_name": "EQUITY PRIME MORTGAGE LLC",
  "principals": [
    { "counterparty_id": "00046", "counterparty_name": "READY MORTGAGE LENDERS LLC",
      "phone": "3052611500", "city": "MIAMI", "state": "FL", "zip": "33126",
      "status": "A", "relationship_type": "principal" },
    { "counterparty_id": "00058", "counterparty_name": "MDE HOME LOANS, LLC",
      "city": "RED BANK", "state": "NJ", "status": "A",
      "relationship_type": "principal" }
    // ... 3 principals total
  ],
  "agents": [
    // ... 41 agents (TPO sponsorships)
  ]
}
GET/v1/lenders/{id}/de-breakdownclick for example ↓

Single-geo channelized snapshot — Total/Retail/Sponsored CR + SDQ for the lender plus the matching area-channel benchmark. Lighter-weight than /performance when you just need the channel block.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/71845/de-breakdown?geo_level=national&geo_code=US"
Sample response
{
  "lender_id": "71845",
  "lender_name": "UNITED WHOLESALE MORTGAGE, LLC",
  "snapshot_date": "2026-06-22",
  "geo_level": "national", "geo_code": "US",
  "loan_type": "fhax",
  "total":     { "compare_ratio": 101, "loans": 151264, "sdq_and_claims": 5249, "pct_sdq_and_claims": 3.47 },
  "retail":    { "compare_ratio": 200, "loans": 2020,   "sdq_and_claims": 132,  "pct_sdq_and_claims": 6.53, "branches": 1 },
  "sponsored": { "compare_ratio": 89,  "loans": 149244, "sdq_and_claims": 5117, "pct_sdq_and_claims": 3.43, "branches": 2 },
  "benchmark": {
    "total":     { "loans": 1612355, "sdq_and_claims": 55205, "pct_sdq_and_claims": 3.42 },
    "retail":    { "loans": 1197775, "sdq_and_claims": 39150, "pct_sdq_and_claims": 3.27 },
    "sponsored": { "loans": 414580,  "sdq_and_claims": 16055, "pct_sdq_and_claims": 3.87 }
  }
}
GET/v1/lenders/{id}/de-geos/{geo_level}click for example ↓

Sweep every geo at one level where the lender has DE activity, sorted by volume, each row carrying its own T/R/S block + area benchmark. Use min_loans to filter noise.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/75159/de-geos/state?min_loans=500"
Sample response
[
  { "geo_code": "FL", "geo_name": null,
    "total":     { "compare_ratio": 96,  "loans": 3299, "sdq_and_claims": 119, "pct_sdq_and_claims": 3.61 },
    "retail":    { "compare_ratio": 69,  "loans": 1221, "sdq_and_claims": 28,  "pct_sdq_and_claims": 2.29, "branches": 8 },
    "sponsored": { "compare_ratio": 97,  "loans": 2078, "sdq_and_claims": 91,  "pct_sdq_and_claims": 4.38, "branches": 9 },
    "benchmark": {
      "total":     { "loans": 160229, "sdq_and_claims": 6014, "pct_sdq_and_claims": 3.75 },
      "retail":    { "loans": 103000, "sdq_and_claims": 3424, "pct_sdq_and_claims": 3.32 },
      "sponsored": { "loans": 57229,  "sdq_and_claims": 2590, "pct_sdq_and_claims": 4.53 }
    } },
  { "geo_code": "TX",
    "total":     { "compare_ratio": 99,  "loans": 2532, "pct_sdq_and_claims": 2.84 },
    "retail":    { "compare_ratio": 372, "loans": 40,   "pct_sdq_and_claims": 10.0 },
    "sponsored": { "compare_ratio": 79,  "loans": 2492, "pct_sdq_and_claims": 2.73 }
  }
  // ... more states
]
GET/v1/lenders/{id}/hud-officesclick for example ↓

Every HUD field office where the lender has DE activity, with latest snapshot AND prior snapshot side-by-side so you can see direction of travel in one call. Built for lenders monitoring their own enforcement exposure. Equity Prime: 57 offices, several over the 200 termination threshold.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/lenders/27909/hud-offices"
Sample response
{
  "lender_id": "27909",
  "loan_type": "fhax",
  "delinquency_horizon": 3,
  "office_count": 57,
  "offices": [{
    "office_code": "406", "office_name": "ATLANTA", "state": "GA",
    "latest": {
      "snapshot_date": "2026-06-22", "hud_period_end": "2026-05-31",
      "total":     { "compare_ratio": 259, "loans": 899, "sdq_and_claims": 102, "pct_sdq_and_claims": 11.35 },
      "retail":    { "compare_ratio": 0,   "loans": 2,   "sdq_and_claims": 0,   "pct_sdq_and_claims": 0.0 },
      "sponsored": { "compare_ratio": 232, "loans": 897, "sdq_and_claims": 102, "pct_sdq_and_claims": 11.37 },
      "benchmark": { "total": { "loans": 80559, "pct_sdq_and_claims": 4.38 } }
    },
    "prior": {
      "snapshot_date": "2026-03-31",
      "total":     { "compare_ratio": 274, "loans": 983, "sdq_and_claims": 118, "pct_sdq_and_claims": 12.0 },
      "sponsored": { "compare_ratio": 230, "loans": 981, "sdq_and_claims": 118, "pct_sdq_and_claims": 12.03 }
    }
  }
  // ... 56 more offices
  ]
}

Geography

One unified dispatcher — /geography/{level}/{code}/{verb} — works at state / county / msa / zip / tract / cd / national. MSA codes for the 11 OMB-split metros (Chicago, NYC, LA, Boston, ...) auto-fold their Metropolitan Divisions so you get the whole metro back in one call.

GET/v1/geography/{level}/{code}/lendersclick for example ↓

Every DE lender in a geography with full T/R/S split per lender + share-of-market %. Works at state / county / msa / zip / tract / cd. For HUD field offices use the separate /v1/hud-offices/{code}/lenders endpoint.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/msa/12060/lenders?limit=3"
Sample response
{
  "geo_level": "msa", "geo_code": "12060",
  "geo_name": "ATLANTA-SANDY SPRINGS-ALPHARETTA, GA METROPOLITAN STATISTICAL AREA",
  "total_originations": 45690,
  "lender_count": 205,
  "lenders": [
    { "lender_id": "71845", "lender_name": "UNITED WHOLESALE MORTGAGE, LLC",
      "share_of_geo_pct": 9.84,
      "total":     { "compare_ratio": 117, "loans": 4495, "sdq_and_claims": 264, "pct_sdq_and_claims": 5.87 },
      "retail":    { "compare_ratio": 204, "loans": 83 },
      "sponsored": { "compare_ratio": 99,  "loans": 4412 } },
    { "lender_id": "71970", "lender_name": "ROCKET MORTGAGE, LLC",
      "share_of_geo_pct": 8.19,
      "total":     { "compare_ratio": 65, "loans": 3741, "sdq_and_claims": 122, "pct_sdq_and_claims": 3.26 },
      "retail":    { "compare_ratio": 60, "loans": 2549 },
      "sponsored": { "compare_ratio": 70, "loans": 1192 } }
    // ... 203 more
  ]
}
GET/v1/geography/{level}/{code}/summaryclick for example ↓

Lightweight aggregate — originations, distinct lenders, SDQ+claims count and rate. No per-lender data; use /lenders verb above if you need that.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/state/GA/summary"
Sample response
{
  "geo_level": "state",
  "geo_code": "GA",
  "snapshot_date": "2026-06-22",
  "total_originations": 72723,
  "distinct_lenders": 112,
  "sdq_and_claims": 3223,
  "pct_sdq_and_claims": 4.43
}
GET/v1/geography/{level}/{code}/trendclick for example ↓

Quarterly time series of any metric at any geo. Default metric is pct_sdq_and_claims. Up to 13 quarter-ends back to 2023-Q1.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/state/GA/trend?quarters_back=4"
Sample response
{
  "geo_level": "state", "geo_code": "GA",
  "metric": "pct_sdq_and_claims",
  "loan_type": "fhax",
  "series": [
    { "snapshot_date": "2025-09-30", "total_originations": 78781, "total_sdq": 2279, "pct_sdq_and_claims": 2.89 },
    { "snapshot_date": "2025-12-31", "total_originations": 79609, "total_sdq": 3027, "pct_sdq_and_claims": 3.80 },
    { "snapshot_date": "2026-03-31", "total_originations": 80328, "total_sdq": 3519, "pct_sdq_and_claims": 4.38 },
    { "snapshot_date": "2026-06-22", "total_originations": 80559, "total_sdq": 3529, "pct_sdq_and_claims": 4.38 }
  ]
}
GET/v1/geography/counties/sdqclick for example ↓

All ~3,200 US counties with originations + SDQ+claims rate. Choropleth-shaped (county_fips keyed).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/counties/sdq"
Sample response
[
  { "county_fips": "01001", "county_name": "Autauga County", "state": "AL",
    "originations": 134, "seriously_delinquent": 6, "claims": 0, "sdq_plus_claims_pct": 4.48 },
  { "county_fips": "01003", "county_name": "Baldwin County", "state": "AL",
    "originations": 221, "seriously_delinquent": 10, "claims": 0, "sdq_plus_claims_pct": 4.52 },
  { "county_fips": "01005", "county_name": "Barbour County", "state": "AL",
    "originations": 20, "seriously_delinquent": 3, "claims": 0, "sdq_plus_claims_pct": 15.0 }
  // ... ~3,200 more
]
GET/v1/geography/county/{fips}/zips/sdqclick for example ↓

ZIP-level SDQ rates inside a single county. Use for choropleth drill-down (county -> ZIP).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/county/13067/zips/sdq"
Sample response
[
  { "zip": "30008", "county_name": "Cobb County",
    "originations": 13, "seriously_delinquent": 2, "claims": 0, "sdq_plus_claims_pct": 15.38,
    "lat": 33.8972, "lng": -84.5920 },
  { "zip": "30062", "county_name": "Cobb County",
    "originations": 22, "seriously_delinquent": 3, "claims": 0, "sdq_plus_claims_pct": 13.64,
    "lat": 34.0025, "lng": -84.4633 }
  // ... all Cobb County ZIPs
]
GET/v1/geography/county/{fips}/zips/boundariesclick for example ↓

GeoJSON FeatureCollection of every ZIP polygon inside a county, with originations + SDQ properties for choropleth coloring.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/county/13067/zips/boundaries"
Sample response
{
  "type": "FeatureCollection",
  "features": [
    { "id": "18504", "type": "Feature",
      "properties": { "zip": "30008", "originations": 13, "sdq_plus_claims_pct": 15.38 },
      "geometry": { "type": "MultiPolygon", "coordinates": [...] } }
    // ... more ZIP polygons
  ]
}
GET/v1/geography/msas/sdqclick for example ↓

All ~928 US MSAs/Micropolitan with originations + SDQ+claims rate. Choropleth-shaped (cbsa_code keyed).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/msas/sdq"
Sample response
[
  { "cbsa_code": "10100", "cbsa_name": "ABERDEEN, SD MICROPOLITAN STATISTICAL AREA",
    "originations": 22, "seriously_delinquent": 1, "claims": 0, "sdq_plus_claims_pct": 4.55 },
  { "cbsa_code": "10180", "cbsa_name": "ABILENE, TX METROPOLITAN STATISTICAL AREA",
    "originations": 312, "seriously_delinquent": 10, "claims": 0, "sdq_plus_claims_pct": 3.21 }
  // ... ~926 more
]
GET/v1/geography/county-to-msaclick for example ↓

Full county_fips -> cbsa crosswalk so the client can roll county data up to MSA without a second API call.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/county-to-msa"
Sample response
[
  { "county_fips": "01001", "cbsa_code": "33860",
    "cbsa_name": "MONTGOMERY, AL METROPOLITAN STATISTICAL AREA" },
  { "county_fips": "01003", "cbsa_code": "19300",
    "cbsa_name": "DAPHNE-FAIRHOPE-FOLEY, AL METROPOLITAN STATISTICAL AREA" }
  // ... ~3,200 more
]

Boundaries (GeoJSON)

Polygon and centroid data for map rendering. The single-feature endpoint covers msa + zip; the bulk MSA file ships as a static FeatureCollection gzipped to ~1MB on wire.

GET/v1/geography/{level}/{code}/boundaryclick for example ↓

Single GeoJSON Feature for one geo. Supports msa + zip. Typical payload 5-50KB depending on shape complexity.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/msa/12060/boundary"
Sample response
{
  "type": "Feature",
  "id": "12060",
  "properties": {
    "cbsa_code": "12060",
    "cbsa_name": "ATLANTA-SANDY SPRINGS-ALPHARETTA, GA METROPOLITAN STATISTICAL AREA"
  },
  "geometry": {
    "type": "Polygon",
    "coordinates": [[[ -85.4447, 34.1999 ], [ -85.4308, 34.2316 ], ... ]]
  }
}
GET/v1/geography/{level}/centroidsclick for example ↓

Lightweight {code, name, lat, lng, bbox} per geo at one level. For dot/scatter maps and label placement.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/msa/centroids"
Sample response
[
  { "code": "10100", "name": "ABERDEEN, SD MICROPOLITAN STATISTICAL AREA",
    "lat": 45.4357, "lng": -98.6692,
    "bbox": [-99.8529, 45.0130, -97.5463, 45.9384] },
  { "code": "10180", "name": "ABILENE, TX METROPOLITAN STATISTICAL AREA",
    "lat": 32.5675, "lng": -99.6546,
    "bbox": [-100.3232, 31.8339, -98.8341, 33.2616] }
  // ... ~928 total
]
GET/v1/geography/msas/boundariesclick for example ↓

All ~928 MSA polygons as one GeoJSON FeatureCollection. Gzipped to ~1MB on wire. Powers the national MSA choropleth in one fetch.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/msas/boundaries"
Sample response
{
  "type": "FeatureCollection",
  "features": [
    { "type": "Feature", "id": "12060",
      "properties": { "cbsa_code": "12060", "cbsa_name": "ATLANTA-..." },
      "geometry": { "type": "Polygon", "coordinates": [...] } }
    // ... ~927 more
  ]
}

HUD field offices

HUD's enforcement unit — Credit Watch Termination is geo-scoped to a field office per 24 CFR 203.3(d). Both endpoints below accept either the office NAME ('ATLANTA') or numeric CODE ('406'). The per-lender HUD-office view lives under /v1/lenders/{id}/hud-offices.

GET/v1/hud-officesclick for example ↓

Every HUD field office with aggregate originations + SDQ+claims rate. Choropleth-shaped.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/hud-offices"
Sample response
[
  { "office_code": "406", "office_name": "ATLANTA", "state": "GA",
    "distinct_lenders": 112, "total_originations": 72723,
    "total_sdq": 3223, "total_claims": 0, "sdq_plus_claims_pct": 4.43 },
  { "office_code": "419", "office_name": "GREENSBORO", "state": "NC",
    "distinct_lenders": 94, "total_originations": 53948,
    "total_sdq": 1712, "total_claims": 0, "sdq_plus_claims_pct": 3.17 },
  { "office_code": "624", "office_name": "HOUSTON", "state": "TX",
    "distinct_lenders": 83, "total_originations": 49768,
    "total_sdq": 1591, "total_claims": 0, "sdq_plus_claims_pct": 3.20 }
  // ... ~80 offices total
]
GET/v1/hud-offices/{name_or_code}/lendersclick for example ↓

Lender roster for one HUD field office, sorted by volume by default. Accepts either name ('ATLANTA') or code ('406').

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/hud-offices/ATLANTA/lenders?limit=3"
Sample response
[
  { "lender_id": "71845", "lender_name": "UNITED WHOLESALE MORTGAGE, LLC",
    "originations": 7220, "seriously_delinquent": 371, "claims": 0,
    "pct_sdq_and_claims": 5.14, "compare_ratio": 117 },
  { "lender_id": "71970", "lender_name": "ROCKET MORTGAGE, LLC",
    "originations": 6974, "seriously_delinquent": 195, "claims": 0,
    "pct_sdq_and_claims": 2.80, "compare_ratio": 64 },
  { "lender_id": "21221", "lender_name": "NEW AMERICAN FUNDING, LLC",
    "originations": 2984, "seriously_delinquent": 186, "claims": 0,
    "pct_sdq_and_claims": 6.23, "compare_ratio": 142 }
]

Market analysis

National + peer lenses — market summary, volume-tier peer comparison, period deltas, active Credit Watch list, recent DE-termination Federal Register notices.

GET/v1/market/summaryclick for example ↓

Latest national FHA snapshot with top-5 by volume. (Top-by-CR was removed — it biased toward low-volume noise.)

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/market/summary?geography=US"
Sample response
{
  "geography": { "type": "national", "code": "US" },
  "as_of": "2026-06-22",
  "loan_type": "fhax",
  "total_originations": 1571026,
  "distinct_lenders": 678,
  "total_sdq": 54019,
  "total_claims": 0,
  "pct_sdq_and_claims": 3.44,
  "peer_average_compare_ratio": 100,
  "top_5_by_volume": [
    { "lender_id": "71845", "lender_name": "UNITED WHOLESALE MORTGAGE, LLC",
      "originations": 151264, "seriously_delinquent": 5249, "compare_ratio": 101 },
    { "lender_id": "71970", "lender_name": "ROCKET MORTGAGE, LLC",
      "originations": 119929, "seriously_delinquent": 3238, "compare_ratio": 79 },
    { "lender_id": "05424", "lender_name": "DHI MORTGAGE COMPANY LTD",
      "originations": 60705,  "seriously_delinquent": 1430, "compare_ratio": 69 }
    // ... 2 more
  ]
}
GET/v1/market/peers/{id}click for example ↓

Lender vs HUD volume-tier peer cohort (Mega/Large/Medium/Small/Micro) — median + top/bottom quartile + rank in cohort.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/market/peers/27909?geography=US"
Sample response
{
  "lender_id": "27909",
  "lender_name": "EQUITY PRIME MORTGAGE LLC",
  "peer_group": "Large",
  "lender_metrics": {
    "compare_ratio": 256,
    "pct_sdq_and_claims": 8.75,
    "sdq_and_claims": 1269,
    "originations": 14504
  },
  "peer_median":        { "compare_ratio": 113, "pct_sdq_and_claims": 3.12 },
  "peer_top_quartile":  { "compare_ratio": 87,  "pct_sdq_and_claims": 2.46 },
  "peer_bottom_quartile":{ "compare_ratio": 127, "pct_sdq_and_claims": 3.74 },
  "lender_rank_in_peer_group": 287,
  "peer_group_size": 287
}
GET/v1/market/period-comparison/{id}click for example ↓

One lender across two snapshot dates with deltas. period_a and period_b must be dates that exist in /snapshots/latest available_quarter_ends.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/market/period-comparison/75159?period_a=2025-12-31&period_b=2026-03-31&geography=US"
Sample response
{
  "lender_id": "75159",
  "lender_name": "FREEDOM MORTGAGE CORPORATION",
  "geography": { "type": "national", "code": "US" },
  "period_a": "2025-12-31",
  "period_b": "2026-03-31",
  "period_a_metrics": { "compare_ratio": 79, "originations": 30444, "pct_sdq_and_claims": 2.46 },
  "period_b_metrics": { "compare_ratio": 80, "originations": 30825, "pct_sdq_and_claims": 2.86 },
  "deltas":           { "compare_ratio": 1,  "originations": 381,   "pct_sdq_and_claims": 0.40 }
}
GET/v1/market/credit-watchclick for example ↓

Lenders currently flagged on HUD Credit Watch (cwt_flag set in HUD's formal review). Returns [] when no active flags — distinct from CR > 150, which you'd discover via /lenders/{id}/performance.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/market/credit-watch"
Sample response
[
  // Empty array when no lenders currently flagged.
  // When populated, each entry has:
  // { "lender_id": "...", "name": "...",
  //   "institution_type": "...", "headquarters_state": "...",
  //   "current_compare_ratio": 178, "flagged_status": "active" }
]
GET/v1/credit-watch/de-terminationsclick for example ↓

Recent Federal Register DE-termination notices, newest first. Each notice carries the affected[] roster of lender + HUD-office pairs (parsed from the FR PDF).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/credit-watch/de-terminations?limit=2"
Sample response
[{
  "notice_date": "2026-01-21",
  "fr_citation": "FR 2026-01040",
  "fr_url": "https://www.federalregister.gov/documents/2026/01/21/2026-01040/credit-watch-termination-initiative-terminations-of-direct-endorsement-de-approval",
  "notice_type": "termination",
  "affected": [
    { "lender_id": "27909", "lender_name": "Equity Prime Mortgage LLC", "hud_office": "Atlanta" },
    { "lender_id": "27909", "lender_name": "Equity Prime Mortgage LLC", "hud_office": "Columbia" },
    { "lender_id": "27909", "lender_name": "Equity Prime Mortgage LLC", "hud_office": "Dallas" },
    { "lender_id": "27909", "lender_name": "Equity Prime Mortgage LLC", "hud_office": "Houston" }
    // ... more office terminations
  ]
}]

Servicers

Mirror of the lender-side surface for the servicing leg — portfolio, delinquency, loss-mit pipeline, HUD TRSII tier ranking. SDQ rates here are servicer-side (active portfolio), distinct from origination-side SDQ on the lender endpoints.

GET/v1/servicers?q={name}click for example ↓

Name -> servicer_id resolver with portfolio size + TRSII tier.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers?q=rocket"
Sample response
[{
  "servicer_id": "71970",
  "servicer_name": "ROCKET MORTGAGE, LLC",
  "active_portfolio": 1385048,
  "pct_seriously_delinquent": 5.14,
  "tier": 1
}]
GET/v1/servicers/{id}/portfolioclick for example ↓

Active portfolio shape — loans, 30/60-day delinquency, SDQ, foreclosure rate, monthly volume added.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/71970/portfolio?geography=US"
Sample response
{
  "servicer_id": "71970",
  "servicer_name": "ROCKET MORTGAGE, LLC",
  "geography": { "type": "national", "code": "US" },
  "as_of": "2026-06-22",
  "status": "A",
  "status_date": "05/04/1988",
  "loans_added_last_month": 1866,
  "active_portfolio": 1385048,
  "h4h_loans": 90,
  "delinquent_30_day": 71463,
  "delinquent_60_day": 20687,
  "seriously_delinquent": 71242,
  "total_delinquent": 163392,
  "pct_seriously_delinquent": 5.14,
  "in_foreclosure_count": 8880,
  "in_foreclosure_rate": 0.64,
  "originated_le_2yr": 213427
}
GET/v1/servicers/{id}/loss-mitclick for example ↓

Active workout pipeline (forbearance / mod / partial claim / DIL / pre-FC) + lifetime claims paid by workout type + headline workout ratio.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/71970/loss-mit?geography=US"
Sample response
{
  "servicer_id": "71970",
  "active_pipeline": {
    "borrower_financials_under_review": 5,
    "forbearance_actions": 2895,
    "loan_modification_actions": 369,
    "partial_claims_actions": 392,
    "fha_hamp_actions": 2,
    "deed_in_lieu_actions": 2,
    "pre_foreclosure_actions": 40,
    "loss_mit_option_failure": 8658,
    "ineligible_for_loss_mit": 873
  },
  "lifetime_claims": {
    "total": 60643, "forbearance": 3084, "loan_mod": 11479,
    "partial_claims": 45787, "hamp_loan_mod": 111,
    "deed_in_lieu": 0, "pre_foreclosure_sale": 150, "total_conveyance": 281
  },
  "workout_ratio": 99.53,
  "workout_ratio_compare_ratio": 101
}
GET/v1/servicers/topclick for example ↓

Top-N servicers sorted by portfolio_size | sdq_rate | workout_ratio.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/top?sort=portfolio_size&limit=3"
Sample response
[
  { "servicer_id": "71970", "servicer_name": "ROCKET MORTGAGE, LLC",
    "active_portfolio": 1385048, "seriously_delinquent": 71242,
    "pct_seriously_delinquent": 5.14, "in_foreclosure_rate": 0.64 },
  { "servicer_id": "75159", "servicer_name": "FREEDOM MORTGAGE CORPORATION",
    "active_portfolio": 1055391, "seriously_delinquent": 62754,
    "pct_seriously_delinquent": 5.94, "in_foreclosure_rate": 0.41 },
  { "servicer_id": "28095", "servicer_name": "PENNYMAC LOAN SERVICES LLC",
    "active_portfolio": 767102, "seriously_delinquent": 44010,
    "pct_seriously_delinquent": 5.73, "in_foreclosure_rate": 0.46 }
]
GET/v1/servicers/{id}/concentrationclick for example ↓

State-level concentration of a servicer's portfolio (top-N states + share + SDQ). No HHI label — caller computes if needed.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/71970/concentration?top_n=5"
Sample response
{
  "servicer_id": "71970",
  "total_portfolio": 1385048,
  "state_count": 52,
  "top_states": [
    { "state": "CA", "portfolio": 167230, "pct_of_book": 12.07, "sdq_pct": 4.21 },
    { "state": "TX", "portfolio": 142890, "pct_of_book": 10.32, "sdq_pct": 4.85 },
    { "state": "FL", "portfolio": 121040, "pct_of_book": 8.74,  "sdq_pct": 6.12 }
    // ... 2 more
  ]
}
GET/v1/servicers/{id}/tier-rankingclick for example ↓

HUD TRSII tier (1-4) + letter grade + score + Part-B reimbursement rate for the latest round (or pass round_number for a specific one).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/71970/tier-ranking"
Sample response
{
  "servicer_id": "71970",
  "servicer_name": "ROCKET MORTGAGE, LLC",
  "round_number": 12,
  "evaluation_period_start": "10/1/2023",
  "evaluation_period_end": "9/30/2024",
  "tier": 1,
  "grade": "A",
  "score_pct": 96.36,
  "part_b_reimbursement_pct": 75.0,
  "published_at": "2026-06-21"
}
GET/v1/servicers/trsii/by-tier/{tier}click for example ↓

Every servicer at a TRSII tier (1-4), sorted by score. Tier 1 = top performers (75% Part-B reimbursement).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/servicers/trsii/by-tier/1?limit=2"
Sample response
[
  { "servicer_id": "15076", "servicer_name": "CENTRAL NATIONAL BANK",
    "round_number": 12,
    "evaluation_period_start": "10/1/2023", "evaluation_period_end": "9/30/2024",
    "tier": 1, "grade": "A", "score_pct": 98.87,
    "part_b_reimbursement_pct": 75.0, "published_at": "2026-06-21" },
  { "servicer_id": "13065", "servicer_name": "BANK OF AMERICA NA CHARLOTTE",
    "round_number": 12, "tier": 1, "grade": "A", "score_pct": 97.58,
    "part_b_reimbursement_pct": 75.0, "published_at": "2026-06-21" }
]

Reference

Snapshot metadata, HUD's own refresh calendar, geo name resolvers (MSA / CD / tract).

GET/v1/snapshots/latestclick for example ↓

Data freshness — last refresh date, cohort window, and full list of available historical quarter-ends. Use the quarter-ends as valid period_a / period_b inputs for period-comparison.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/snapshots/latest"
Sample response
{
  "latest_refresh_date": "2026-05-31",
  "next_anticipated_refresh": null,
  "data_window_start": "2024-06-01",
  "data_window_end": "2026-05-31",
  "available_quarter_ends": [
    "2026-05-31", "2026-03-31", "2025-12-31", "2025-09-30",
    "2025-06-30", "2025-03-31", "2024-12-31", "2024-09-30",
    "2024-06-30", "2024-03-31", "2023-12-31", "2023-09-30",
    "2023-06-30", "2023-03-31"
  ]
}
GET/v1/hud/refresh-scheduleclick for example ↓

HUD's own refresh calendar — when they updated last + when next expected. Our data typically reflects HUD's update within 1-2 days.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/hud/refresh-schedule"
Sample response
{
  "hud_last_refreshed": "2026-06-12",
  "hud_next_expected": "2026-07-18",
  "hud_data_window_start": "2024-06-01",
  "hud_data_window_end": "2026-05-31",
  "we_checked_at": "2026-06-22T11:39:12.862520+00:00",
  "disclaimer": "Our data typically reflects HUD's update within 1-2 days after the next-expected date. HUD occasionally delays past their target."
}
GET/v1/geography/find/msaclick for example ↓

Resolve an MSA name fragment to its CBSA code.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/find/msa?q=atlanta"
Sample response
[{
  "cbsa_code": "12060",
  "cbsa_name": "ATLANTA-SANDY SPRINGS-ALPHARETTA, GA METROPOLITAN STATISTICAL AREA",
  "kind": "metro"
}]
GET/v1/geography/find/congressional-districtclick for example ↓

Resolve a congressional district from 'TX-23' style input to its CD code.

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/find/congressional-district?q=TX-23"
Sample response
[{
  "cd_code": "4823",
  "state": "TX",
  "district": "23"
}]
GET/v1/geography/find/tractclick for example ↓

Look up an 11-digit census tract code (state FIPS + county FIPS + tract).

Example call
curl -H "Authorization: Bearer $KEY" \
  "https://api.fhalenderdata.com/v1/geography/find/tract?q=13089023113"
Sample response
[{
  "tract_code": "13089023113",
  "state": "GA"
}]
Coming soon

API access opens at launch

Sign-up + pricing land alongside public release.

Notify me at launch