{
"id": "<string>",
"market": "<string>",
"n_name_variants": 0,
"license_candidates": 0,
"brokerages": [
"<string>"
],
"current_brokerage": "<string>",
"listings": {
"n_total": 0,
"n_active": 0,
"n_pending": 0,
"n_on_market": 0,
"n_sold": 0,
"n_off_market": 0,
"first_listed_on": "<string>",
"last_listed_on": "<string>",
"n_listed_12m": 0,
"n_sold_12m": 0,
"median_list_price": 0,
"median_sold_price": 0,
"by_year": [
{
"year": 0,
"n_listed": 0,
"n_sold": 0,
"n_self": 0
}
]
},
"n_self_listings": 0,
"investor_links": [
{
"investor_id": "<string>",
"investor_name": "<string>",
"investor_display_name": "<string>",
"n_self_listings": 0
}
],
"has_investor_link": true
}The Listing agent object
The agent behind an MLS listing, keyed to the state licence roll where one matches.
agent_id (agt_ plus 12 hex). The id
is the same on every listing the agent appears on, whatever the spelling of the name or the brokerage.
How an agent is identified
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:
identity_basis | Means |
|---|---|
The four LICENSE_ values | Keyed on the public licence record. LICENSE_FEED means the MLS feed itself carried the licence number. |
NAME_ONLY | The name alone. license_candidates says how many licensees share it, so you can judge the risk. |
agent_is_holder_member is true when the agent is one of the holding investor’s own people. The listing is then the
investor’s own inventory, not a client’s.
Old agent ids follow the same alias rules as investor ids: a merged id answers 200 with meta.resolved_from, a
retired one answers 410 gone.
The two ends of one fact
The agent profile’sinvestor_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. Since 0.31.0 a link carries investor_display_name beside investor_name. A listing row’s holder
carries display_name beside name. Each is the name to print: given-first for a cleanly parsed person, equal to
the deed spelling otherwise.
Contact fields
This host does not serve the agent’s name, phones, emails and licence number. They are null, withcontact_redacted: true. This host serves the ids, identity_basis, the brokerages and the listing counts.
Availability
A market with no published agent registry answers422 agents_unavailable on the three agent routes. It serves the
agent fields null everywhere else. meta.coverage[].agents_data_end tells you in advance.
| Endpoint | What it gives you |
|---|---|
GET /v1/agents/search | The agent id, from a name or a licence number. |
GET /v1/agents/{id} | The profile below. |
GET /v1/agents/{id}/listings | Every listing of theirs, newest first. |
The profile of one listing agent: who they are, where they work, what they list, and which investors they belong to as a person. Who they are is the name spellings, the state licence the registry keyed them on and how sure that key is. Where they work is the brokerages, and what they list is the counts by status and year.
Listing agent id: agt_ followed by 12 hex characters, for example agt_fdfd4a0f8bae. The registry mints the id from a matched state licence number, else from the name and the feed's identifying keys. The id is stable across data refreshes. A licence-based id is the same in every market. The API follows an old id through the alias table. Store it as the identity.
^agt_[0-9a-f]{12}$Market code, for example phx. The loaded markets are in meta.coverage[]. A licence-keyed agent has the same id in every market and a profile per market.
What the feed named. PERSON: a named individual, the only kind the registry matches to a licence or links to an investor. TEAM_OR_OFFICE: a team, an office or a builder sales office written into the agent field, for example "The Smith Team" or a brokerage name. The registry groups such a name under one id so you can find its rows, and never licence-matches or links it.
PERSON, TEAM_OR_OFFICE How many spellings name_variants holds. Served to every key.
-9007199254740991 <= x <= 9007199254740991How the registry established the agent's identity, strongest first: the four LICENSE_ values are the licence-keyed agents. LICENSE_FEED: the MLS feed carried the agent's state licence number on their listings, so the feed's own attribution keyed the agent on the public record. LICENSE_NAME: exactly one state licence carries this name, and LICENSE_NAME_DISAMBIGUATED: several do, and the middle initial, brokerage, office phone or licence period picked one. LICENSE_NICKNAME: the registry found the licence through a nickname or short form of the given name, for example DOUG for DOUGLAS. Without a licence, the registry merged name spellings through a shared personal phone or email (CONTACT_CLUSTER), or through the name and a common brokerage (NAME_BROKERAGE). NAME_ONLY: the name fold alone, so two people with the same name are one agent here (see license_candidates).
LICENSE_FEED, LICENSE_NAME, LICENSE_NAME_DISAMBIGUATED, LICENSE_NICKNAME, CONTACT_CLUSTER, NAME_BROKERAGE, NAME_ONLY How many licensees of the state roll fit the agent's name. 0 means none: the name is not on the roll, or it is a nickname the registry did not resolve. 1 means matched: the API serves the licence. 2 or more means ambiguous: several people share the name and nothing told them apart. The API then serves no licence, and the rows under this name can belong to more than one person.
-9007199254740991 <= x <= 9007199254740991The brokerages on the agent's listings, newest first, at most 10. Empty when the feed named none. Served to every key.
One brokerage name as the feed writes it.
The brokerage on the agent's newest listing that names one. Null when none does. Served to every key.
The agent's listing activity in the market, counted over the MLS listings that name them. The registry counts them at its own listing slice (meta.coverage[].agents_data_end), never at the clock. Served to every key.
Show child attributes
Show child attributes
Listings of the agent on parcels held by an investor linked to the agent with HIGH confidence: their own inventory, not a client's. 0 when none.
-9007199254740991 <= x <= 9007199254740991The investors this agent is a person member of, HIGH confidence first, then by self-listings. Empty when none. This host serves the investor names. It does not serve the member's deed name.
Show child attributes
Show child attributes
True when investor_links is not empty.
Was this page helpful?