Zillow Agents Finder By Specialty & Language avatar

Zillow Agents Finder By Specialty & Language

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Zillow Agents Finder By Specialty & Language

Zillow Agents Finder By Specialty & Language

Zillow Agents Finder extracts Zillow real estate agent profiles, including agent names, brokerages, ratings, reviews, phone numbers, service areas, profile URLs, and more. Ideal for lead generation, market research, recruitment, and competitive analysis.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 hours ago

Last modified

Share

Zillow Agents Scraper โ€” Specialties, Languages and Contact Info

Zillow Agents Finder By Specialty & Language pulls real estate agent and mortgage lender profiles straight from Zillow's public directory and profile pages, then cross-checks each agent's REAL specialties, spoken languages, and service-area coverage against the filters you set โ€” not just Zillow's own search match. Unlike scraping frameworks that return raw HTML, it returns typed JSON, ready for your CRM, your database, or your pipeline without any parsing. Feed it profile URLs, @screenNames, agent names, or a bare location, and this guide covers every input field, every output field, and three ways teams run it in production.

๐Ÿงญ What Does Zillow Agents Finder By Specialty & Language Do?

Zillow Agents Finder By Specialty & Language is an Apify Actor that scrapes Zillow's public real estate agent directory plus agent and lender profile pages. It returns two structurally distinct record types from one Actor: real estate agent profiles (enriched with specialty/language match verification and service-area coverage) and mortgage lender profiles (directory and full-profile data, unchanged from the base pipeline for parity). No Zillow account, login, or API key is required โ€” every request targets pages and endpoints Zillow already serves to an anonymous, logged-out visitor.

Key capabilities:

  • Multi-specialty directory search across 12 Zillow specialty codes (luxury homes, new construction, relocation, property management, foreclosure, and more) in a single run
  • Multi-language matching verified against each agent's real languagesSpoken profile field โ€” not just Zillow's own directory search filter
  • Service-area coverage check (coversLocation, serviceAreaCount) against a targetLocation you supply
  • Full agent profile enrichment on request: sales stats, licenses, phones, email, business address, active/rental/sold listing summaries, and a reviews preview
  • Bulk input by direct profile URL, @screenName, free-text agent name, or a pure location-based directory crawl when urls is left empty
  • A parallel mortgage lender directory + profile pipeline (company name, NMLS ID, state licenses, ratings) via the same operation input
  • A three-tier proxy fallback (Direct โ†’ Apify Datacenter โ†’ Apify Residential, 3 retries on residential) that escalates only when Zillow blocks a request

โšก Features & Capabilities

The Actor's capabilities split into directory search, profile verification, and dataset delivery.

Core features

  • Multi-value directory search โ€” agentSpecialties and spokenLanguages both accept arrays; picking 2+ values in either dimension switches the crawl from a single combined query to a union of per-value searches so recall covers any requested specialty or language
  • Verified language matching โ€” languageMatch (boolean) and matchedLanguages (array) are computed by match_any() against the agent's real languagesSpoken field pulled from their profile page, never guessed from the search filter alone
  • Honest null on unverifiable data โ€” specialtyMatch and matchedSpecialties are always null: Zillow's public agent profile page does not publish a per-agent specialties field to check the directory-search filter against, confirmed on every real profile sampled
  • Service-area coverage โ€” coversLocation (true/false/null) and serviceAreaCount (integer) derived from the agent's real serviceAreas list against your targetLocation
  • Compact or full profile shape โ€” fetchFullAgentProfile toggles between a lightweight card (avatar, business, name, rating, reviews, screenName, url, โ€ฆ) and the full profile (salesStats, licenses, phones, address, forSaleListingsSummary, soldListingsSummary, โ€ฆ)
  • Backward-compatible input โ€” agentSpecialties/spokenLanguages/targetLocation/maxAgents/fetchFullAgentProfile each fall back to a base single-value key (specialty, language, location, limit, agent_detail_info) when unset, so a base-shaped input JSON still runs unchanged
  • Pay-per-event pricing โ€” every pushed row goes through a single push_record() call using charged_event_name="row_result"; there is no separate uncharged accounting or error row in this Actor's dataset output, so every dataset item corresponds to one charged event

Zillow Agents Finder By Specialty & Language within the Scrapio data stack

Zillow Agents Finder By Specialty & Language covers real estate agent and mortgage lender profile data. For Zillow property listings, prices, and search filtering (ZIP code, city, price range, days-on-market, nearby schools), use Zillow Search Scraper With Advanced Filters. For contact-detail enrichment beyond what an agent's Zillow profile itself publishes โ€” a personal website, social handles, or a verified email โ€” pair this Actor's output with Extract Emails Contacts Socials: Verified Phone & Email List.

Why do developers and data teams scrape Zillow?

Zillow's agent and lender directories are a public, searchable index of licensed real estate professionals โ€” the audiences below are the ones that genuinely draw on that kind of data.

๐Ÿข Real estate lead generation and referral networks

A relocation service or referral platform takes an inbound lead's target metro and language preference, calls the Actor with targetLocation and spokenLanguages set, and gets back agents where languageMatch is true and coversLocation is true โ€” a verified shortlist rather than a raw directory dump. The phone, email, and business fields go straight into a CRM record or a referral-fee routing table, and rating/reviews.count let the workflow rank candidates before a human ever opens Zillow.

๐Ÿ“Š AI training data and RAG indexing

The aboutMe bio, professionalInformation-derived languagesSpoken, specialties, and the forSaleListingsSummary/soldListingsSummary text-and-numeric blocks are the highest-information fields for AI use: aboutMe is free text suited to RAG chunking for a real-estate assistant that needs to describe an agent in natural language, while salesStats and licenses give consistently structured numeric and categorical fields across every record, useful as training features for a lead-scoring or agent-matching model. Every field returns as a typed primitive, array, or nested object โ€” no HTML entities or markup to strip before it reaches a context window.

๐Ÿ“ฑ Competitive and market intelligence

A brokerage or portal tracking specialty and language coverage in a metro can run the same targetLocation + agentSpecialties combination on a schedule and watch matchedSpecialties, languagesSpoken, and rating shift as new agents enter the directory or existing ones update their profile โ€” a concrete way to spot an under-served specialty/language pair in a target market before a competitor does.

๐Ÿ”ฌ Research and academic use

Housing and labor-market researchers use the agent directory to study geographic distribution of language and specialty coverage relative to census demographics, or to build a dataset of licensed-agent counts per metro from serviceAreas and address. This Actor returns only data Zillow already publishes to any visitor โ€” no login-gated or private records are involved.

๐ŸŽฅ Product and SaaS development

A directory or CRM-enrichment product can wrap this Actor's agents operation as a "find a bilingual specialist agent" lookup feature, or use the lenders operation to power a companion mortgage-lender finder inside the same product, without building and maintaining a Zillow scraper in-house.

๐Ÿš Input Parameters

Every field below is read directly from .actor/input_schema.json; none are required.

ParameterRequiredTypeDescriptionExample Value
urlsNoarrayBulk input โ€” full profile URL, profile sub-tab URL (/sales, /rentals, /sold, /reviews), @screenName (optionally with a sub-tab), or a free-text agent name that triggers a directory search. Leave empty for a pure location + specialty/language crawl.["@REMAX EDGE", "Stephanie Younger"]
operationNostringagents (default) runs the Real Estate Agents pipeline with multi-specialty/language matching; lenders runs the Mortgage Lenders pipeline unchanged from the base."agents"
targetLocationNostringCity/state geo seed for the directory search and the reference point for coversLocation. Falls back to the base location key. Required unless every urls entry is a direct profile URL or @screenName. Default "New York"."Los Angeles, CA"
maxAgentsNointegerMaximum records returned across all specialty/language combinations. Falls back to base limit. 0 = unlimited. Min 0, max 10000. Default 20.25
agentSpecialtiesNoarray (select)One or more specialties to use as the directory search filter. specialtyMatch/matchedSpecialties stay null regardless (Zillow doesn't publish this back on the profile page). Falls back to base specialty.["luxury-homes", "new-construction"]
spokenLanguagesNoarray (select)One or more languages. An agent matches if their real profile lists ANY of these. Falls back to base language.["spanish", "mandarin"]
verifyRealProfileMatchNobooleanDefault true. When set and a specialty/language filter is active, fetches each agent's full profile (even in compact mode) to verify languageMatch/coversLocation. When off, skips the extra fetch and those fields stay null.true
dropUnmatchedProfilesNobooleanDefault false. When true, drops agents whose verified profile data doesn't match at least one requested language (specialty can't be verified). Never drops a row it couldn't verify.false
fetchFullAgentProfileNobooleanWhen true, returns the full profile (sales stats, licenses, service areas, address, phones, email, specialties, languagesSpoken, title). When false, returns the compact card, still enriched with match/coverage fields. Falls back to base agent_detail_info.true
is_top_agentNobooleanDefault false. Filters to Zillow-flagged top agents (agents only).true
is_buyingNobooleanDefault false. Filters to agents who focus on buyers (agents only).false
is_sellingNobooleanDefault false. Filters to agents who focus on sellers (agents only).false
sort_lendersNostring (select)Sort order for the lender directory: relevance (default), location, or rating. Ignored for agents."rating"
lender_fieldsNoarray (select)Field allowlist for lender records. Leave empty to return every field.["companyName", "rating", "phone"]
proxyConfigurationNoobjectDefault {"useApifyProxy": false} โ€” the Actor sends requests without a proxy first, escalating to Apify Datacenter then Apify Residential (3 retries) only on a block.{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}

Example input

{
"operation": "agents",
"targetLocation": "Los Angeles, CA",
"maxAgents": 25,
"agentSpecialties": ["luxury-homes", "new-construction"],
"spokenLanguages": ["spanish", "mandarin"],
"verifyRealProfileMatch": true,
"dropUnmatchedProfiles": false,
"fetchFullAgentProfile": true,
"is_top_agent": true,
"proxyConfiguration": { "useApifyProxy": false }
}

Supported URL types and input formats

  • Full profile URL โ€” https://www.zillow.com/profile/REMAX EDGE
  • Profile sub-tab URL โ€” https://www.zillow.com/profile/Stephanie Younger CA/reviews (the sales/rentals/sold sub-tabs are confirmed dead on Zillow's live site and are transparently served from the main profile page's own listing-summary fields instead, at zero extra request cost)
  • @screenName shorthand โ€” @REMAX EDGE or @REMAX EDGE/reviews
  • Free-text agent name โ€” "Stephanie Younger" runs a directory name= search instead of a direct fetch
  • Empty urls โ€” combined with targetLocation (and optionally agentSpecialties/spokenLanguages) runs a pure directory crawl with no direct targets at all

๐Ÿ“ฆ Output Format

Every run pushes typed, normalized JSON rows to the default Apify dataset, one push per matched agent or lender via a single charged_event_name="row_result" call โ€” there is no separate uncharged error row to filter out of billing. Four dataset views are pre-configured in the Actor's schema (matchAnalysis default, overview, agentDetail, lenders) so the Console table can switch shape without touching the underlying data.

Output for real estate agents

Full profile shape (fetchFullAgentProfile: true, with specialty/language matching active):

{
"id": "X1-ZUzxrx1qfk8pdd_9yhhp",
"name": "Stephanie Younger",
"screenName": "Stephanie Younger CA",
"url": "https://www.zillow.com/profile/Stephanie Younger CA",
"avatar": "https://photos.zillowstatic.com/fp/8e2a1c9d4b6f_agent.jpg",
"business": "COMPASS",
"rating": 5,
"yearsOfExperience": 24,
"reviews": { "count": 899 },
"serviceAreas": [
{ "name": "Los Angeles, CA", "url": "https://www.zillow.com/professionals/real-estate-agent-reviews/los-angeles-ca/" },
{ "name": "Beverly Hills, CA", "url": "https://www.zillow.com/professionals/real-estate-agent-reviews/beverly-hills-ca/" }
],
"email": "stephanie@stephanieyounger.com",
"phone": "(310) 425-9838",
"phones": { "cell": "(310) 425-9838", "brokerage": "(310) 424-1900", "business": null },
"address": {
"line1": "1922 Cotner Ave",
"line2": null,
"city": "Los Angeles",
"state": "CA",
"postalCode": "90025",
"full": "COMPASS, 1922 Cotner Ave, Los Angeles, CA 90025"
},
"licenses": {
"Real estate licenses": [
{ "License No.": "01365699", "issued by": "CA", "status": "Active", "expiration": "2027-03-31" }
],
"otherLicenses": []
},
"salesStats": {
"countAllTime": 1842,
"countLastYear": 96,
"priceRangeThreeYearMin": 450000,
"priceRangeThreeYearMax": 22000000,
"averageValueThreeYear": 2150000,
"statsIncludeTeam": true,
"pastSalesTotal": 1842
},
"specialties": null,
"languagesSpoken": ["English", "Spanish", "French", "Mandarin", "Russian", "German", "Vietnamese", "Korean", "Italian", "Hebrew", "Tagalog (Filipino)"],
"title": null,
"aboutMe": "Stephanie Younger is one of the top-producing real estate agents in Los Angeles, specializing in luxury and new-construction homes across the Westside.",
"forSaleListingsSummary": {
"total": 14,
"previewCount": 1,
"items": [
{
"zpid": "20486123",
"address": "1420 Amalfi Dr",
"cityStateZip": "Pacific Palisades, CA 90272",
"bedrooms": 5,
"bathrooms": 6,
"livingArea": 5400,
"livingAreaUnits": "sqft",
"imageUrl": "https://photos.zillowstatic.com/fp/1420amalfi.jpg",
"listingUrl": "https://www.zillow.com/homedetails/1420-Amalfi-Dr-Pacific-Palisades-CA-90272/20486123_zpid/",
"price": 8995000
}
]
},
"forRentListingsSummary": { "total": 0, "previewCount": 0, "items": [] },
"soldListingsSummary": {
"total": 1842,
"previewCount": 1,
"items": [
{
"zpid": "19887342",
"address": "455 Rockingham Rd",
"cityStateZip": "Brentwood, CA 90049",
"bedrooms": 4,
"bathrooms": 5,
"livingArea": 4200,
"livingAreaUnits": "sqft",
"imageUrl": "https://photos.zillowstatic.com/fp/455rockingham.jpg",
"listingUrl": "https://www.zillow.com/homedetails/455-Rockingham-Rd-Brentwood-CA-90049/19887342_zpid/",
"soldPrice": 6250000,
"soldDate": "2026-05-12",
"representedRole": "Seller's Agent"
}
]
},
"requestedSpecialties": ["luxury-homes", "new-construction"],
"matchedSpecialties": null,
"specialtyMatch": null,
"requestedLanguages": ["spanish", "mandarin"],
"matchedLanguages": ["Spanish", "Mandarin"],
"languageMatch": true,
"profileMatchAny": true,
"serviceAreaCount": 38,
"coversLocation": true,
"scrapedAt": "2026-07-24T18:22:05Z"
}

Output for mortgage lenders

Full profile shape (operation: "lenders", lender_fields left empty so every field is returned):

{
"id": "X1-ZWz1a2b3c4d5e6f7g8h",
"name": "John Smith",
"screenName": "John Smith NMLS123456",
"url": "https://www.zillow.com/lender-profile/John Smith NMLS123456",
"avatar": "https://mortgageapi.zillow.com/getLenderProfileImage?lenderId=X1-ZWz1a2b3c4d5e6f7g8h&imageId=img123",
"business": "Guaranteed Rate",
"nmlsLicense": "123456",
"phone": "(555) 123-4567",
"email": null,
"address": { "line1": "123 Main St", "city": "Los Angeles", "state": "CA", "postalCode": "90025" },
"rating": 4.9,
"reviews": { "count": 212 },
"languages": ["English", "Spanish"],
"specialties": [],
"aboutMe": "Helping first-time buyers and relocating families find the right loan for 15 years.",
"cellPhone": "(555) 123-4567",
"companyName": "Guaranteed Rate",
"confirmedReviews": 198,
"contactLenderFormDisclaimer": "By submitting this form, you agree to be contacted by this lender.",
"employerMemberFDIC": false,
"employerScreenName": "guaranteed-rate",
"equalHousingLogo": true,
"faxPhone": null,
"hideCellPhone": false,
"individualName": "John Smith",
"languagesSpoken": ["English", "Spanish"],
"memberFDIC": false,
"nmlsType": "individual",
"officePhone": "(555) 987-6543",
"recentReviews": 14,
"stateLicenses": { "CA": "123456-CA" },
"stateSponsorships": {},
"title": "Senior Loan Officer",
"totalReviews": 212,
"scrapedAt": "2026-07-24T18:25:11Z"
}

Schema stability and export options

Field names are pulled from stable __NEXT_DATA__ and mortgageapi.zillow.com JSON keys rather than parsed from rendered HTML classes, so they stay stable across Zillow front-end redesigns; when Zillow genuinely drops a field (as with the sales/rentals/sold profile sub-tabs), the Actor returns null for that value rather than fabricating one. Every dataset is downloadable through the Apify Console or API in JSON, JSON Lines, CSV, Excel (XLSX), XML, HTML table, or RSS โ€” the same export options every Apify dataset supports โ€” and the Console's four pre-built views let you switch between the match-analysis, compact overview, full agent detail, or lender table shape without re-running anything.

๐Ÿ’ก Zillow Agents Finder By Specialty & Language Strategy Guide

๐ŸŽฏ Strategy 1: Real-time enrichment pipeline

A lead-routing system receives an inbound buyer request naming a metro and a language preference. It triggers a run with targetLocation, spokenLanguages, agentSpecialties, verifyRealProfileMatch: true, and dropUnmatchedProfiles: true, then reads back languageMatch, coversLocation, phone, and email for each surviving record and writes them into the CRM lead record via the Apify API's dataset-items endpoint โ€” no manual directory browsing.

๐ŸŽฏ Strategy 2: Scheduled monitoring and alerting

A brokerage marketing team wants to know when a new bilingual, top-rated agent enters a target metro. Save the input as an Apify Scheduler task that re-runs the same targetLocation + agentSpecialties + spokenLanguages combination on a recurring basis, diff each run's screenName set and rating field against the previous run's dataset, and alert only on new screenName values with languageMatch: true and rating >= 4.5.

๐ŸŽฏ Strategy 3: Bulk dataset build

To build a national bilingual-agent research dataset, queue one run per metro (or per metro/specialty pair) with maxAgents set to a fixed cap or 0 for unlimited, then aggregate every run's dataset export to CSV or a database table. Each run's specialty/language combinations are capped at MAX_MATCH_COMBOS = 12 per the source's directory-search builder, so a metro with more than 12 combined specialty+language values needs to be split across two runs rather than one.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentInbound lead routingOn-demand API call per leadSingle JSON record, pushed to CRM
Scheduled monitoringMetro/specialty coverage alertsRecurring Apify Scheduler runDataset diff on screenName/rating
Bulk dataset buildResearch or training datasetsParallel runs, one per metroAggregated CSV/database export
Scraper NameWhat it extracts
Zillow Search Scraper With Advanced FiltersZillow property listings by ZIP/city/URL, with price/status/days-on-market filters and optional nearby-schools enrichment
Extract Emails Contacts Socials: Verified Phone & Email ListVerified email, phone, and social profile enrichment for any name, business, or website โ€” complements an agent record with contact channels beyond their Zillow profile
LinkedIn Company Employees Scraper : Public Contact InfoPublic employee and contact data for a brokerage's LinkedIn company page โ€” useful for sourcing agent teams alongside a Zillow directory pull

How to integrate Zillow Agents Finder By Specialty & Language with your stack

Zillow Agents Finder By Specialty & Language works with any language or tool that can make an HTTP request, through the Apify API and its official SDKs.

Python

import csv
from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
actor = client.actor("Scrapio/zillow-agents-finder-by-specialty-language")
metros = ["Los Angeles, CA", "Miami, FL", "Austin, TX"]
rows = []
for metro in metros:
run = actor.call(run_input={
"operation": "agents",
"targetLocation": metro,
"maxAgents": 25,
"agentSpecialties": ["luxury-homes"],
"spokenLanguages": ["spanish"],
"verifyRealProfileMatch": True,
"dropUnmatchedProfiles": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
rows.append(item)
with open("agents.csv", "w", newline="", encoding="utf-8") as f:
fields = ["name", "business", "screenName", "url", "languageMatch", "matchedLanguages", "coversLocation", "rating"]
writer = csv.DictWriter(f, fieldnames=fields)
writer.writeheader()
for r in rows:
writer.writerow({k: r.get(k) for k in fields})
print(f"Wrote {len(rows)} agent rows to agents.csv")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_API_TOKEN>' });
const run = await client.actor('Scrapio/zillow-agents-finder-by-specialty-language').call({
operation: 'agents',
targetLocation: 'Los Angeles, CA',
maxAgents: 25,
agentSpecialties: ['luxury-homes', 'new-construction'],
spokenLanguages: ['spanish', 'mandarin'],
verifyRealProfileMatch: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const agent of items) {
console.log(agent.name, agent.languageMatch, agent.coversLocation, agent.phone);
}

Async and scheduled pipelines

There is no webhook or callback logic inside this Actor's own source, so fire-and-forget large jobs follow the standard Apify pattern: start the run through the API, poll GET /v2/actor-runs/{runId} (or client.run(runId).waitForFinish()) until it finishes, then pull the dataset. For recurring metro/specialty scans, save the input as an Apify Scheduler task instead of triggering runs from your own cron.

๐ŸŽฏ Who Needs Zillow Agents Finder By Specialty & Language? (Use Cases & Industries)

๐Ÿข Real estate lead generation and referral networks

A relocation service filters agents by targetLocation and spokenLanguages, then routes only languageMatch: true and coversLocation: true results to its partner-fee referral table โ€” replacing manual directory searches with a verified, structured feed.

๐Ÿ“Š AI training data and RAG teams

Teams building a real-estate assistant chunk aboutMe, serviceAreas, and languagesSpoken into a RAG index so the assistant can answer "which agents near Austin speak Mandarin" with grounded, sourced text instead of a hallucinated guess.

๐Ÿ“ฑ Competitive intelligence teams

A brokerage tracks matchedSpecialties, languagesSpoken, and rating for competitor agents in a target metro on a recurring schedule, spotting under-served specialty/language combinations before opening a new office there.

๐Ÿ”ฌ Researchers

Housing-market and labor researchers use address, serviceAreas, and languagesSpoken across metros to study the geographic distribution of language and specialty coverage among licensed agents, using only data Zillow already publishes to any visitor.

๐ŸŽฅ Product and SaaS builders

A CRM-enrichment or directory product wraps the agents and lenders operations as a "find a bilingual specialist agent or lender" lookup feature, without maintaining a Zillow scraper in-house.

Scraping Zillow's publicly accessible agent and lender directory and profile pages is generally lawful in the United States. Courts have held that accessing data a website makes available to any visitor, logged in or not, does not by itself violate the Computer Fraud and Abuse Act โ€” as in hiQ Labs, Inc. v. LinkedIn Corp., 938 F.3d 985 (9th Cir. 2019). That precedent concerns unauthorized-access law, not Zillow's own Terms of Service; violating Zillow's ToS is a matter of civil contract risk between you and Zillow, not a criminal one, and can still result in IP blocks or account action. Separately, this Actor's output includes agents' and lenders' names, phone numbers, email addresses, and business addresses โ€” personal and business data under frameworks like GDPR and CCPA โ€” so anyone storing or using that output is the data controller for it and is responsible for a lawful basis to keep and use it. Zillow Agents Finder By Specialty & Language returns only publicly accessible data. What you do with that data is your responsibility โ€” consult legal counsel for commercial applications involving personal data.

โ“ Frequently asked questions

Does Zillow Agents Finder By Specialty & Language work without a Zillow account?

Yes. The Actor never logs in โ€” it requests only the agent directory, profile pages, and mortgageapi.zillow.com endpoints that Zillow already serves to a logged-out visitor. No Zillow account or API key is required.

How does it handle Zillow's anti-scraping measures?

It detects blocks by checking for HTTP 403/429 status codes, PerimeterX/captcha markers, and a missing __NEXT_DATA__ block on profile pages, then escalates through a three-tier proxy ladder โ€” Direct, then Apify Datacenter, then Apify Residential with 3 retries โ€” switching only when the current tier gets blocked, and rotating the exit IP between retry attempts.

Can I run it at scale without getting blocked?

The Actor scales by running more agent/lender targets per invocation or more parallel runs; there's no published uptime or success-rate figure to quote. One documented internal limit: specialty+language search combinations are capped at 12 per run (MAX_MATCH_COMBOS), so very broad multi-value searches may need to be split across runs.

How fresh is the data it returns?

Live per run โ€” every agent, lender, and directory page is fetched fresh from Zillow at run time. Nothing is served from a cache between runs.

Which fields work best for AI training and RAG indexing?

For RAG, aboutMe is the highest-information free-text field. For training data, salesStats, licenses, and languagesSpoken are the most consistently structured fields across records. All fields return as typed strings, numbers, arrays, or nested objects โ€” no HTML parsing needed before passing them into an LLM context window.

Does this Actor collect personal data, and who is responsible for it?

Yes โ€” agent and lender names, phone numbers, email addresses, and business addresses are personal or business data as Zillow already displays them publicly. The Actor returns only that publicly available data; the lawful basis for storing, processing, or using it sits with you as the data controller, not with the Actor.

Does it work with Claude, ChatGPT, and other AI agent tools?

There's no dedicated MCP server for this Actor. It's callable as a standard Apify API endpoint by any agent framework that can make an HTTP call (LangChain, custom tool-calling loops, etc.) โ€” every response is typed JSON, so an agent can consume languageMatch, coversLocation, or phone directly without an HTML-parsing step.

Why is specialtyMatch always null even when I set agentSpecialties?

Because Zillow's public agent profile page never publishes a per-agent specialties field to verify against โ€” confirmed absent on every real profile checked. The specialty value still drives Zillow's own directory search filter to find candidates; it just can't be independently verified the way languageMatch can, so the Actor reports null rather than a guessed true/false.

What's the difference between the agents and lenders operations?

agents runs the specialty/language-matching real estate agent pipeline with coversLocation and match verification. lenders runs the mortgage lender directory and profile pipeline unchanged from the base Actor โ€” company, NMLS license, ratings, and state licensing data, with no specialty/language matching logic applied.

Does a base-shaped input (using specialty, language, location, limit) still work?

Yes. agentSpecialties, spokenLanguages, targetLocation, maxAgents, and fetchFullAgentProfile each fall back to their base single-value key (specialty, language, location, limit, agent_detail_info) when the new key is empty, so existing base-shaped input JSON runs without modification.

โ„น๏ธ Disclaimer

Zillow Agents Finder By Specialty & Language extracts only publicly available data from Zillow. This tool is intended for lawful use cases only. Users are responsible for complying with Zillow's terms of service and applicable data protection laws in their jurisdiction.