~ / endpoints / Agent API

Zillow Agent Scraper API

Our Zillow agents scraper reads the listing agent straight off a property page: pass a homedetails URL or a zpid and the response returns the agent name and brokerage as JSON, tied to the home's address, price, and zpid for easy lead building.

Get a free API keyAll data types
1,000
free requests
2.6s
median response
JSON
structured output
1
call per property
the bottleneck

Why Zillow Agent data is tough at scale

Zillow has no public API that exposes agent details, so the listing agent only appears in the property page markup, behind PerimeterX. The attribution field also moves around inside the page's hydration blob, so a hand-written selector for the agent name breaks whenever Zillow reshapes it.

setup

Run the Zillow Agent Scraper API in one call

cURL
curl "https://api.zillowscraperapi.com/api/v1/zillow/property?url=https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/&api_key=$API_KEY"
Python
import requests

BASE = "https://api.zillowscraperapi.com"
API_KEY = "YOUR_API_KEY"

# Read the listing agent + brokerage from a property page.
data = requests.get(
    f"{BASE}/api/v1/zillow/property",
    params={
        "url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
        "api_key": API_KEY,
    },
    timeout=30,
).json()

# listing_agent is "<agent name>, <brokerage>".
agent = data["listing_agent"]
name, _, brokerage = agent.partition(", ")
print("Agent:", name)
print("Brokerage:", brokerage)
print("Listing:", data["name"], "| zpid", data["zpid"])
query options

Parameters

ParameterRequiredDefaultNotes
urlrequired-The Zillow homedetails page URL for the listing whose agent you want. Required unless you pass zpid.
zpidoptional-The numeric Zillow property id. We build the canonical /homedetails/{zpid}_zpid/ URL from it. One of url or zpid is required.
countryoptional-Optional two-letter country hint. Zillow is US-only, so this is rarely needed.
add_htmloptionalfalseSet to true to include the raw page HTML alongside the parsed record for custom extraction.
api_keyrequired-Your API key, passed as a query parameter. Get one free at signup.
json out

The Zillow Agent Scraper API JSON response

200 OK
{
  "name": "6505 44th Avenue NE, Seattle, WA, 98115",
  "listing_agent": "Eric Nissen, Real Property Associates, Inc.",
  "url": "https://www.zillow.com/homedetails/6505-44th-Ave-NE-Seattle-WA-98115/463504654_zpid/",
  "zpid": "463504654",
  "home_status": "FOR_SALE",
  "address": {
    "street_address": "6505 44th Avenue NE",
    "address_locality": "Seattle",
    "address_region": "WA",
    "postal_code": "98115"
  },
  "trade_info": [
    { "currency": "USD", "price": 899900, "price_per_area_unit": 633, "trade_type": "sale" }
  ],
  "property_type": "house",
  "latitude": 47.675953,
  "longitude": -122.281136
}
FieldTypeDescription
listing_agentstringThe listing agent and brokerage as one string, e.g. Eric Nissen, Real Property Associates, Inc. Falls back to the brokerage alone when no individual agent is attributed.
namestringThe full property address, so each agent is tied to the exact listing.
addressobjectStructured address parts for the listing: street_address, address_locality, address_region, postal_code.
trade_infoarrayThe listing's offer, with price, currency, price_per_area_unit, and trade_type, useful for qualifying a lead by price band.
property_typestringNormalized property type: house, apartment, or land.
home_statusstringRaw listing status, e.g. FOR_SALE, so you know if the listing is still active.
zpidstringThe stable Zillow property id, the key to dedupe listings and agents.
urlstringThe canonical homedetails URL for the listing.
latitudenumberProperty latitude, for grouping agents by area.
longitudenumberProperty longitude, for grouping agents by area.
what it powers

Ways teams use this data

>

Agent lead lists

Run a set of homedetails URLs through the endpoint and collect the listing agent and brokerage for each, tied to the property, to build a targeted outreach list.
>

Brokerage market share

Scrape agents across a location's listings and count how often each brokerage appears to measure who controls inventory in a market.
>

Recruiting and partnerships

Identify active listing agents in a target area by the volume of homes they represent, then reach out for recruiting or referral partnerships.
>

CRM enrichment

Attach the listing agent and brokerage to each property record in your CRM so teams see who represents a home next to its price and status.
>

Competitive tracking

Watch which agents list new inventory over time by polling listings on a schedule and recording the listing_agent as it changes.
>

Deal sourcing

Pair the agent with the listing's price band and property_type to route promising deals to the right person on your team.
why choose us

Where our Zillow Agent Scraper API stands out

Pass a homedetails URL or a zpid and we resolve the page, run residential proxies and PerimeterX handling, and parse the attribution block into a clean listing_agent string tied to the property. It returns the agent, brokerage, address, price, and zpid as validated JSON in about 2.6 seconds, with no Zillow API key to apply for and a 1,000-request free tier.

*

Agent tied to the listing

The listing_agent comes back alongside the address, price, and zpid, so every agent is anchored to the exact property they represent.
*

URL or zpid input

Pass a homedetails URL or just the numeric zpid. We build the canonical page URL and resolve it either way.
*

PerimeterX handling built in

Zillow sits behind PerimeterX. Residential proxies and anti-bot handling clear the challenge so the agent attribution actually loads.
*

Brokerage fallback

When no individual agent is attributed, we return the brokerage name so the field stays useful instead of coming back empty.
*

Resilient parsing

We read the attribution from the page's hydration record and fall back to JSON-LD for headline fields, so the agent field survives Zillow markup changes.
*

Pay for success

Failed fetches retry through residential proxy tiers and are not billed, so the cost tracks the agent records that actually come back.
versus

Zillow Agent Scraper API vs DIY and the Zillow API

Our APIDIY (requests / headless)Official Zillow API
Listing agent accessParsed from URL or zpidManual parse of the pageNot exposed
Tied to propertyAgent, address, price, zpid togetherYou join it yourselfNot applicable
Anti-bot (PerimeterX)Handled for youYou solve the challenge yourselfNot applicable
SetupAPI key onlyResidential proxies and parsersPartner approval, where available
Output shapeStable flat JSONWhatever you parseNot applicable
BillingPay per successful requestYou absorb blocked-request costNot applicable
cost to run

Free to test, cheap to scale

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

How do I scrape Zillow agents?

Send a GET request to our zillow/property endpoint with a homedetails URL or a zpid and your api_key. The response includes a listing_agent field with the agent name and brokerage for that listing, returned as clean JSON alongside the property address, price, and zpid. We handle Zillow's PerimeterX challenge, the proxies, and the parsing, so you build an agent list without running a scraper of your own.

What agent details does the API return?

The endpoint returns the listing_agent as a single string in the form agent name, brokerage, for example Eric Nissen, Real Property Associates, Inc. When Zillow attributes only a brokerage and no individual agent, the field returns the brokerage name. The agent is tied to the property record, so you also get the address, price, status, and zpid for the home they are listing.

Does the Zillow agent scraper return phone numbers?

The public property page attributes the listing agent by name and brokerage, and that is what the listing_agent field returns. Zillow does not publish a direct agent phone number in the property page markup we parse, so we leave it out and never fabricate a number. To reach an agent, use the name and brokerage to look them up through the brokerage or a licensing directory, and always follow lawful outreach rules such as Do-Not-Call requirements.

Can I build an agent list for a whole city?

Yes, in two steps. Use the zillow/search endpoint to pull the listings for a location and collect each home's zpid, then call zillow/property for each zpid to read the listing_agent. Counting how often each agent or brokerage appears across a city's listings gives you a ranked view of who is most active in that market.

Is scraping Zillow agent data legal?

Scraping publicly visible listing pages is generally treated as lawful in the United States, but agent names tied to a person can be personal data, and Zillow's Terms of Use restrict automated collection, so review the terms and applicable privacy and anti-spam laws before you use the data for outreach. This is general information, not legal advice.

How fast is the Zillow agent scraper?

Median end-to-end response is about 2.6 seconds per property, including proxy routing, PerimeterX handling, retries, and parsing. Each call returns the full property record with the listing agent, so you do not chain extra requests, and you are billed only for successful requests. The free tier includes 1,000 requests to test with.

Start with the Zillow Agent Scraper API
1,000 requests free. No card, no commitment.
Get a free API key All data types