Last updated
Download the data
The full LenderTracker dataset is free to download. It has 66 records: 50 lenders with published terms and 16 lenders we’re watching that haven’t published terms yet. These are static files, so there’s no API key, account or signup. They’re updated whenever we re-check lenders (last check October 16, 2026).
| File | Format | What’s in it |
|---|---|---|
| lenders.csv | CSV (UTF-8) | One row per lender with the summary fields below. Lists are joined with “; ”. |
| lenders.json | JSON array | Everything in the CSV, plus program details and dated terms from lender marketing emails. |
| llms-full.txt | Plain text | The same dataset written out as readable text, one section per lender. |
| openapi.json | OpenAPI 3.1 | Machine-readable description of the two data files and their fields. |
| /.well-known/api-catalog | Linkset (RFC 9727) | Standard index pointing to the files above. |
How to read it
- Every value comes from the lender’s own website or its own marketing emails. If a lender doesn’t publish a term, the field is empty (null). That means “not published,” not “no.” We never estimate.
- Advertised rates are “starting at” floors, not quotes, and always come with the date they were published (
as_of). Email figures older than 180 days are markedhistoricaland aren’t current pricing. - State coverage counts only when the lender names the state. An empty
stateslist means coverage is unknown. - No placement is paid. LenderTracker takes no per-loan or per-lead fees and doesn’t broker loans.
- Terms change often. Confirm current terms with the lender in writing before relying on them. See how we collect data.
- If you use the data, please credit LenderTracker with a link to lendertracker.com. Found an error? Report it.
Fields
| Field | Type | Meaning |
|---|---|---|
name | string | Lender name. |
slug | string | Identifier. The lender’s page is /lenders/{slug}/. |
listing | string|null | “prospect” = a lender we watch that hasn’t published terms (no terms are shown). “full” = added from the lender’s own marketing emails with dated terms. Empty = tracked from the lender’s website. |
website | string | Lender’s website. |
loan_types | array | Loan types the lender offers: dscr, fix-flip, bridge, hard-money, ground-up, non-qm. In the CSV they are joined with “; ”. |
channel | string | How the lender works with borrowers (for example “Direct to investors” or “Wholesale (through brokers)”), or “Not published”. |
states | array|null | Two-letter codes of states the lender lists as served (DC included). Empty/null means the lender didn’t list states: coverage unknown. |
confirmed_states | array | States the lender names in its own marketing emails. Absent or empty if none. |
coverage_note | string|null | Coverage wording from the lender’s site, such as excluded states. |
min_fico | integer|null | Lowest minimum credit score the lender publishes for any program. Empty = not published. |
max_purchase_ltv | number|null | Highest published purchase loan-to-value, in percent. Empty = not published. |
max_cashout_ltv | number|null | Highest published cash-out loan-to-value, in percent. Empty = not published. |
min_dscr | number|string|null | Lowest published debt service coverage ratio (for example 1.0) or a text note such as a no-ratio option. Empty = not published. |
loan_min | integer|null | Smallest published loan amount, US dollars. Empty = not published. |
loan_max | integer|null | Largest published loan amount, US dollars. Empty = not published. |
prepay | string|null | Prepayment penalty terms as published. Empty = not published. |
str | boolean|null | True if the lender says it finances short-term rentals; false if it says it doesn’t; empty = not stated. |
foreign_national | boolean|null | True if the lender publishes a foreign national program; empty = not stated. |
notes | string|null | Clarifications about the published terms. |
source_urls | array | Lender pages the terms came from. In the CSV they are joined with “; ”. |
date_checked | string (date) | Date we last checked the lender’s sources (YYYY-MM-DD). |
data_completeness | number | Share of core fields the lender publishes, from 0 to 1. |
products | array | JSON only. Program-level terms as published text: type, loan_range, min_fico, max_ltv, leverage, min_dscr, prepay, notes. |
email_terms | array | JSON only. Terms from the lender’s own marketing emails: key, label, value, as_of (date published), program, historical (true when older than 180 days: not current pricing). Advertised rates are “starting at” floors, not quotes. |
field_asof | object | JSON only. For summary fields that came from a dated lender email, the date that figure was published. |
email_first_seen | string (date) | JSON only. Date of the first marketing email we saw from the lender. |
email_last_seen | string (date) | JSON only. Date of the most recent marketing email we saw from the lender. |
origin | string | JSON only. Where the record came from: “website” or “email-sweep”. |
terms_historical | boolean | JSON only. True when all of the lender’s email terms are older than 180 days. |
_kind | string | JSON only. Short note on how the record was added. |
Disclosure
LenderTracker’s creator is a licensed mortgage loan originator (MLO) with Kenwood Mortgage Investments (doesn’t own it). Kenwood is in the dataset like every other lender, with no special placement. The creator also makes business-purpose private money loans; those lending entities aren’t listed. Full disclosure.