Zillow Agent Scraper - Real Estate Agents & Sales avatar

Zillow Agent Scraper - Real Estate Agents & Sales

Pricing

from $1.80 / 1,000 agent scrapeds

Go to Apify Store
Zillow Agent Scraper - Real Estate Agents & Sales

Zillow Agent Scraper - Real Estate Agents & Sales

Find the real estate agents working in any US city on Zillow, busiest first: review score, career and last-12-month sales, average sale price, price range and Top Agent badge, plus their current listings when available. Filter to Top Agents or agents with recent sales.

Pricing

from $1.80 / 1,000 agent scrapeds

Rating

0.0

(0)

Developer

Kamil Ertekin

Kamil Ertekin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Type a US city and get the real estate agents Zillow lists there, busiest first. Each row has review score, review count, career sales, sales in the last 12 months, average sale price, price range and Top Agent status. The agent's current listings are included when available. Recruiters, brokerages, lenders and vendors use it to build prospect lists. It costs $3.00 per 1,000 agents with no start fee.

What you get

One row per agent or team:

FieldExampleNotes
agentName"Lindsay Neuren"Agent or team lead name
profileUrl · photoUrlhttps://www.zillow.com/profile/speedandneurengroupZillow profile and headshot
encodedZuid"X1-ZUw4ks8wbcrabt_4n5nw"Zillow's agent ID. Stable, so use it to de-duplicate across runs
isTopAgenttrueZillow's Top Agent badge
isTeamtrueThe directory card belongs to a team
reviewAverage · reviewCount5 · 818Star rating and number of reviews
salesAllTime474The agent's own career sales
salesLastYear52The agent's own sales in the last 12 months
averageSalePrice814175The agent's own average, last 3 years
priceRangeMin · priceRangeMax208900 · 3022300The agent's own lowest and highest sale, last 3 years
statsIncludeTeamfalsefalse means the numbers above cover the agent alone
teamSalesLastYear · teamSalesInArea356 · 1430Team rows only: the whole team's sales in the last 12 months and in the searched area
teamPriceRangeMin · teamPriceRangeMax154000 · 12000000Team rows only: the team's price range
salesInArea1204Individual rows: the agent's sales in the searched area
searchLocation"Austin, TX"Which of your locations found the agent

When listings are requested and available, the row also has:

FieldNotes
listingsHomes the agent has for sale: price, beds, baths, address, coordinates, brokerage, photo
rentalsHomes the agent has for rent, same shape (optional)
listingCount · rentalCountThe agent's total on Zillow, even when your cap fetched fewer. Empty in the rare case the total couldn't be read
listingsFetched · listingsTotalValue · rentalsFetchedHow many this run returned, and the combined asking price

The first five listings of each kind carry coordinates and home type. Listings after the fifth have price, beds, baths, sq ft, address, brokerage and photo, but no coordinates.

When an agent's listings couldn't be retrieved, the row has listingsUnavailable: true and a listingsUnavailableReason instead of those fields, so a missing list is never shown as zero. The run's status message says how many agents this affected.

What each number means

For a team, Zillow's directory card shows team totals, while the agent's own stats cover the team lead alone. Both are kept, under different names: salesLastYear: 52 is the agent's own count and teamSalesLastYear: 356 is the team's. Use the plain fields to compare agents, and the team* fields to size a team.

How to use it

  1. Type one or more cities, for example Austin, TX, or look up agents by name.
  2. Add filters if you want them: Top Agents only, or a minimum number of sales in the last 12 months.
  3. Set Maximum agents and click Start. Download the results as CSV, JSON or Excel, or read them through the API.

Minimal input that works as-is:

{
"locations": ["Austin, TX"],
"maxItems": 100
}

Active agents only, no listings (cheapest):

{
"locations": ["Chicago, IL", "Evanston, IL"],
"minSalesLastYear": 20,
"includeActiveListings": false,
"maxItems": 200
}

Specific agents by name:

{
"agentNames": ["Matt Laricy"],
"maxItems": 5
}

Input reference

FieldWhat it does
LocationsUS cities or areas, like Austin, TX. Each is searched and the results are combined
Specific agents by nameOnly agents whose name matches what you typed are kept
Maximum agentsYour spend cap. Filters apply first, so the cap counts only agents you keep
Directory pages per location15 agents per page, 10 pages by default
Top agents onlyOnly agents with Zillow's Top Agent badge
Minimum sales in the last 12 monthsDrops quiet or inactive agents before they're charged
Homes for sale and Maximum listings per agentAdds the agent's for-sale listings when available
Homes for rent and Maximum rentals per agentAdds rental listings when available. Off by default
Only agents with at least one listingDrops agents with no for-sale listings before charging
Add the full property record to each listingAdds Zestimate, living area, lot size, year built, days on Zillow, MLS ID, tax rate, HOA, description and the listing agent's phone to each listing. Charged per listing

Output example

A real row from an Austin, TX run (October 2026), shortened to one listing and one rental:

{
"agentName": "Lindsay Neuren",
"encodedZuid": "X1-ZUw4ks8wbcrabt_4n5nw",
"profileUrl": "https://www.zillow.com/profile/speedandneurengroup",
"isTeam": true,
"isTopAgent": true,
"reviewAverage": 5,
"reviewCount": 818,
"salesAllTime": 474,
"salesLastYear": 52,
"priceRangeMin": 208900,
"priceRangeMax": 3022300,
"averageSalePrice": 814175,
"statsIncludeTeam": false,
"teamSalesLastYear": 356,
"teamSalesInArea": 1430,
"teamPriceRangeMin": 154000,
"teamPriceRangeMax": 12000000,
"searchLocation": "Austin, TX",
"listingCount": 37,
"listingsFetched": 7,
"listingsTotalValue": 4002000,
"listings": [
{
"zpid": 2119482072,
"url": "https://www.zillow.com/homedetails/9205-Villa-Norte-Dr-Austin-TX-78726/2119482072_zpid/",
"price": 649000,
"priceCurrency": "USD",
"homeType": "singleFamily",
"listingType": "forSale",
"bedrooms": 3,
"bathrooms": 3,
"streetAddress": "9205 Villa Norte Dr",
"city": "Austin",
"state": "TX",
"zipcode": "78726",
"latitude": 30.431635,
"longitude": -97.84457,
"brokerName": "Compass RE Texas, LLC"
}
],
"rentalCount": 2,
"rentalsFetched": 2,
"rentals": [
{
"zpid": 250400882,
"price": 1800,
"listingType": "forRent",
"bedrooms": 3,
"bathrooms": 3,
"streetAddress": "162 Friendship Oak Dr",
"city": "San Marcos",
"state": "TX",
"zipcode": "78666"
}
]
}

A row whose listings couldn't be read looks the same up to searchLocation, then has "listingsUnavailable": true and a reason such as "not-found" in place of the listing fields.

CSV and Excel exports turn nested lists into numbered columns (listings/0/price, listings/1/price, …).

Pricing

Pay per event, platform usage included, no start fee.

Your Apify planAgent rowListing with full property record (optional)
Free$0.0030 ($3.00 per 1,000)$0.0024 ($2.40 per 1,000)
Starter (Bronze)$0.0025 ($2.50 per 1,000)$0.0020 ($2.00 per 1,000)
Scale (Silver)$0.0020 ($2.00 per 1,000)$0.0016 ($1.60 per 1,000)
Business (Gold and above)$0.0018 ($1.80 per 1,000)$0.0015 ($1.50 per 1,000)

The agent row is charged once per agent delivered. Agents removed by your filters aren't charged. The full-property-record charge applies only when you switch that option on, once per listing opened.

Worked example. The 200 busiest agents in Chicago on the Free plan: 200 × $0.003 = $0.60. On Starter it's $0.50. Adding full property records for 10 listings per agent would add up to 2,000 × $0.0024 = $4.80, and only for listings that actually came back.

FAQ

Why does a row say listingsUnavailable: true?

The agent's listings couldn't be retrieved on that run, and listingsUnavailableReason says why. The rest of the row is complete. Rather than report zero listings, the row flags it so you can tell "none" apart from "not retrieved". No listing charges apply to that row, and the run's status message counts how many agents were affected.

Why are most rows teams?

Zillow's directory ranks teams and individual agents together, and the busiest names in a big city are usually teams. Filter on isTeam to split them. See "What each number means" for team vs individual figures.

Does it return phone numbers or email?

Not on the agent row. Zillow's directory doesn't show agent phone or email. With Add the full property record to each listing on, each listing gets the listing agent's phone from the property page.

Will the same agent show up twice?

No. Agents are de-duplicated on encodedZuid within a run, even across overlapping cities. Two different agents with the same name stay separate.

How fresh is the data?

Each run reads Zillow at that moment. Sales counts and reviews are whatever Zillow shows that day.

Can I schedule it or connect it to other tools?

Yes. Run it monthly with Apify Schedules and send results to Airtable, HubSpot, Google Sheets, Slack, Zapier, Make, n8n or a webhook. You can also call it from the Apify API or MCP server.

Limits

  • US agents listed in Zillow's agent directory only.
  • No agent email, licence number or office phone.
  • No list of individual past sales. The sales counts and averages above summarize them.
  • Listings are included when available and may be missing on some runs. Check listingsUnavailable.

Missing a field? Open an issue on the Issues tab.

Related: Zillow Search Scraper to find homes by area, and Zillow Property Detail Scraper for the full record of any home.