curl --request GET \
--url https://api.investorlift.com/v1/agents/search \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/agents/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/agents/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)Find a listing agent
Find a listing agent by name, in either order or in part, or by state licence number.
curl --request GET \
--url https://api.investorlift.com/v1/agents/search \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.investorlift.com/v1/agents/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.investorlift.com/v1/agents/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)Use it when
You build an agent typeahead. You have a name or a licence number and need the agent id.listing.agents[].agent_id.Read the response
match says how the API found the hit, best first:
match | How it matched |
|---|---|
license | The query is a licence number and equals one of the agent’s licence numbers. |
exact | The normalised query equals the name. |
tokens | Every word of the query appears in the name, in any order. |
trigram | Fuzzy, similarity 0.55 or more. The API tries it only when fewer than 10 agents matched otherwise. |
identity_basisandlicense_candidatessay how sure the registry is of who this is. The registry keys the fourLICENSE_values on the state roll.NAME_ONLYwithlicense_candidatesof 2 or more means that several licensees share the name. The rows under that name can belong to more than one person. See the Listing agent object.- Within one match level, the agents with the most listings come first. A name reads given name first, as the MLS feed writes it.
page.cappedis true when the API cut the page atlimit. The envelope’spageblock has the rule and what to do when it is true.- Without
market=, the API searches every loaded market with an agent registry. A licence-keyed agent has the same id in every market and appears once per market.
Gotchas
- A name of fewer than three letters after normalisation is a 400. The API matches a licence number exactly, so a partial number finds nothing.
- No cursor:
page.next_cursoris always null. - This host does not serve
name,license_stateandlicense_number. They are null withcontact_redacted: true. You can still open the profile byid. - A market with no published agent registry answers
422 agents_unavailable. With no market loaded at all, the search answers503 not_ready.
Related
Who is this listing agent?.Authorizations
API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.
Query Parameters
The agent to look for: a name in either order ("Dana Rivera" or "Rivera Dana"), part of a name, or a state licence number. An Arizona licence number is SA or BR plus nine digits, for example "SA555000123". Case and punctuation do not matter. A name needs at least 3 letters after normalisation. The API answers 400 to a shorter name.
1 - 200Market code, for example phx. The loaded markets are in meta.coverage[]. It narrows the search to that market. The API answers 400 when that market is not loaded, 422 agents_unavailable when the market has no published agent registry. Without it the API searches every loaded market with a registry and each hit carries its market.
1 - 16Agents to return, 1 to 50 (default 10).
1 <= x <= 50Response
Agents whose name or licence number matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.
Agents whose name or licence number matches the query, best match first. page.next_cursor is always null and page.capped is true when the API cut the page at limit.
The hits, best match first.
Show child attributes
Show child attributes
The page block of a name search: no cursor, the limit applied, the hits returned and if the API cut the page at the limit.
Show child attributes
Show child attributes
Response metadata: when the API produced it, which markets it covers, and how fresh they are.
Show child attributes
Show child attributes
Was this page helpful?