Skip to main content
GET
Get the profile of one lender
Early access: while the developer tier is in beta, the API serves this route to Investorlift’s team and trusted partners. Investorlift will restrict the route further before it opens to every key.
Who this lender is and what it does. The profile carries every spelling folded into the id, its class and hard-money flag, and its loans counted once across the open-lien and recorded-history tables. It also carries its open book, the year and month series against the market, and the product, term and label mix. It carries pricing and terms, geography and rankings. The API serves one profile per market the lender lent in.

Use it when

The lender card, opened from a search hit, a ranking row’s lender.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-level name, lender_class, class_basis, is_hard_money, identity_basis and nmls are the lead market’s. names[] is the union, and the four totals are sums: n_loans_24m, volume_24m, n_open_liens and open_balance. market= narrows markets[] 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, not 400 market_required.
  • Identity, since 0.17.0. class_basis says if the class is the name’s own reading (NAME) or a hand-kept override (DICTIONARY). successor on a market profile is the acquirer or parent the lender is now part of, with kind ACQUISITION or SUBSIDIARY, the books never merged. It is null when the registry records none, or when the successor has no profile in the market. nmls is the hand-curated NMLS id with its Consumer Access url, null where uncurated. id_history[] lists the ids retired into this lender, oldest run first: The Lender object.
  • meta.resolved_from is present when a registry run retired the id you sent into another. The current lender is in data, and the array lists the ids the API followed. Store the new id.
  • Counts are floors. n_loans and its windows count instruments once across both tables and are the origination counts. n_in_history and its windows are what the history holds, never an activity measure. coverage.history_capture_share (about one in five) and history_floor_year say why. by_year[].floor marks the years the history already pushed out.
  • rankings is the lender’s standing over the 24 months to as_of among every lender of the market, persons and government included. It carries rank_24m and share_24m, rank_by_volume_24m, rank_in_class_24m, rank_hard_money_24m and share_of_hard_money_24m. The list’s rank differs, because the list hides persons and government by default.
  • by_month carries the lender’s count against the market’s: market_n, share, rank and hard_money_rank. The last month is partial, because recordings in the slice stop on recordings_through before the month ends.
  • terms says how much of the book each figure describes: rate.share_rated and term.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 and product_proxy describe a minority. loan_to_avm is 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.
  • geography lists 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_zips is how much of the window sits in its three largest ZIPs.
  • The three linkage blocks, since 0.16.0. borrowers says who borrows: counts, repeats, newcomers, churn as a lower bound, the ten largest borrowers and the lenders they also use. investor_lending says how much of the book funds registered investors, the deals financed, by what occurred on them, the largest investors and is_investor_lender. flips_financed counts 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_price and rankings.rank_purchase_24m read the same deed link. Since 0.19.0 the outcomes include FORECLOSED, 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_measured and borrowers_measured say which: The Lender object.
  • Take-backs and places, since 0.19.0. takebacks is 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, and is_auction_lender. The block counts deeds, never delinquency. It is null as a whole while takebacks_measured is false (Take-backs).
  • rankings gains share_by_volume_24m and the three ranked-first counts: n_zips_ranked_first_24m, n_cities_ranked_first_24m and n_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 while counties_measured is false. On a registry built before the place rankings, all four fields are a typed null (Rankings by place). The places themselves are GET /v1/lenders/{id}/rankings, and the map is GET /v1/lenders/{id}/cells.
  • summary is 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 answers 400 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 with meta.resolved_from. A retired id is 410 gone with superseded_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, and meta.dated[] names lenders and financing. require_current=true is 422 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[].name is null for a person, and person_names_redacted says when the profile leaves one out.
  • A market with no published lender registry answers 422 lenders_unavailable. A market= outside the loaded markets is a 400.
Who is this lender?.

Authorizations

Authorization
string
header
required

API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.

Path Parameters

id
string
required

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
string

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.

Required string length: 1 - 16
require_current
enum<string>
default:false

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

Available options:
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.

data
object
required

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.

meta
object
required

Response metadata: when the API produced it, which markets it covers, and how fresh they are.