Skip to main content
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.
A wholesaler is an Investorlift listing company, with the id wsr_ plus 12 hex characters. It is a business, so the API always names it, on every key: its name, its brand, and the entity names it lists under. The profile answers three questions a user asks about a company before a deal with it:
  • Do their listings actually close? The verified transaction counts by verdict, against everything they listed.
  • How fast? The typical days from publication to a recorded deed.
  • Who buys from them? top_buyers[], the registry investors who take the most of their listings. Each carries its name (the deed spelling) and, since 0.31.0, its display_name to print.
The API judges all of it by the county deeds, never by the listing status in the Investorlift app. In a market with no published wholesale tables, the API answers 422 wholesale_unavailable. meta.coverage[].wholesale_as_of tells you in advance.

One Investorlift listing company in one market: names and entities, listing counts by what the deeds show, and the investors who buy from it.

id
string
required

Wholesaler id (an Investorlift listing company): wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0. The id is stable per company across data refreshes. It is the key to GET /v1/wholesalers/{id}. The prefix is part of the id.

Pattern: ^wsr_[0-9a-f]{12}$
market
string
required

Market code, for example phx. A company that lists in two markets has a row per market.

name
string
required

The company's name as it appears on Investorlift, for example "Home Team Investors".

brands
string[]
required

The other names the company markets under. Empty when none.

One brand name.

entity_names
object
required

The legal entities behind the listing company, as far as its contracts and account show them. Business names, which the API serves to every key.

home_state
string | null
required

The 2-letter state of the company's Investorlift account. Null when unknown.

investor_id
string | null
required

The company's own investor id when it is itself a registry investor: the key to its buying history at GET /v1/investors/{id}. That is when its title or its own entities appear as deed names of one investor. Null when the company never appears on a deed as an investor.

Pattern: ^inv_[0-9a-f]{12}$
source_account_id
integer
required

The company's account id in the Investorlift app: the join key back to the app.

Required range: -9007199254740991 <= x <= 9007199254740991
n_listings
integer
required

Every listing the company published in the market, matched to a parcel or not.

Required range: -9007199254740991 <= x <= 9007199254740991
n_verified
integer
required

Listings closed by a recorded deed with the credit on this company (CONFIRMED, PRIMARY): the company's verified wholesale transactions.

Required range: -9007199254740991 <= x <= 9007199254740991
n_to_investors
integer
required

Of the verified transactions, the ones bought by a known investor (tiers REGISTRY_STRONG, REGISTRY_WEAK, IL_BUYER_CONFIRMED).

Required range: -9007199254740991 <= x <= 9007199254740991
n_double_closed
integer
required

Listings the company closed through a double close, that is two chained deeds 0 to 14 days apart.

Required range: -9007199254740991 <= x <= 9007199254740991
n_took_title
integer
required

Listings where the company held title at some point: as the intermediate, the seller, or the prior owner.

Required range: -9007199254740991 <= x <= 9007199254740991
n_retail
integer
required

Listings that closed to an owner-occupant or through the MLS (verification RETAIL).

Required range: -9007199254740991 <= x <= 9007199254740991
n_open
integer
required

Listings with no recorded transfer by the deed data_end (verification OPEN).

Required range: -9007199254740991 <= x <= 9007199254740991
n_no_transfer
integer
required

Listings with no transfer recorded within 400 days (outcome NO_TRANSFER_400).

Required range: -9007199254740991 <= x <= 9007199254740991
n_none
integer
required

Every listing with verification NONE: no transfer, a distressed deed, an unattributable transfer, or the credit on another listing of the parcel.

Required range: -9007199254740991 <= x <= 9007199254740991
n_shared
integer
required

Listings that share their closing deed with another company's listing of the same parcel (lister_attribution SHARED(n)).

Required range: -9007199254740991 <= x <= 9007199254740991
first_listed_on
string | null
required

The company's oldest listing in the market, YYYY-MM-DD. Null when it has no matched listing.

last_listed_on
string | null
required

The company's newest listing in the market, YYYY-MM-DD. Null when it has no matched listing.

n_listed_12m
integer
required

Listings published in the 365 days that end on the deed data_end.

Required range: -9007199254740991 <= x <= 9007199254740991
median_asking_price
integer | null
required

Median asking price over the company's priced listings, whole dollars. Null when no listing carries a price.

Required range: -9007199254740991 <= x <= 9007199254740991
median_days_to_deed
number | null
required

Median days from publication to the closing deed over the company's CONFIRMED listings, for example 31.5. Null when the company has no CONFIRMED listing.

top_buyers
object[]
required

The investors who bought most often from this company, most first, at most 5. Empty when no known investor bought.

data_end
string
required

The deed data end date, YYYY-MM-DD. The API measures the windows against it.