Skip to main content
GET
List every listing of one agent
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.
Each row carries the parcel, who holds the parcel, and the listing block. A flag on the row says if the parcel is the agent’s own inventory.

Use it when

The history table of the agent drawer: look up any realtor and see what they listed and sold. For one parcel’s listing, use GET /v1/properties/{property_id}. For an investor’s listed holdings, use GET /v1/investors/{id}/deals?listing_status=on_market.

Read the response

  • Rows are the listings that name this agent, newest listed_on first. A listing with two agents appears once here, and both agents appear in listing.agents[] with their ids.
  • is_self_listing is true when the agent is, with high confidence, a person member of the investor that holds the parcel (holder). Then the listing is the agent’s own inventory, not a client’s. self_only=true keeps only those rows, and the profile’s n_self_listings is their count.
  • listing.owner_test is the holder’s own test: it says if the holder listed the parcel after the purchase. listing.counted says if the row counts in the holder’s listings rollup. The block has the same shape as on a property.
  • status= filters on the status the agent registry recorded: SOLD for what the agent sold, ACTIVE,PENDING for what is on the market. meta.coverage[].agents_data_end dates that listing slice. It equals listings_data_end while the registry is current. The listing block on each row reads the feed at listings_data_end. listed_from and listed_to cut by the date the listing went live.

Gotchas

  • The busiest agents have thousands of listings, so page the list.
  • This host does not serve the agents’ names, phones, emails and licences inside listing.agents[]. Those fields are null, with contact_redacted: true. This host serves holder.name and the parcel fields.
  • The API follows old ids as on the profile route: 200 with meta.resolved_from, 410 gone when retired, 404 when never issued.
  • In a market with no published agent registry, the API answers 422 agents_unavailable.

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

Listing agent id, agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The API follows an old id from an earlier registry run to the current agent (meta.resolved_from). It answers 410 for a retired id.

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, and a licence-keyed agent has the same id in every market where it lists. Otherwise the API uses the id's own market.

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

Keep only listings in one of these statuses (comma list or repeated key): ACTIVE, PENDING, SOLD, OFF_MARKET. Default: every status.

Minimum array length: 1

The listing's status in the feed, normalised. ACTIVE means on the market, and PENDING means under contract, contingent or not. SOLD means the listing sold, or any listing whose sale date is on or after its listing date: the sale is the later fact. OFF_MARKET means the listing ended without a sale: cancelled, expired or withdrawn (see off_market_reason). Only ACTIVE and PENDING are on the market.

Available options:
ACTIVE,
PENDING,
SOLD,
OFF_MARKET
listed_from
string

Keep listings that went live on or after this date, YYYY-MM-DD.

listed_to
string

Keep listings that went live on or before this date, YYYY-MM-DD. With listed_from, one year is listed_from=2025-01-01&listed_to=2025-12-31.

self_only
enum<string>

Keep only the agent's own inventory, the rows with is_self_listing true. Those are listings on parcels that an investor holds, where the agent is a person member of that investor. Default false: every listing.

Available options:
true,
false
limit
integer
default:100

Page size, 1-500 (default 100).

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 agent's listings, newest first, one page.

The agent's listings, newest first, one page.

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.