Zillow Agents Scraper — Profiles & Leads
Pricing
from $30.00 / 1,000 agent returneds
Zillow Agents Scraper — Profiles & Leads
Scrape Zillow real estate agents by city, ZIP, directory URL, or profile URL. Returns contacts, brokerage, ratings, sales stats, specialties, languages, and source URLs.
Pricing
from $30.00 / 1,000 agent returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
13 days ago
Last modified
Categories
Share
Use this Apify Actor to collect Zillow real estate agent and team records from city or ZIP directory pages, or from direct Zillow agent profile URLs. It accepts either locations for market-based discovery or startUrls for known Zillow agent pages, and each record represents one agent or team with a single Zillow profile URL, name, brokerage, visible contact fields, ratings, sales stats, specialties, languages, source URL, and timestamped provenance. The outcome is a one-row-per-agent dataset you can use for CRM import, market research, or profile enrichment.
Best fit and connected workflows
This Actor fits workflows where you need Zillow agent leads from a specific market or from a known Zillow profile link. It works well for:
- brokerage recruiting lists by city or ZIP
- CRM lead capture from Zillow directory pages
- enriching known agent profile URLs with visible profile fields
- market research on agent coverage, ratings, reviews, and sales signals
For Zillow property inventory and home listings, a property-focused Zillow scraper is a more natural workflow. This Actor is designed around agents and teams, not listings.
Practical scenario
A recruiter opens a Zillow directory page for Austin, TX and wants a short lead list. They start with locations: ["Austin, TX"], maxResults: 10, and fetchProfiles: false. The returned dataset includes each agent's profileUrl, name, brokerage, rating, reviewCount, specialties, and languages. The recruiter reviews the strongest fits, then opens selected profile URLs for outreach or deeper profile enrichment.
Input fields
| Field | Type | Purpose |
|---|---|---|
locations | array of string | Search Zillow agent directory pages for one or more US cities or ZIP codes. Defaults to ["Austin, TX"] when startUrls is empty. |
startUrls | array of objects | Use direct Zillow agent directory or profile URLs when you already have them. |
maxResults | integer | Caps the number of validated agent records returned and billed, from 1 to 500. |
maxPagesPerLocation | integer | Controls how many directory pages are explored per location, from 1 to 25. |
fetchProfiles | boolean | Enrich each record from profile pages with phone, website, about text, specialties, languages, experience, and sales stats. |
proxyConfiguration | object | Overrides the default Apify Residential US proxy configuration if needed. |
Focused JSON example
{"locations": ["Austin, TX", "10001"],"maxResults": 10,"maxPagesPerLocation": 2,"fetchProfiles": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Output fields
| Field | Type | Meaning |
|---|---|---|
profileUrl | string | Canonical Zillow profile URL for the agent or team. |
profileSlug | string or null | Decoded Zillow profile path segment. |
name | string | Display name shown on Zillow. |
profileType | string or null | Team or individual when Zillow makes that visible. |
brokerage | string or null | Brokerage, company, or team affiliation. |
location | string or null | Market associated with the profile or source query. |
phone | string or null | Phone number visible on the Zillow profile. |
email | string or null | Email address visible on the Zillow profile. |
website | string or null | External website linked from the Zillow profile. |
rating | number or null | Zillow review rating shown on the profile or directory result. |
reviewCount | number or null | Number of Zillow reviews shown near the rating. |
salesLast12Months | number or null | Sales count in the last 12 months when Zillow exposes it. |
totalSales | number or null | Total Zillow sales count shown for the agent or team. |
priceRange | string or null | Price range shown on Zillow. |
averagePriceUsd | number or null | Average sale price when visible on the profile. |
specialties | array of string | Specialties listed by Zillow. |
languages | array of string | Languages Zillow says the agent or team speaks. |
yearsExperience | number or null | Years of experience parsed from the profile when visible. |
teamMemberCount | number or null | Team member count shown on team profiles. |
about | string or null | Short profile bio or about text visible on Zillow. |
sourceType | string | directory or profile. |
sourceQuery | string or null | Location query that discovered the profile, when applicable. |
sourceUrl | string | Zillow directory or profile URL used for the record. |
retrievalMethod | string | zillow-directory, zillow-profile, or public-search-index. |
scrapedAt | string | ISO 8601 timestamp for collection time. |
Illustrative JSON record
{"profileUrl": "https://www.zillow.com/profile/REMAX%20EDGE","profileSlug": "REMAX EDGE","name": "REMAX EDGE","profileType": "team","brokerage": "RE/MAX EDGE","location": "Austin, TX","phone": "(512) 555-0123","email": "agent@example.com","website": "https://www.examplebrokerage.com","rating": 5,"reviewCount": 2672,"salesLast12Months": 830,"totalSales": 5760,"priceRange": "$105K-$8M","averagePriceUsd": 885000,"specialties": ["Buyer's Agent", "Listing Agent", "Relocation"],"languages": ["English", "Spanish"],"yearsExperience": 27,"teamMemberCount": 109,"about": "Here at RE/MAX Edge, we believe in making the real estate journey...","sourceType": "profile","sourceQuery": "Austin, TX","sourceUrl": "https://www.zillow.com/professionals/real-estate-agent-reviews/austin-tx/","retrievalMethod": "zillow-profile","scrapedAt": "2026-07-15T15:00:00.000Z"}
How it works
This Actor runs on Apify with Playwright-based browsing and uses the default Apify Residential US proxy configuration for Zillow. It can start from Zillow directory pages or direct profile URLs. Directory runs are the default fast path, while fetchProfiles: true adds profile-page enrichment for fields visible on Zillow profile pages. The Actor writes one dataset item per validated agent row and also produces terminal OUTPUT and RUN_SUMMARY records in the key-value store for automation and billing readback.
Pricing
This Actor uses Pay per event pricing, plus Apify platform usage charges.
The primary billed event is Agent returned, which is charged per validated Zillow agent record persisted to the dataset. The run also includes an Actor start event charged once per run based on RAM.
The live Pricing tab on Apify shows the current pricing details, including the event model and platform usage. For example, a run capped at 25 agents bills at most 25 agent-returned events, while a run capped at 50 agents bills at most 50 agent-returned events.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It can be called by an AI agent to discover Zillow agent leads from a market query or from a known Zillow profile URL, then return structured records with provenance and source metadata.
Actor identity: khadinakbar/zillow-agents-scraper
Tool description: Search Zillow agent directories or direct profile URLs and return one structured dataset record per validated Zillow agent or team, with contacts, brokerage, ratings, sales stats, specialties, languages, and source URLs.
Find Zillow agents in Austin, TX. Return up to 10 validated records. Use directory pages first, then enrich profiles only if needed. Summarize the main fields and include the source URL for each record.
Output interpretation is straightforward: each dataset item is one agent or team, and sourceType, sourceUrl, retrievalMethod, and scrapedAt show where the record came from and when it was collected. Directory runs are a good fit when the workflow needs breadth. Profile enrichment is a better fit when the workflow needs contact and bio fields visible on Zillow profile pages. Billing is event based, so an agent should treat maxResults as the main cost control for the number of validated rows returned.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/zillow-agents-scraper').call({locations: ['Austin, TX'],maxResults: 10,fetchProfiles: false,});const dataset = await client.dataset(run.defaultDatasetId).listItems({clean: true,});console.log(dataset.items[0]);
Best results and outcome guidance
Start with locations when you want a market list, and use startUrls when you already have Zillow agent or directory URLs. Keep maxResults aligned with the number of leads you need, since it controls the number of validated agent rows returned and billed. Use fetchProfiles: true when the workflow depends on profile-visible contact fields, about text, or sales stats. Leave the default proxy settings in place for most Zillow runs.
Continue the workflow
- Then use Zillow Scraper — Properties, Prices, Zestimate & Agent Leads to extend Zillow Agents Scraper — Profiles & Leads research with a complementary content contract.
- Then use Zillow Search Scraper — ZIP, City & Map Bounds to extend Zillow Agents Scraper — Profiles & Leads research with a complementary discovery contract.
Design note
I found that the live dataset contract exposes both sourceType and retrievalMethod, which makes provenance explicit at the row level and useful for downstream routing.
FAQ
When should I use locations instead of startUrls?
Use locations when you want Zillow agents in a city or ZIP code. Use startUrls when you already have a Zillow agent directory page or a specific profile URL.
How do I keep a run bounded?
Set maxResults to the number of agent rows you want returned. You can also use maxPagesPerLocation to limit how many directory pages are explored per location.
What changes when fetchProfiles is enabled?
The Actor enriches records from profile pages with fields such as phone, website, about text, specialties, languages, years of experience, and sales stats when those fields are visible on Zillow.
Can I use the output for CRM import?
Yes. The overview dataset view is shaped for lead-list workflows and includes the main contact, rating, sales, specialty, language, and source fields.
Does this Actor work with direct Zillow profile links?
Yes. It accepts Zillow agent directory URLs and Zillow profile URLs in startUrls.
Responsible use
Use the collected data in line with Zillow's terms, applicable privacy laws, fair housing rules, real-estate licensing rules, and the policies of any outreach platform you use. The Actor returns publicly visible Zillow data and preserves source URLs so records can be reviewed in context.