curl --request GET \
--url https://api.investorlift.com/v1/lenders/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/lenders/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/lenders/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)Get one lender
One lender’s spellings, class, hard-money flag, loans counted once, open book, series, mix, terms and rankings, one profile per market.
curl --request GET \
--url https://api.investorlift.com/v1/lenders/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/lenders/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/lenders/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)Use it when
The lender card, opened from a search hit, a ranking row’slender.id or a parcel’s financing block. For its loans,
use GET /v1/lenders/{id}/loans.
Read the response
- The union rule.
markets[]carries one profile per loaded market the lender is in, most loans first. The top-levelname,lender_class,class_basis,is_hard_money,identity_basisandnmlsare the lead market’s.names[]is the union, and the four totals are sums:n_loans_24m,volume_24m,n_open_liensandopen_balance.market=narrowsmarkets[]to one, and the union then equals it. A lender has the same id in every market, so an id in two loaded markets answers both profiles, not400 market_required. - Identity, since 0.17.0.
class_basissays if the class is the name’s own reading (NAME) or a hand-kept override (DICTIONARY).successoron a market profile is the acquirer or parent the lender is now part of, withkindACQUISITIONorSUBSIDIARY, the books never merged. It is null when the registry records none, or when the successor has no profile in the market.nmlsis the hand-curated NMLS id with its Consumer Accessurl, null where uncurated.id_history[]lists the ids retired into this lender, oldest run first: The Lender object. meta.resolved_fromis present when a registry run retired the id you sent into another. The current lender is indata, and the array lists the ids the API followed. Store the newid.- Counts are floors.
n_loansand its windows count instruments once across both tables and are the origination counts.n_in_historyand its windows are what the history holds, never an activity measure.coverage.history_capture_share(about one in five) andhistory_floor_yearsay why.by_year[].floormarks the years the history already pushed out. rankingsis the lender’s standing over the 24 months toas_ofamong every lender of the market, persons and government included. It carriesrank_24mandshare_24m,rank_by_volume_24m,rank_in_class_24m,rank_hard_money_24mandshare_of_hard_money_24m. The list’srankdiffers, because the list hides persons and government by default.by_monthcarries the lender’s count against the market’s:market_n,share,rankandhard_money_rank. The last month ispartial, because recordings in the slice stop onrecordings_throughbefore the month ends.termssays how much of the book each figure describes:rate.share_ratedandterm.share_term_known. The API serves the term-band shares only where half or more of the book carries a term. On a hard-money book a term is on about one row in ten, so the term bands andproduct_proxydescribe a minority.loan_to_avmis the loan against the as-of valuation on open positions, not a loan-to-value at origination.- What each count leaves out. The $5,000,000 amount rule, blanket loans, resold parcels and the nulls that mean not measured: What the counts are.
geographylists every county and the largest cities and ZIP codes. Each carries the lender’s share of the place and the place’s share of the lender.concentration_top3_zipsis how much of the window sits in its three largest ZIPs.- The three linkage blocks, since 0.16.0.
borrowerssays who borrows: counts, repeats, newcomers, churn as a lower bound, the ten largest borrowers and the lenders they also use.investor_lendingsays how much of the book funds registered investors, the deals financed, by what occurred on them, the largest investors andis_investor_lender.flips_financedcounts the flips whose purchase loan was this lender’s. It also carries the capture share, and the resale margins where 20 or more resold with both prices. - Beside them
by_purpose_24m,by_outcome_24m,median_months_to_payoff,terms.loan_to_priceandrankings.rank_purchase_24mread the same deed link. Since 0.19.0 the outcomes includeFORECLOSED, a take-back deed. Each block and field of this kind is null while the market’s build does not include its input.purchase_measured,investor_lending_measured,flips_measuredandborrowers_measuredsay which: The Lender object. - Take-backs and places, since 0.19.0.
takebacksis what the lender took back at foreclosure since 2016: the trustee’s deeds, sheriff’s deeds and deeds in lieu that named it as grantee. It carries the deeds by instrument, how many sit on a parcel carrying its own loan, and the foreclosure share of its captured loans. It also carries the median days from the take-back to the resale, andis_auction_lender. The block counts deeds, never delinquency. It is null as a whole whiletakebacks_measuredis false (Take-backs). rankingsgainsshare_by_volume_24mand the three ranked-first counts:n_zips_ranked_first_24m,n_cities_ranked_first_24mandn_counties_ranked_first_24m. These count the places where the lender ranks first with 10 or more loans in the window. The county one is null whilecounties_measuredis false. On a registry built before the place rankings, all four fields are a typed null (Rankings by place). The places themselves areGET /v1/lenders/{id}/rankings, and the map isGET /v1/lenders/{id}/cells.summaryis one paragraph written from the served numbers at build time. It never quotes a margin. Since 0.19.0 it says how many ZIP codes the lender ranks first in by loans, where it leads one. It also says how many properties the lender took back in the window, where it took any.
Gotchas
- The id must carry the
len_prefix, otherwise the API answers400 invalid_id. Since 0.17.0 the API follows an id from an earlier registry run. A merged id is not an error: you get the current profile withmeta.resolved_from. A retired id is410 gonewithsuperseded_by: null, the reason and the run that retired it, so search by name instead. An id the registry never issued is a 404, as is every old id on a registry built before 0.17.0. That registry has no alias table (Retired ids). - Every number is a snapshot at
as_of, andmeta.dated[]nameslendersandfinancing.require_current=trueis422 dated_refused. - No contact block: nothing in any delivery carries a lender’s phone or email. Every name on the profile is a
business record, and the API serves it in full. A person borrower’s name is never on it, whatever the key.
borrowers.top_borrowers[].nameis null for a person, andperson_names_redactedsays when the profile leaves one out. - A market with no published lender registry answers
422 lenders_unavailable. Amarket=outside the loaded markets is a 400.
Related
Who is this lender?.Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Path Parameters
Lender id, len_ followed by 12 hex characters, for example len_d2028f0766fc. Take it from a search hit, a ranking row's lender.id or a parcel's financing block. The id is the same in every market and stable across data refreshes. The API follows an id from an earlier registry run to the current lender, and meta.resolved_from lists it. For a retired id with no successor, the API answers 410 gone.
Query Parameters
Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows markets[] to that market. If meta.coverage[] does not list it, the API answers 400. If the market has no published lender registry, the API answers 422 lenders_unavailable. Without it the API answers every loaded market the lender is in.
1 - 16true refuses the request with 422 dated_refused while the registry's source, the financing slice, is a dated snapshot. The default false serves it, and meta.dated[] carries the lenders and financing blocks.
true, false Response
The lender with a profile per market it is in. meta.resolved_from lists the old ids that redirected here.
The lender with a profile per market it is in. meta.resolved_from lists the old ids that redirected here.
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.
Show child attributes
Show child attributes
Response metadata: when the API produced it, which markets it covers, and how fresh they are.
Show child attributes
Show child attributes
Was this page helpful?