๐ Zillow Agents Finder
Pricing
from $3.99 / 1,000 results
๐ Zillow Agents Finder
Extract real estate agents and mortgage lenders from Zillow at scale โ by URL, screen name, or location-based directory search.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
Zillow Agents Finder โ Real Estate Agents & Mortgage Lenders at Scale
Extract real estate agents and mortgage lenders from Zillow by location, by profile URL, by @screenName, or by name search. Get contact details, ratings, review counts, licence numbers, service areas and sales statistics โ in a compact card shape for volume, or a full profile shape for depth.
Two directories in one Actor: agents with specialty, language and top-agent filters, and lenders with sort control and a field allowlist.
What is Zillow Agents Finder?
Zillow's agent and lender directories are the largest public rosters of US real estate professionals, but they are built to be browsed one card at a time.
This Actor turns them into datasets. It accepts four kinds of input in one field โ full profile URLs, profile sub-tab URLs, @screenName handles, or plain names that trigger a directory search โ and it can also run a pure location crawl when you leave the input empty and just name a city.
Two things set it apart:
- Two directories, one Actor.
operation: "agents"gives you real estate agents with specialty, language, buying/selling and top-agent filters.operation: "lenders"targets the mortgage directory, sorted by relevance, location or rating, with alender_fieldsallowlist so you keep only the columns you want. - A depth switch. Compact mode builds each record straight from the directory card โ fast, and no profile page fetch. Full detail mode opens the profile and returns sales statistics, licences, service areas, years of experience and business address.
Zillow's pages are protected by PerimeterX, so the Actor uses browser-matched TLS fingerprinting, a sticky proxy session and an automatic direct โ datacenter โ residential fallback to keep runs going.
What data can you extract?
Compact agent record (agent_detail_info: false)
| Field | Description |
|---|---|
id | Zillow profile identifier |
name | Agent name |
screenName | Zillow screen name |
url | Profile URL |
avatar | Profile photo |
business | Brokerage or company |
rating | Average review rating |
reviews.count | Number of reviews |
phone | Phone โ see the note below |
location | City and state โ see the note below |
Directory cards do not carry phone or location. In compact mode from a location crawl those two fields come back
nullโ Zillow simply does not put them on the card. Turn on Full Agent Detail when you need them.
Full agent record (agent_detail_info: true)
Everything above, plus:
| Field | Description |
|---|---|
email | Contact email when published |
phone | Cell, business or brokerage number |
yearsOfExperience | Years in the industry |
address | line1, line2, city, state, postalCode, full |
serviceAreas | Areas served, with name and URL |
licenses | Real estate licences (number, issuing state, status, expiration) and other licences |
salesStats | countAllTime, countLastYear, priceRangeThreeYearMin, priceRangeThreeYearMax, averageValueThreeYear, statsIncludeTeam, pastSalesTotal |
Lender record (operation: "lenders")
| Field | Description |
|---|---|
id, name, screenName, url, avatar | Identity and profile link |
business / companyName | Lending company |
nmlsLicense, nmlsType | NMLS registration |
phone, cellPhone, officePhone, faxPhone, email | Contact details |
address | line1, city, state, postalCode |
rating, reviews.count, totalReviews, confirmedReviews, recentReviews | Reputation |
languages / languagesSpoken | Languages offered |
aboutMe, title, website | Profile content |
stateLicenses, stateSponsorships | Where they are licensed |
memberFDIC, employerMemberFDIC, equalHousingLogo | Compliance flags |
salesStats is the field worth the run. countLastYear against countAllTime separates agents who are producing now from agents who produced once, and averageValueThreeYear tells you which price band they actually work in.
Why teams scrape Zillow agents and lenders
For real estate recruiting
Brokerages recruit on production. countLastYear, priceRangeThreeYearMin/Max and averageValueThreeYear let you build a shortlist by output and price band rather than by who answers a cold call.
For B2B sales to agents
CRM, photography, staging, lead-gen and marketing vendors all sell to agents. Filter by specialty, language, or review volume and you have a targeted list with a phone number on it.
For referral networks
Relocation and referral businesses need a vetted agent in each destination city. serviceAreas and rating make that a query.
For lender partnerships
The lender directory returns NMLS numbers, state licences and contact details, sorted by rating โ the raw material for a preferred-lender panel.
For market analysis
Aggregate salesStats across a city to see how transaction volume concentrates, and which brokerages hold it.
For competitive intelligence
Track a competing brokerage's roster over time: who joined, who left, and how their review counts move.
How to find agents step by step
- Choose an Operation:
agentsorlenders. - Set a Location โ
New York,Los Angeles, CA. This is the geo seed for every directory search. - (Optional) Add direct targets to URLs / Screen Names / Agent Names: a full profile URL, a sub-tab URL,
@ScreenName, or a plain name to search. Leave it empty for a pure location crawl. - Apply filters โ Specialty, Language, Top Agents only, Specializes in buying / selling.
- Decide on Full Agent Detail: off for volume, on for sales stats, licences and contact details.
- Set Max Records (
0for unlimited), click Start, and export as JSON (recommended) or CSV.
โฌ๏ธ Input
Example input โ location crawl with filters
{"operation": "agents","location": "Austin, TX","urls": [],"specialty": "luxury-homes","language": "spanish","is_top_agent": true,"agent_detail_info": true,"limit": 100}
Example input โ specific profiles
{"operation": "agents","urls": ["https://www.zillow.com/profile/REMAX EDGE","@REMAX EDGE/reviews","Jane Smith"],"location": "New York","agent_detail_info": true,"limit": 50}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
urls | array | [] | Bulk input. Each item can be a full profile URL, a sub-tab URL (/sales, /rentals, /sold, /reviews), an @ScreenName handle, or a plain agent/lender name that runs a directory search. Leave empty for a pure location crawl. |
operation | string | agents | Which directory to target: agents or lenders. |
location | string | New York | City or state used as the geo seed for every directory search. Required unless every entry in urls is a direct profile URL or @screenName. |
limit | integer | 20 | Maximum profiles returned across all queries. 0 means unlimited. |
agent_detail_info | boolean | false | On โ full agent profile (sales stats, licences, service areas, address, phones, email). Off โ compact card shape, faster and with no profile fetch. |
specialty | string | "" | Single specialty filter for the agents directory: first-time-home-buyers, foreclosure, investment-properties, lot-or-land, luxury-homes, military-or-veterans, new-construction, property-management, relocation, rentals, senior-communities, vacation-short-term-rentals. |
language | string | "" | Single language filter โ spanish, mandarin, russian and 20 more. |
is_top_agent | boolean | false | Zillow-flagged top agents only (agents). |
is_buying | boolean | false | Agents who focus on buyers (agents). |
is_selling | boolean | false | Agents who focus on sellers (agents). |
sort_lenders | string | relevance | Lender directory sort: relevance, location or rating. |
lender_fields | array | [] | Allowlist of lender fields to keep. Empty returns every field. |
proxyConfiguration | object | no proxy | Requests go out without a proxy by default. If Zillow blocks, the Actor falls back automatically to Apify datacenter โ residential (3 retries on residential). Override to force a group. |
โฌ๏ธ Output
Example output โ full agent record
{"id": "X1-ZUxxxxxxxxxxxxx_abcde","name": "Jane Example","screenName": "Jane Example","url": "https://www.zillow.com/profile/Jane%20Example","avatar": "https://photos.zillowstatic.com/โฆ","business": "Example Realty Group","rating": 4.9,"reviews": { "count": 128 },"yearsOfExperience": 14,"email": "jane@examplerealty.com","phone": "(512) 555-0142","address": {"line1": "1200 Example Ave","line2": "Suite 300","city": "Austin","state": "TX","postalCode": "78701","full": "Example Realty Group, 1200 Example Ave, Suite 300, Austin, TX 78701"},"serviceAreas": [{ "name": "Austin, TX", "url": "https://www.zillow.com/austin-tx/" }],"licenses": {"Real estate licenses": [{ "License No.": "0123456", "issued by": "TX", "status": "Active", "expiration": "2027-04-30" }],"otherLicenses": []},"salesStats": {"countAllTime": 412,"countLastYear": 38,"priceRangeThreeYearMin": 285000,"priceRangeThreeYearMax": 2450000,"averageValueThreeYear": 640000,"statsIncludeTeam": true,"pastSalesTotal": 412}}
Example output โ lender record
{"id": "lender-12345","name": "John Example","screenName": "john-example","url": "https://www.zillow.com/lender-profile/john-example","business": "Example Mortgage LLC","nmlsLicense": "1234567","nmlsType": "Individual","phone": "(212) 555-0188","email": "john@examplemortgage.com","address": { "line1": "50 Example St", "city": "New York", "state": "NY", "postalCode": "10001" },"rating": 4.8,"reviews": { "count": 96 },"totalReviews": 96,"confirmedReviews": 91,"recentReviews": 12,"languages": ["English", "Spanish"],"title": "Senior Loan Officer"}
Illustrative values โ a live run returns current Zillow data.
Usage recipes
Recruit high-producing agents
{"operation": "agents","location": "Phoenix, AZ","is_top_agent": true,"agent_detail_info": true,"limit": 200}
Sort the export by salesStats.countLastYear. Recent production beats an impressive all-time number.
Build a bilingual referral network
{"operation": "agents","location": "Miami, FL","language": "spanish","agent_detail_info": true,"limit": 100}
Luxury specialists in a price band
Set specialty: "luxury-homes" and full detail on, then filter by salesStats.averageValueThreeYear to keep agents who genuinely transact at that level.
Preferred-lender panel
{"operation": "lenders","location": "Denver, CO","sort_lenders": "rating","limit": 50}
Keeps NMLS numbers and licensing alongside the contact details.
Slim lender export
{"operation": "lenders","location": "Seattle, WA","lender_fields": ["individualName", "companyName", "nmlsId", "rating", "totalReviews"]}
Refresh a known roster
Put @ScreenName handles for agents you already track in urls with full detail on, and re-run on a schedule to watch their stats move.
How does this compare to Zillow's official API?
Zillow retired its public consumer API years ago. What remains โ the Bridge Interactive and Zillow Group Data feeds โ is aimed at MLS members and licensed partners, requires an application and approval, and is built around listings, not agent or lender directories. There is no public endpoint that returns an agent's sales statistics, licences or service areas.
This Actor reads the public directories and profile pages any visitor can browse, which is the only generally available route to this data.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/zillow-agents-finder").call(run_input={"operation": "agents","location": "Austin, TX","agent_detail_info": True,"limit": 100,})for a in client.dataset(run["defaultDatasetId"]).iterate_items():stats = a.get("salesStats") or {}print(a["name"], "|", a.get("phone"), "|", stats.get("countLastYear"), "sales last year")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/zillow-agents-finder').call({operation: 'agents',location: 'Austin, TX',agent_detail_info: true,limit: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~zillow-agents-finder/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"operation":"agents","location":"Austin, TX","agent_detail_info":true,"limit":100}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent to push new agent or lender records straight into a CRM.
Schedules and webhooks
Attach a Schedule to refresh a market roster and deduplicate on id or screenName, then route results with webhooks or the Google Sheets / Airtable / HubSpot integrations.
Pricing and what you are charged for
Billing details for this Actor are shown on the Pricing tab of its page โ check there for the current model and rates before a large run. Apify shows a cost estimate before and during every run.
limit caps the total profiles returned across all queries, so it is your ceiling. Full detail mode costs more time per record because it fetches each profile page. Residential proxy traffic, when the fallback engages, is billed separately by the platform.
Limits, reliability and blocking
- Compact mode returns
phone: nullandlocation: nullfrom a location crawl. Directory cards do not carry them. Enableagent_detail_infowhen you need contact details. - Full detail costs a profile fetch per agent, with a deliberate delay between requests โ expect noticeably longer runs.
- Zillow profile pages are PerimeterX-protected. The Actor uses browser-matched TLS impersonation and a sticky proxy session (one exit IP for the whole run, because the protection binds its cookies to the IP that received them). Individual profile fetches can still fail on a hard block.
- Proxy escalation is automatic: direct โ Apify datacenter โ Apify residential with three retries. Override the proxy input only if you have a reason to force a group.
locationis required unless every entry inurlsis a direct profile URL or@screenName.- Only one specialty and one language can be applied per run. For several, run several jobs.
limit: 0means unlimited โ pair it with a run timeout you are comfortable with.- Email is only present when published. Many agents publish a phone but no address.
- Sales stats may include team production โ
statsIncludeTeamtells you when they do, which matters if you are ranking individuals. - Lender records come from Zillow's mortgage API, so their shape differs from agent records; use
lender_fieldsto trim it. - Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for large detailed runs.
Is it legal to scrape Zillow agent data?
This Actor collects publicly visible professional information โ the agent and lender directories, and the public profile pages Zillow serves to any visitor. It does not log in, access private listings, or reach consumer data.
Agent names, phone numbers, emails and business addresses are professional contact data but still personal data under GDPR and comparable laws. Have a lawful basis for processing, honour deletion requests, and follow CAN-SPAM, CASL, the TCPA and applicable Do Not Call rules before any outreach โ phone numbers in particular carry real regulatory risk in the US. Also comply with Zillow's Terms of Use.
โ Frequently asked questions
Can I get agents without knowing any URLs?
Yes. Leave urls empty, set a location, and the Actor runs a pure directory crawl.
What input formats does the URL field accept?
Full profile URLs, sub-tab URLs (/sales, /rentals, /sold, /reviews), @ScreenName handles, and plain names that trigger a directory search โ mixed freely in one run.
Why are phone and location empty?
You are in compact mode. Directory cards do not expose them; turn on Full Agent Detail.
What is the difference between compact and full detail?
Compact builds the record from the directory card โ fast, one request per page of results. Full detail fetches each profile page and adds sales stats, licences, service areas, years of experience and address.
Does it scrape mortgage lenders too?
Yes. Set operation: "lenders" for the mortgage directory, with sort control and a field allowlist.
Can I filter by more than one specialty?
No โ one specialty and one language per run. Run separate jobs and combine the exports.
Do I need a proxy?
Not to start. The Actor runs direct first and escalates to Apify datacenter, then residential, on its own.
Why did some profiles fail while others succeeded?
Zillow's bot protection can block an individual profile fetch. The Actor retries and falls back, but a hard block on one profile does not stop the run.
Does limit apply per query or overall?
Overall, across all queries. 0 means unlimited.
Which export format should I use?
JSON โ salesStats, licenses, serviceAreas and address are nested objects. CSV works for the compact shape.
๐ Related scrapers
- Realtor.com Agent Scraper โ the same roster question on a second portal.
- Apartments.com Scraper โ rental inventory alongside agent data.
- Leads Scraper โ broader contact discovery.
- LinkedIn Company Scraper with Firmographics & Funding Data โ enrich brokerages with company data.
Browse the full collection on the ScraperForge profile.
๐ฌ Feedback
Need extra fields, multi-specialty filtering, or a custom real estate pipeline? Open an issue on the Issues tab of this Actor.