Skip to main content
GET
List every Investorlift listing of one company
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 page of Investorlift listing rows, every one with wholesaler.id equal to the company.

Use it when

The wholesaler card’s listings table. For listings around a location, use GET /v1/wholesale-listings. For one investor’s purchases, use GET /v1/investors/{id}/wholesale-purchases.

Read the response

  • Hidden-address listings without a closing deed appear here with property null. On such a listing the company hid the address on its own site. This is the one place they are reachable: they match no geometry.
  • The filters are the list’s: verification, outcome, buyer_tier, known_investor, listed_after and listed_before, closed_after and closed_before, asking_min and asking_max, primary_only.

Gotchas

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

Wholesaler id, wsr_ followed by 12 hex characters, for example wsr_3f9a1c27b4e0, from any wholesale row's wholesaler.id or a search hit. The id is stable per company and has no alias table.

Query Parameters

market
string

Market code, for example phx. The loaded markets are in meta.coverage[]. Send it only when the id exists in more than one loaded market. 400 market_required says so. Otherwise the API uses the id's own market.

Required string length: 1 - 16
outcome
enum<string>[]

Outcomes to keep (comma list or repeated key). Default: every outcome.

Minimum array length: 1

What the county deeds record for the listing, in detail. The one-word verdict is verification. ASSIGNED: one deed from the homeowner to the buyer, and the listing company is not on title, so a contract assignment. DOUBLE_CLOSED: two chained deeds 0 to 14 days apart, with the company or its buyer in the middle. LISTER_HELD_THEN_SOLD: the company took title and resold within 90 days. LISTER_SOLD_FROM_INVENTORY: the company already owned the house and sold it. SOLD_OFF_MARKET_GRANTOR: one deed from a seller who is neither the homeowner of record nor the company, so an unrecorded step came before it. SOLD_TO_OWNER_OCCUPANT: the buyer moved in, so not an investor sale. FAILED_THEN_RETAIL_MLS: the homeowner sold on the MLS instead. DISTRESSED_TRANSFER: a sheriff's, trustee's or REO deed. LATE_TRANSFER: a deed 180 to 400 days after the listing that nothing ties to it. NO_TRANSFER_400: no deed within 400 days. NO_DEED_120: no deed by the deed data end, 120 to 400 days after the listing, so provisional. PENDING: the company listed the house fewer than 120 days before the deed data end, and no deed exists yet. SUPERSEDED: another Investorlift listing of the same parcel holds the credit for the deed. AMBIGUOUS_DEEDS: two or more unrelated sales that the rules cannot order.

Available options:
ASSIGNED,
DOUBLE_CLOSED,
LISTER_HELD_THEN_SOLD,
LISTER_SOLD_FROM_INVENTORY,
SOLD_OFF_MARKET_GRANTOR,
SOLD_TO_OWNER_OCCUPANT,
FAILED_THEN_RETAIL_MLS,
DISTRESSED_TRANSFER,
LATE_TRANSFER,
NO_TRANSFER_400,
NO_DEED_120,
PENDING,
SUPERSEDED,
AMBIGUOUS_DEEDS
verification
enum<string>[]

Verdicts to keep (comma list or repeated key): CONFIRMED for verified transactions, OPEN for listings without a closing deed by the deed data_end. Default: every verdict.

Minimum array length: 1

The API derives the one-word verdict of the deeds on the listing from outcome alone, and the Investorlift status plays no part. CONFIRMED: a recorded deed closed it to a buyer, so a verified wholesale transaction. RETAIL: it closed, but to an owner-occupant or through the MLS, so not an investor sale. OPEN: the deeds record no transfer yet, up to the deed data_end. NONE: no transfer within 400 days, a distressed deed, or a transfer the rules cannot tie to this listing. NONE also when the credit went to another listing of the parcel.

Available options:
CONFIRMED,
RETAIL,
OPEN,
NONE
buyer_tier
enum<string>[]

Buyer tiers to keep (comma list or repeated key). Default: every tier.

Minimum array length: 1

Who the buyer on the closing deed is, strongest first. REGISTRY_STRONG: a registry investor at STRONG or PROBABLE confidence, named, with an investor id. REGISTRY_WEAK: a registry investor at WEAK confidence, named, with an id. IL_BUYER_CONFIRMED: not in the registry, but the accepted offer's buyer or an Investorlift buyer account keys to the deed. On that tier the API names an entity and never a person. ENTITY_UNREGISTERED: an LLC or corporation not yet in the registry, often a fresh single-deed entity, named, no id. PERSON_ABSENTEE: a person whose mailing address is not the house, never named: show "individual buyer, not a known investor". OWNER_OCCUPANT: the buyer moved in, never named. UNRESOLVED: no closing deed. The first three count as a known investor.

Available options:
REGISTRY_STRONG,
REGISTRY_WEAK,
IL_BUYER_CONFIRMED,
ENTITY_UNREGISTERED,
PERSON_ABSENTEE,
OWNER_OCCUPANT,
UNRESOLVED
known_investor
enum<string>

Keep only listings bought by a known investor (buyer_tier REGISTRY_STRONG, REGISTRY_WEAK or IL_BUYER_CONFIRMED).

Available options:
true,
false
listed_after
string

Keep listings published on or after this date.

listed_before
string

Keep listings published on or before this date.

closed_after
string

Keep listings whose closing deed is on or after this date. Once you set closed_after or closed_before, the list drops rows without a deed.

closed_before
string

Keep listings whose closing deed is on or before this date.

asking_min
integer

Minimum asking price, inclusive, whole dollars. Once you set asking_min or asking_max, the list drops unpriced rows.

Required range: 0 <= x <= 9007199254740991
asking_max
integer

Maximum asking price, inclusive, whole dollars.

Required range: 0 <= x <= 9007199254740991
primary_only
enum<string>
default:true

Default true: drop SUPERSEDED rows and the non-credited members of a SHARED(n) group, so the list shows one closing deed once. The filter does not touch rows without a closing deed, so the list keeps every listing. primary_only=false lists every row, duplicates included.

Available options:
true,
false
sort
enum<string>

The row order. The default closed_on puts the newest closing deed first, rows without a deed last, then the newest listing first. With listed_on, the newest listing comes first. With asking_price, the highest asking price comes first and unpriced rows last. Every sort breaks ties on the listing id.

Available options:
closed_on,
listed_on,
asking_price
limit
integer
default:500

Page size, 1-500 (default 500).

Required range: 1 <= x <= 500
cursor
string

Opaque cursor from page.next_cursor of the previous page. A change of query, sort, weights or data version invalidates it (400 invalid_cursor). Then restart from page 1.

Required string length: 1 - 4096

Response

The company's listings, one page, in the requested sort.

The company's listings, one page, in the requested sort.

data
object[]
required

The rows of this page.

page
object
required

Pagination: the page size, the rows returned and the cursor for the next page. Paged lists carry no total. The summary block does.

meta
object
required

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