{
"id": "<string>",
"name": "<string>",
"is_hard_money": true,
"names": [
"<string>"
],
"n_names": 0,
"nmls": {
"id": 0,
"url": "<string>"
},
"n_loans_24m": 0,
"volume_24m": 0,
"n_open_liens": 0,
"open_balance": 0,
"n_markets": 0,
"markets": [
{
"market": "<string>",
"name": "<string>",
"is_hard_money": true,
"names": [
"<string>"
],
"former_names": [
"<string>"
],
"n_names": 0,
"n_loans": 0,
"n_loans_12m": 0,
"n_loans_24m": 0,
"volume_24m": 0,
"n_unpriced_24m": 0,
"n_blanket_positions_24m": 0,
"n_amount_excluded_24m": 0,
"n_parcels": 0,
"n_in_history": 0,
"n_in_history_12m": 0,
"n_in_history_24m": 0,
"n_open_24m": 0,
"n_in_both_24m": 0,
"n_open_liens": 0,
"n_open_first_liens": 0,
"n_open_junior_liens": 0,
"n_open_maturing_12m_from_as_of": 0,
"n_open_on_resold_parcels": 0,
"share_due_known": 123,
"open_balance": 0,
"n_balance_excluded": 0,
"n_loans_lender_disagrees": 0,
"n_first_lien_24m": 0,
"n_heloc_24m": 0,
"n_construction_24m": 0,
"n_purchase_money_24m": 0,
"n_investor_loans_24m": 0,
"n_borrowers": 0,
"n_borrowers_24m": 0,
"is_investor_lender": true,
"first_recording_date": "<string>",
"last_recording_date": "<string>",
"days_before_recordings_through": 0,
"active_12m_to_as_of": true,
"n_before_2002": 0,
"n_undated": 0,
"by_year": [
{
"year": 0,
"n_loans": 0,
"n_in_history": 0,
"n_open": 0,
"volume": 0,
"n_purchase": 0,
"n_investor": 0,
"median_amount": 0,
"floor": true
}
],
"by_month": [
{
"month": "<string>",
"n": 0,
"volume": 0,
"market_n": 0,
"share": 123,
"rank": 0,
"hard_money_market_n": 0,
"hard_money_rank": 0,
"n_purchase_money": 0,
"partial": true
}
],
"by_product_24m": [
{
"n": 0,
"share": 123
}
],
"by_term_band_24m": [
{
"n": 0,
"share": 123
}
],
"by_product_proxy_24m": [
{
"n": 0,
"share": 123
}
],
"by_loan_type_24m": [
{
"value": "<string>",
"n": 0,
"share": 123
}
],
"by_label_24m": [
{
"n": 0,
"share": 123
}
],
"n_unlabelled_24m": 0,
"by_property_type_24m": [
{
"value": "<string>",
"n": 0,
"share": 123
}
],
"share_non_owner_occupied_24m": 123,
"by_purpose_24m": [
{
"n": 0,
"share": 123
}
],
"by_outcome_24m": [
{
"n": 0,
"share": 123
}
],
"median_months_to_payoff": 123,
"terms": {
"amount": {
"p25": 0,
"p50": 0,
"p75": 0,
"n": 0
},
"rate": {
"p25": 123,
"p50": 123,
"p75": 123,
"n": 0,
"share_rated": 123
},
"term": {
"median_months": 123,
"share_le_24m": 123,
"share_25_120m": 123,
"share_121_359m": 123,
"share_ge_360m": 123,
"n": 0,
"share_term_known": 123
},
"loan_to_avm": {
"p25": 123,
"p50": 123,
"p75": 123,
"n": 0
},
"loan_to_price": {
"p25": 123,
"p50": 123,
"p75": 123,
"n": 0
},
"estimated_payment_p50": 0
},
"geography": {
"by_county": [
{
"value": "<string>",
"n_24m": 0,
"n_all": 0,
"volume_24m": 0,
"share_of_lender": 123,
"rank_in_geo": 0,
"share_of_geo": 123
}
],
"by_city": [
{
"value": "<string>",
"n_24m": 0,
"n_all": 0,
"volume_24m": 0,
"share_of_lender": 123,
"rank_in_geo": 0,
"share_of_geo": 123
}
],
"by_zip": [
{
"value": "<string>",
"n_24m": 0,
"n_all": 0,
"volume_24m": 0,
"share_of_lender": 123,
"rank_in_geo": 0,
"share_of_geo": 123
}
],
"n_zips_24m": 0,
"concentration_top3_zips": 123
},
"coverage": {
"market": "<string>",
"counties": [
"<string>"
],
"n_parcels_uncovered": 0,
"as_of": "<string>",
"recordings_through": "<string>",
"dated": true,
"history_capture_share": 123
},
"rankings": {
"rank_24m": 0,
"share_24m": 123,
"rank_by_volume_24m": 0,
"rank_in_class_24m": 0,
"rank_hard_money_24m": 0,
"share_of_hard_money_24m": 123,
"rank_purchase_24m": 0,
"share_by_volume_24m": 123,
"n_zips_ranked_first_24m": 0,
"n_cities_ranked_first_24m": 0,
"n_counties_ranked_first_24m": 0
},
"borrowers": {
"n_borrowers": 0,
"n_borrowers_24m": 0,
"n_resolved_24m": 0,
"share_resolved_24m": 123,
"borrower_measured_share": 123,
"n_repeat_24m": 0,
"n_new_12m": 0,
"n_churned_12m": 0,
"churn_measured": true,
"top_borrowers": [
{
"borrower_key": "<string>",
"name": "<string>",
"investor": {
"id": "<string>",
"name": "<string>",
"display_name": "<string>",
"kinds": [],
"institutional": true,
"n_deals": 0,
"last_bought_on": "<string>"
},
"is_entity": true,
"is_person": true,
"n_loans": 0,
"n_loans_24m": 0,
"volume_24m": 0,
"last_loan_on": "<string>"
}
],
"competing_lenders": [
{
"lender": {
"id": "<string>",
"name": "<string>",
"is_hard_money": true
},
"n_shared_borrowers_24m": 0,
"n_shared_borrowers_all": 0
}
],
"person_names_redacted": true
},
"investor_lending": {
"n_investor_loans": 0,
"n_investor_loans_12m": 0,
"n_investor_loans_24m": 0,
"share_investor_loans_24m": 123,
"n_investors_24m": 0,
"by_investor_kind_24m": [
{
"n": 0,
"share": 123
}
],
"n_deals_financed": 0,
"n_deals_financed_24m": 0,
"by_deal_kind": [
{
"n": 0,
"n_24m": 0
}
],
"n_auction_purchases_financed_24m": 0,
"n_wholesale_purchases_financed_24m": 0,
"top_investors": [
{
"investor": {
"id": "<string>",
"name": "<string>",
"display_name": "<string>",
"kinds": [],
"institutional": true,
"n_deals": 0,
"last_bought_on": "<string>"
},
"n_loans_24m": 0,
"volume_24m": 0,
"last_loan_on": "<string>"
}
],
"is_investor_lender": true
},
"flips_financed": {
"window_from": "<string>",
"window_to": "<string>",
"n_flips_captured": 0,
"capture_share": 123,
"n_flips_by_known_borrowers": 0,
"n_resold": 0,
"n_resold_priced": 0,
"median_gross_profit": 0,
"p25_gross_profit": 0,
"p75_gross_profit": 0,
"median_spread_ratio": 123,
"median_hold_days": 123,
"median_loan_to_price": 123,
"share_of_financed_flips": 123,
"by_year": [
{
"year": 0,
"n_flips_captured": 0,
"n_resold": 0,
"median_gross_profit": 0
}
]
},
"takebacks": {
"n_takebacks": 0,
"n_takebacks_24m": 0,
"by_instrument": [
{
"n": 0,
"share": 123
}
],
"n_loans_foreclosed": 0,
"n_takebacks_unlinked": 0,
"foreclosure_share": 123,
"median_days_takeback_to_resale": 123,
"is_auction_lender": true
},
"successor": {
"id": "<string>",
"name": "<string>",
"is_hard_money": true
},
"nmls": {
"id": 0,
"url": "<string>"
},
"id_history": [
{
"old_id": "<string>",
"lender_run": 0
}
],
"summary": "<string>",
"as_of": "<string>",
"recordings_through": "<string>",
"dated": true,
"data_end": "<string>",
"history_capture_share": 123,
"history_floor_year": 0,
"history_floor_p50": 0,
"share_parcels_with_lost_history": 123,
"purchase_measured": true,
"investor_lending_measured": true,
"flips_measured": true,
"borrowers_measured": true,
"takebacks_measured": true,
"counties_measured": true
}
]
}The Lender object
One lender of record: every spelling under one id, its loans counted once across open liens and recorded history, and a profile per market.
len_ plus 12 hex characters. The lender has the
same id on every instrument and in every market, whatever spelling the document used. KIAVI FUNDING INC, KIAVI FUNDING
LLC and LENDINGHOME FUNDING CORP are one lender under one id. names[] lists every spelling the recorded instruments
use.
Store the id, and keep the name for display. After a registry run, an old id goes one of two ways. Either it
redirects: you get the current profile, and meta.resolved_from names the id you asked for. Or the run
retired it: you get 410 gone with superseded_by: null. Then search by name again, as
Retired ids explains.
Every value is a snapshot at as_of, the financing slice date in meta.coverage[].lenders.as_of. Every response that
carries one says so in meta.dated[]. See dated data.
How a lender is identified
identity_basis says how the registry tied a spelling to its lender:
identity_basis | Means |
|---|---|
NAME_FOLD | The folded name alone. The fold removes case, punctuation and entity suffixes, and spells out abbreviations. So WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. |
TRUNCATED_PREFIX | A name the file cut short, joined to the one longer name it is a prefix of. |
ALIAS_DICTIONARY | A hand-kept row joined it: a recorded rename (QUICKEN LOANS to ROCKET MORTGAGE), a trade name, a spelling the same instrument carries both ways. former_names[] lists the spellings a rename retired. |
name can change under it when one spelling overtakes another. A hand-decided merge joins two spellings by a
dictionary row and retires the smaller id. The retired id still answers. See Retired ids.
Class and the hard-money flag
lender_class is a reading of the name, never a legal status. It is the same reading the parcel’s
financing block carries. The five classes:
BANKNONBANKPRIVATE: a trust, a seller carry-back or another private partyINDIVIDUAL: a person’s nameGOVERNMENT: HUD, the VA, a housing authority
BANK. A person whose surname is Banks does not.
A securitisation trust, or a trust with lender words in its name, reads NONBANK, not PRIVATE. A housing authority,
a city or a county reads GOVERNMENT unless it is a credit union.
PRIVATE is not the hard-money sense of “private lender”. For that sense, read is_hard_money. It is true when the
name carries hard-money vocabulary or is a known brand (hard_money_basis: NAME). Since 0.16.0 it is also true when
the book behaves like a hard-money book, that is when three things hold:
- the lender has 20 or more loans since 2015
- a quarter or more of them have a recording date within 45 days of a registered investor’s purchase
- the lender is not a bank
BEHAVIOUR, or BOTH when the name says so too. The second rule catches a lender that lends hard
money under a plain name, once the deed link of its market exists. A market without a deed link has the name rule
alone. investor_lending.is_investor_lender is the neighbouring flag: half or more of the window’s loans went to
registered investors, whatever the name.
Class basis
class_basis (since 0.17.0) says why the class reads as it does:
class_basis | Means |
|---|---|
NAME | The name rules alone, evaluated on the folded name. Nearly every lender. |
DICTIONARY | A hand-kept row overrides what the name says, for example BBVA USA read as a BANK although the name carries no bank word. |
BANK is a name with a bank word in it. When a registry
run reads a lender’s name as a person’s where it did not before, the lender falls under the
person gate. If it loses its id, the run retires the id with an alias row, and the id answers
410 gone. So the change is never silent.
Successor
successor (since 0.17.0) is the lender this one is now part of, on a market profile. The link is an ACQUISITION,
where the acquirer bought the lender or its book, or a SUBSIDIARY, where the parent owns it. The block carries the
successor’s id, name, lender_class and is_hard_money. The registry never merges the books: BANK ONE’s loans
stay BANK ONE’s, and WELLS FARGO BANK NORTHWEST NA keeps its own profile. The profile of each points at the lender it
is now part of instead. It is null when the registry holds no link, and null when the linked lender has no profile in
the market.
Investorlift keeps the links by hand. So successor is present on a few dozen lenders, not on every lender an
acquirer ever bought.
NMLS id
nmls (since 0.17.0) is the lender’s NMLS id and the NMLS Consumer Access page it opens (id, url). Investorlift
curates it by hand for the largest lenders, and starts from the most active in the last 24 months. It is null for
every lender no one curated yet, which is most of the registry. A null is “not looked up”, never “no NMLS
registration”. The id is the lender’s, so it is the same on every market profile and on the union object too.
Retired ids
Ids are a pure function of the folded name, so a registry rebuild re-issues the same id for the same name. A run retires an id only in three cases. The run decides that two ids were one lender: a spelling pair or a truncated spelling joined by a dictionary row,reason: MERGED or MERGED_PARTIAL. The run splits an id (NEW_SPLIT). Or a
lender’s rows leave the registry altogether (RETIRED). The registry keeps every retired id since the first run, in
every market that served the lender:
- On
GET /v1/lenders/{id},/loansand/borrowersa merged or split id answers 200 with the current lender indata.meta.resolved_fromlists the ids the API followed, oldest first. Store the currentid. - A
RETIREDid answers410 gonewithsuperseded_by: null, the reason and the registry run that retired it. Search by name withGET /v1/lenders/search. - An id that no run ever issued answers 404, and so does a chain that no longer leads to a lender.
id_history[]on a market profile is the other direction: every id retired into this lender, oldest run first. Each carries itsreasonand thelender_runthat retired it. It is empty on nearly every lender.
financed_by and filters.financing.lender_id filters follow an old id the same way and stamp meta.resolved_from
on the list. A registry built before 0.17.0 has no alias table: an old id answers 404 there, and meta.resolved_from is
absent.
What the counts are
Two tables feed the registry. The first is the open lien positions at the slice date, up to 4 per parcel. Each comes with the balance, rate, term and maturity the open-lien table carries. The second is the recorded mortgage history: the 5 most recent mortgages per parcel. The history captures about one open loan in five (coverage.history_capture_share),
and a paid-off loan is in neither table. The consequences:
n_loans,n_loans_12mandn_loans_24mcount instruments once across both tables. The same parcel, date and amount is one instrument. They are the origination counts, and the lender list ranks byn_loans_24m.n_in_historyand its windows are what the history holds, duplicated slots included. They are a floor, never an activity measure.- A bridge lender’s book is the most undercounted. The registry counts a short-term loan only while it is open, and the lender’s paid-off loans are in neither table. Compare hard-money lenders with each other, not with a bank.
- Every
by_yearrow beforehistory_floor_yearis a floor: the history keeps 5 slots per parcel. On a parcel with all five slots filled, the older mortgages fell out. - Volumes leave out amounts above $5,000,000. The file records a commercial facility’s whole amount on every parcel
it covers, so one facility can add billions to a bank’s window volume.
volume_24m, every volume inby_year,by_monthandgeography, and theterms.amountquartiles leave those instruments out.n_amount_excluded_24mcounts them, and the loan row keeps its amount withamount_outlierset. A blanket loan, one loan recorded on 5 or more parcels, counts once in the same sums, andn_blanket_positions_24mcounts its positions. Loan counts and the ranks by loans never change. - Null means not measured, and zero means measured and none.
n_open_maturing_12m_from_as_ofis null when fewer than half of the open positions carry a maturity date (share_due_known).n_purchaseandn_investoron a year, and every purchase, borrower, investor and flip figure below, are null without the market’s deed link or borrower match.purchase_measured,investor_lending_measured,flips_measuredandborrowers_measuredon the market profile say which of these the market measures.takebacksis null as a whole whiletakebacks_measuredis false, andn_counties_ranked_first_24mis null whilecounties_measuredis false (since 0.19.0). A margin is null under 20 resold flips with both prices, and a quartile under 3 values.
n_loans_24m counts every instrument of any kind, purchase money, refinance, HELOC and construction alike. For a
GOVERNMENT lender it counts the insurance claims and partial-claim seconds recorded under the agency’s name, not
originations.
One profile per market
The object carries the union totals:n_loans_24m, volume_24m, n_open_liens and open_balance, summed over
markets[]. It also carries one market profile per loaded market where the lender has loans, most loans first. Each
market profile carries these blocks:
rankings: the rank and share over the 24 months that end onas_of, overall, within its class and among hard-money lenders. The registry computes them over every lender of the market, the ones the default list hides included. So a profile’s rank can be absent from a default page of the list, which numbers its own rows.coverage: the counties the registry covers, the parcels left out, the slice date,recordings_throughand the capture share.- the
by_yearandby_monthseries against the market - the product, term, label and property-type mix
terms: the amount, rate and term quartiles, each with how much of the book carries itgeography- a
summarywritten from the served numbers at build time
recordings_through is fourteen days before as_of. The two weeks between are unmeasured, not empty. The registry
measures every recency on a lender against recordings_through, not against the slice date.
Who borrows, what was financed and how it ended
Since 0.16.0 the registry joins the recorded deeds to the loans. Three blocks and some counts read the join. The registry writes all of them into the profile at build time, and never computes them on read. Each is null as a whole where the market lacks its input.- Purchase money. The deeds decide
purposeon every loan row, never the file’s label. It isPURCHASEwhen a priced deed on the parcel is dated in the 45 days up to and including the recording date. It isNOT_PURCHASEwhen the deed registry covers those days and none falls in them, andUNKNOWNwhen it does not. - Purchase money on the profile.
by_purpose_24msplits the window, andsort=purchase_descorders byn_purchase_money_24m.rankings.rank_purchase_24mplaces the lender by it.terms.loan_to_priceis the loan against the deed price on the window’s purchase loans. A value above 1 is a rehab holdback on top of the price, not an error.purchase_measuredsays if the market serves any of it. borrowers. Who borrows. The block counts the borrowers, all time and in the window, and how many resolve to a registered investor.borrower_measured_shareis the share of the book with any borrower source at all. Not every loan has one: the recorded history names borrowers, and the open-lien table does not. The block also carries repeats, newcomers, churn, the ten largest borrowers and the ten lenders that share the most borrowers with this one.- A borrower is a key, 12 hex characters hashed from the folded name, the same key on every lender’s rows. The
profile serves a company’s name beside it. A person’s name is never on the profile, and
person_names_redactedsays when the registry dropped one. n_churned_12mcounts the borrowers whose last loan here is 12 to 36 months old and who took a later loan elsewhere. It counts them only when no open lien of this lender follows that later loan. On a feed that sees one loan in five, that count is a lower bound of leaving. It is not an upper bound of anything.churn_measuredis false where the registry cannot read churn at all.GET /v1/lenders/{id}/borrowerslists every borrower.investor_lending. How much of the book funds registered investors. The block carries the investor loans and their share of the window, and the investors and their kinds. It carries the deals whose purchase loan is this lender’s, by what occurred on them, and the auction and wholesale purchases among them. It also carries the ten largest investors andis_investor_lender. The purchase loan of a deal is a loan recorded in the 45 days from the purchase, the largest when several.by_outcome_24mandmedian_months_to_payoffbeside it say what became of the captured loans. The registry reads them from the later deeds and mortgages. The outcomes areRESOLVED_BY_RESALE,REFINANCED,OPEN,UNKNOWNand, since 0.19.0,FORECLOSED. The last one is a take-back deed on the parcel before any resale or later mortgage. They are a performance proxy and never a payment history.flips_financed. The flips bought in the 36 months to 45 days beforerecordings_throughwhose purchase loan was this lender’s. The block counts them, and it also carries the lender’s share of every flip the slice can attribute.capture_sharemeasures them against the flips by investors who borrow from this lender elsewhere, whose own purchase loan the slice did not see. Where 20 or more flips resold with both prices, the block carries the resale margins:median_gross_profitwith its quartiles,median_spread_ratio,median_hold_daysandmedian_loan_to_price. Under that the margins are null, and a gross profit is never net of rehab or costs.
NONE_CAPTURED purchase on a deal is not a cash purchase. The
summary paragraph never quotes a margin.
Take-backs
takebacks (since 0.19.0) is what the lender took back at foreclosure. The registry reads it from the county’s
recorded deeds since 2016 and never from a delinquency or default feed. A take-back deed is a trustee’s deed, a
sheriff’s deed or a deed in lieu of foreclosure whose grantee is this lender. The registry matches the grantee under
any of the lender’s spellings, through the same fold that gives the lender its id. The grantee on such a deed is
usually the trustee or the servicer. So the originator of a securitised loan is invisible here, and a bank that
services a large book reads large.
The block does not measure delinquency, only the deed that ended it.
n_takebackscounts the lender’s take-back deeds since 2016 andn_takebacks_24mthose in the 24 months toas_of.by_instrument[]splits them intoTRUSTEES_DEED,SHERIFFS_DEEDandDEED_IN_LIEU, each with its share.n_loans_foreclosedis the take-backs on a parcel that carries a loan row of this lender recorded before the deed.n_takebacks_unlinkedis the rest, for one of three reasons. The loan predates the five slots the history keeps. It sits in neither table. Or another lender made the loan, and this one is that lender’s trustee or servicer.foreclosure_shareis the share of the lender’s captured loans whoseoutcomeisFORECLOSED. A captured loan is one tied to an investor deal. The share is null under 20 captured loans.median_days_takeback_to_resaleis the median days from the take-back deed to the next priced sale of the parcel. It is null under 3.is_auction_lenderis true when the lender took property back at a trustee’s sale by credit bid or by deed in lieu, whatever the name says. The flag reads the deeds the auction registry classifies, and those deeds alone, never the class. A bank with no take-back reads false.
takebacks_measured is false on the market profile. Every count leaves out every
take-back deed of a bulk judgment sale held for review. foreclosed on
the loan row is the per-loan side of the same deeds.
Rankings by place
Since 0.19.0rankings also carries share_by_volume_24m: the lender’s window volume over the market’s, under the
$5,000,000 rule. It also carries three counts of the places the lender leads, by ZIP, city and county:
n_zips_ranked_first_24m, n_cities_ranked_first_24m and n_counties_ranked_first_24m. These count the places where
the lender recorded 10 or more loans in the 24 months to as_of and ranks first by that count. The rank is among every
lender of the market there, persons and government included. The county count is null while counties_measured is
false, as it is with one loaded county.
GET /v1/lenders/{id}/rankings gives the places themselves, with the
lender’s rank and share in each, over any window and at the hex-cell grain too.
GET /v1/lenders/{id}/cells gives its loans per cell. The summary
paragraph says how many ZIP codes the lender ranks first in when that count is 1 or more. On a registry built before
the place rankings, the four fields are null.
The person gate
A lender whose name readsINDIVIDUAL or PRIVATE gets an id and a profile only when it passes a gate
(profile_gate: SERVED). The gate is 10 or more loans on 5 or more parcels. Below it, the name stays on the parcel’s
financing block alone, with no id. The list and the search hide INDIVIDUAL and PRIVATE lenders unless
include_persons=true. They hide GOVERNMENT lenders unless include_government=true. This is the way investor
lists hide institutional buyers.
Contact data
Nothing in any delivery carries a lender’s phone or email, so no lender object has a contact block. Lender names are business records of the loan. The API serves them in full to every key, whatever the class. The API serves a borrower as a key and, when it is a company, its name. A person borrower’s name is never on the profile, and this host does not serve it on the borrowers route. The profile names the investor behind a borrower by its registry name, the deed spelling, as every deal row names it.Availability
The counties inmeta.coverage[].lenders.counties can be narrower than the market.
Counties, cities and ZIP codes lists them. A ZIP, city or county outside them answers
422 outside_coverage and names the covered counties, never an empty page. A geometry outside every loaded market’s
tolerance answers the same. A market without a published lender registry answers 422 lenders_unavailable on every
lender route. meta.coverage[].lenders is null there.
A registry built before a phase serves that phase’s fields as null. It answers 422 lenders_unavailable on the routes
and parameters that need them. meta.coverage[].lenders carries the flags: purchase_measured,
investor_lending_measured, flips_measured, borrowers_measured, takebacks_measured and counties_measured.
| Endpoint | What it gives you |
|---|---|
GET /v1/lenders/search | The lender id, from any spelling of the name. |
GET /v1/lenders | The ranked lender list of a market, a ZIP, a city or a county. |
GET /v1/lenders/{id} | The profile below. |
GET /v1/lenders/{id}/loans | Every loan of theirs, newest recording first. |
GET /v1/lenders/{id}/borrowers | Every borrower of theirs, most loans first. |
GET /v1/lenders/{id}/rankings | Every place they rank in, as ranking buckets, or their month series. |
GET /v1/lenders/{id}/cells | Their loans per hex cell, as lender cells, for a map. |
One lender: who it is, its totals across the loaded markets, and a profile per market. The identity is the names, the class, the hard-money flag and how the registry established the identity. Nothing in any delivery carries a lender's phone or email, so no such block exists.
Lender id: len_ followed by 12 hex characters, for example len_3f9a1c27b4e0. The registry mints the id from the lender's folded name, so the same lender carries the same id in every market, stable across data refreshes. A hand-kept dictionary row can merge two spellings into one lender. The API then follows the old id from the earlier registry run to that lender and lists it in meta.resolved_from. A retired id with no successor answers 410 gone. Store the whole id, prefix included, as the identity.
^len_[0-9a-f]{12}$The lender's display name in its lead market, upper case as the file writes it, for example KIAVI FUNDING INC. The lead market is the market with the most loans in the window. The name can change under a stable id, so it is never a key. It is a business name, and the API serves it to every key.
A reading of the name, never a legal status. The parcel financing block carries the same reading. How the lender name reads. BANK: a bank, credit union or thrift. NONBANK: a mortgage company or other lending business. PRIVATE: a trust, a seller carry-back or another private party, not the hard-money sense of private lender, which the Lender object carries as is_hard_money. INDIVIDUAL: a person's name. GOVERNMENT: an agency or a public body.
BANK, NONBANK, PRIVATE, INDIVIDUAL, GOVERNMENT Why the class reads as it does. NAME: the name rules of the registry, read on the folded name. The rules apply the government, bank, trust, lending and person vocabularies in that order. So KS STATEBANK reads BANK, and a trust with lender words reads NONBANK. DICTIONARY: a hand-kept row overrides the name's reading, for example BBVA USA as a BANK. Null on a registry built before the registry recorded a basis.
NAME, DICTIONARY How the registry ties the spelling to its lender: NAME_FOLD means the folded name alone joins them. The fold uses upper case, drops punctuation and entity suffixes and spells out abbreviations: WELLS FARGO BANK NA and WELLS FARGO BANK N.A. are one. TRUNCATED_PREFIX: the file cut the name at 30 or 40 characters, and the registry joined it to the one longer name that starts with it. ALIAS_DICTIONARY: a hand-kept row joined it, for a rename such as QUICKEN LOANS to ROCKET MORTGAGE, a trade name or a charter form. A row also covers a spelling the same instrument carries both ways. The registry never merges acquisitions.
NAME_FOLD, TRUNCATED_PREFIX, ALIAS_DICTIONARY True when the name carries hard-money vocabulary or is a known hard-money brand, or when the book behaves like one. The field hard_money_basis says which, and the behaviour test needs the market's deed link. A PRIVATE lender_class is a trust or a seller carry-back, not this. The hard_money filter of the list reads this flag.
Null when is_hard_money is false. Why is_hard_money is true: NAME means the name carries hard-money vocabulary such as BRIDGE, FIX AND FLIP, REHAB, PRIVATE MONEY or a numbered FUND. A known brand such as KIAVI, LIMA ONE or RCN CAPITAL also counts as NAME. FUNDING, CAPITAL and LENDING alone never qualify. BEHAVIOUR: the lender is not a bank and has 20 or more loans since 2015. A quarter or more of those loans sit within 45 days of a registered investor's purchase. BOTH: name and behaviour.
NAME, BEHAVIOUR, BOTH Every spelling across the markets, the lead market's first. These are business names, and the API serves them to every key.
One spelling, as the file writes it.
How many spellings names holds.
-9007199254740991 <= x <= 9007199254740991The profile gate of the identity: SERVED means it has a profile, the only value a served lender carries. BELOW_PERSON_THRESHOLD: a person-named lender, class INDIVIDUAL or PRIVATE, with fewer than 10 loans or fewer than 5 parcels. Such a lender has no id, no search hit and no profile, and its name stays on the parcel financing block only. PLACEHOLDER: a name such as NOT AVAILABLE, NOT PROVIDED or UNKNOWN, with no id. The market's coverage counts the two hidden values, and the API never serves them as rows.
SERVED, BELOW_PERSON_THRESHOLD, PLACEHOLDER The NMLS id and the NMLS Consumer Access page it opens. The registry curates the id by hand for the largest lenders. The block is the lead market's, and the same lender carries one id everywhere. Null where the lender has no curated id, and on a registry built before phase 4.
Show child attributes
Show child attributes
Instruments recorded in the 24 months ending on as_of (730 days, inclusive), as of as_of, the slice date, never the clock, summed over markets[].
-9007199254740991 <= x <= 9007199254740991Sum of the loan amounts of the priced instruments in the 24 months ending on as_of (730 days, inclusive), as of as_of, the slice date, never the clock, whole dollars, summed over markets[] after each market profile's exclusions. The exclusions count a blanket group once and leave out amounts above $5,000,000. 0 when none carries a price.
-9007199254740991 <= x <= 9007199254740991Open lien positions at as_of, summed over markets[].
-9007199254740991 <= x <= 9007199254740991The lender's open balance after the exclusions each market profile describes, whole dollars, summed over markets[]. 0 when none.
-9007199254740991 <= x <= 9007199254740991How many markets the lender has a profile in: the length of markets.
-9007199254740991 <= x <= 9007199254740991The per-market profiles, most loans in the window first. One entry when market= names one. Each carries its own ranks, coverage, as_of and dated. The union totals above are their sums.
1Show child attributes
Show child attributes
Was this page helpful?