๐Ÿ  Zillow Agents Finder avatar

๐Ÿ  Zillow Agents Finder

Pricing

from $3.99 / 1,000 results

Go to Apify Store
๐Ÿ  Zillow Agents Finder

๐Ÿ  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

ScraperForge

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

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 a lender_fields allowlist 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)

FieldDescription
idZillow profile identifier
nameAgent name
screenNameZillow screen name
urlProfile URL
avatarProfile photo
businessBrokerage or company
ratingAverage review rating
reviews.countNumber of reviews
phonePhone โ€” see the note below
locationCity 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:

FieldDescription
emailContact email when published
phoneCell, business or brokerage number
yearsOfExperienceYears in the industry
addressline1, line2, city, state, postalCode, full
serviceAreasAreas served, with name and URL
licensesReal estate licences (number, issuing state, status, expiration) and other licences
salesStatscountAllTime, countLastYear, priceRangeThreeYearMin, priceRangeThreeYearMax, averageValueThreeYear, statsIncludeTeam, pastSalesTotal

Lender record (operation: "lenders")

FieldDescription
id, name, screenName, url, avatarIdentity and profile link
business / companyNameLending company
nmlsLicense, nmlsTypeNMLS registration
phone, cellPhone, officePhone, faxPhone, emailContact details
addressline1, city, state, postalCode
rating, reviews.count, totalReviews, confirmedReviews, recentReviewsReputation
languages / languagesSpokenLanguages offered
aboutMe, title, websiteProfile content
stateLicenses, stateSponsorshipsWhere they are licensed
memberFDIC, employerMemberFDIC, equalHousingLogoCompliance 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

  1. Choose an Operation: agents or lenders.
  2. Set a Location โ€” New York, Los Angeles, CA. This is the geo seed for every directory search.
  3. (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.
  4. Apply filters โ€” Specialty, Language, Top Agents only, Specializes in buying / selling.
  5. Decide on Full Agent Detail: off for volume, on for sales stats, licences and contact details.
  6. Set Max Records (0 for 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

FieldTypeDefaultDescription
urlsarray[]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.
operationstringagentsWhich directory to target: agents or lenders.
locationstringNew YorkCity or state used as the geo seed for every directory search. Required unless every entry in urls is a direct profile URL or @screenName.
limitinteger20Maximum profiles returned across all queries. 0 means unlimited.
agent_detail_infobooleanfalseOn โ€” full agent profile (sales stats, licences, service areas, address, phones, email). Off โ€” compact card shape, faster and with no profile fetch.
specialtystring""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.
languagestring""Single language filter โ€” spanish, mandarin, russian and 20 more.
is_top_agentbooleanfalseZillow-flagged top agents only (agents).
is_buyingbooleanfalseAgents who focus on buyers (agents).
is_sellingbooleanfalseAgents who focus on sellers (agents).
sort_lendersstringrelevanceLender directory sort: relevance, location or rating.
lender_fieldsarray[]Allowlist of lender fields to keep. Empty returns every field.
proxyConfigurationobjectno proxyRequests 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 ApifyClient
client = 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: null and location: null from a location crawl. Directory cards do not carry them. Enable agent_detail_info when 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.
  • location is required unless every entry in urls is a direct profile URL or @screenName.
  • Only one specialty and one language can be applied per run. For several, run several jobs.
  • limit: 0 means 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 โ€” statsIncludeTeam tells 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_fields to trim it.
  • Default run options are 4 GB memory and a 1-hour timeout; raise the timeout for large detailed runs.

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.


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.