Listing agent, broker and MLS

These fields name who listed the home: the listing agent and their phone and licence number, the brokerage and its phone, and the MLS listing number and MLS name shown on the page.

FieldType
data.agentNamestring or null
data.agentPhonestring or null
data.agentLicenseNumberstring or null
data.brokerNamestring or null
data.brokerPhonestring or null
data.mlsIdstring or null
data.mlsNamestring or null

What it means

agentName, agentPhone and agentLicenseNumber describe the listing agent as the page credits them. brokerName and brokerPhone are the listing brokerage. PropertiesAPI removes the Listing provided by prefix from the broker name.

mlsId is the listing's number in the multiple listing service, and mlsName the name of that MLS, as the page's attribution shows them. They identify the listing; they don't give access to any MLS.

These are contacts for the listing, not for the owner. PropertiesAPI returns no owner names, owner phone numbers or skip-trace data. For a sold home the contacts are those of the listing that sold.

Recorded example

Recorded lookup of a home for sale
{
  "brokerName": "Baird & Warner",
  "mlsId": "12773648",
  "mlsName": "MRED as distributed by MLS GRID"
}
Recorded lookup of a rental
{
  "brokerName": null,
  "agentName": null,
  "mlsId": null
}

Values are copied from recorded lookups of public Zillow pages, with the other fields of data left out. They show the shape and typical values, not today's data for these homes.

When it is null

  • Apartment building rentals had no agent, broker or MLS number in our recorded lookups.
  • Homes that aren't listed often have none, or only the ones from their last listing.
  • agentLicenseNumber is missing more often than the name and phone, because many pages don't print it.

Read it in code

Send a Zillow link, a zpid or an address to GET /v1/zillow/property with your key in the x-api-key header, then read the field from data:

curl and jq
curl -sG "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/" \
  | jq '.data | {agentName, agentPhone, agentLicenseNumber, brokerName, brokerPhone, mlsId, mlsName}'
Python
import os
import requests

r = requests.get(
    "https://api.propertiesapi.com/v1/zillow/property",
    params={"url": "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/"},
    headers={"x-api-key": os.environ["PROPERTIESAPI_KEY"]},
    timeout=120,
)
r.raise_for_status()
home = r.json()["data"]
listing = {k: home[k] for k in ("agentName", "agentPhone", "brokerName", "mlsId", "mlsName")}
print(listing)
JavaScript (Node)
const url = "https://www.zillow.com/homedetails/1704-Shelbourne-Dr-Austin-TX-78752/29412761_zpid/";
const res = await fetch(
  `https://api.propertiesapi.com/v1/zillow/property?url=${encodeURIComponent(url)}`,
  { headers: { "x-api-key": process.env.PROPERTIESAPI_KEY } },
);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { data: home } = await res.json();
const { agentName, agentPhone, brokerName, mlsId, mlsName } = home;
console.log({ agentName, agentPhone, brokerName, mlsId, mlsName });

Common mistakes

  • Treating the agent as the owner. Contact the agent only about the listing.
  • Using the phone numbers for cold calling or marketing lists. Check the laws that apply to you.
  • Assuming mlsId is unique across the country. It is unique within one MLS; store it with mlsName.

Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.

Listing agent, broker and MLS questions

Does the API return owner contact details?+

No. Only the listing agent, brokerage and MLS attribution shown on the page.

Does mlsId mean I get MLS data?+

No. It is the listing number as shown on the public Zillow page, nothing more.

Why is brokerName null on an apartment listing?+

The recorded apartment building pages carried no broker attribution, so there was nothing to return.