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.
Every MLS listing block names its listing agents. The block is listing.agents[] on a hold deal row or a property. Since 0.3.0 each agent carries a stable agent_id, agt_ plus 12 hex. It is the same id on every listing the agent appears on, whatever the spelling of the name or the brokerage. The registry keys agents on the state real-estate licence roll where a licence matches, and on the name and contact keys otherwise. identity_basis says which, and it is the field to read before you trust a row. The registry keys the four LICENSE_ values on the public record. LICENSE_FEED means the feed itself carried the licence number. NAME_ONLY is the name alone, and license_candidates tells you how many licensees share it. agent_is_holder_member is true when the agent is one of the holding investor’s own people. Then the listing is their own inventory, not a client’s.

Find the agent

A licence number also works: q=SA555000123, matched exactly.

Read the profile

The profile carries name spellings, the licence block, brokerages, listing counts by status and year, and the linked investors.

List their listings

The API pages the list newest first, by keyset.

The two ends of one fact

The profile’s investor_links[] and the investor profile’s agent_links[] are the same fact from either side. This person both lists houses and buys them through that investor. has_licensed_member on the investor says so in one boolean. The API does not serve the agent’s name, phones, emails or licence number on this host (null, contact_redacted: true). It serves ids, identity basis, brokerages and counts. Old agent ids follow the same alias rules as investor ids: 200 with meta.resolved_from, or 410 gone. For a market with no published agent registry, the API answers 422 agents_unavailable on these three routes. It serves the agent fields null everywhere else. meta.coverage[].agents_data_end tells you in advance.