Realtor.com Scraper — Real Estate Agent Leads, Emails & Phones
Pricing
from $45.00 / 1,000 enriched listings
Realtor.com Scraper — Real Estate Agent Leads, Emails & Phones
Realtor.com scraper for real estate agent leads — listing agent email, phone, and brokerage plus full property data (price, beds, baths, taxes, price history). Search by ZIP code, property ID, or URL. Lead generation ready. No API key, no run-start fee.
Pricing
from $45.00 / 1,000 enriched listings
Rating
0.0
(0)
Developer
Jura Moshkov
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Realtor.com Scraper — Property Listings + Agent Contacts
Realtor.com scraper that returns property listings + agent contacts in one flat row per property. Search by ZIP code, property ID, or a Realtor.com URL and get the full listing (price, beds, baths, taxes, price history, photos, coordinates) plus the listing agent's email, phone, and brokerage attached to it — ready for real estate lead generation, agent prospecting, and CRM enrichment.
It is built for lead generation, sales prospecting, and AI agents. A few things set it apart from the many Realtor.com and Zillow scrapers that only return property data:
- Agent contact in every row. Not just the listing — the agent's email, office and cell phone, license, brokerage, and profile URL, so each row is a contactable lead rather than a map pin.
- Agent-native. It runs as a tool through the Apify MCP server, so an AI agent can discover it, fill the input straight from the schema, and run it inside a workflow.
- Pay only for results. No run-start fee. You are billed per successfully enriched property, so a run that returns nothing costs nothing.
- Reliable by design. It runs on a stable real-estate data API, not a headless browser, so Realtor.com layout or anti-bot changes do not silently break your scheduled runs.
What is a Realtor.com scraper?
It is a tool that queries Realtor.com the way you would — a ZIP code, a specific listing, or a search URL you paste — and returns each matching property as a structured record. A plain listing page shows you the price, beds, and baths. This actor goes one step further and resolves the listing agent's contact details (email, phone, brokerage, license) onto the same row, so the export is an outreach-ready real estate lead list, not just a property feed.
Looking for a real estate agent leads scraper, a Realtor.com property scraper, or realtor email addresses by ZIP code? This one actor does all three in a single run.
What you get per property
One property comes back as one flat row with property fields and agent/lead fields together.
Property fields:
| Field | Type | Description |
|---|---|---|
propertyId | string | Realtor.com property / listing ID. |
url | string | Listing URL. |
status | string | Listing status (e.g. for_sale). |
price | number | Listing price. |
currency | string | Currency, usually USD. |
beds | number | Bedrooms. |
baths | number | Bathrooms. |
sqft | number | Interior square footage. |
lotSqft | number | Lot size in square feet. |
yearBuilt | number | Year built. |
propertyType | string | Property type (e.g. single_family, condos). |
streetAddress / city / state / zip | string | Address parts. |
latitude / longitude | number | Coordinates. |
hoaFee | number | HOA fee when available. |
propertyTax | number | Property tax when available. |
estimateValue | number | Estimated value when available. |
rentEstimate | number | Rent estimate when available. |
daysOnMarket | number | Days on market. |
priceHistory | array | Price history entries {date, price, event}. |
photoUrls | array | Listing photo URLs. |
schools | array | Nearby schools when available. |
listedDate | string | Listing date (ISO). |
Agent / lead fields:
| Field | Type | Description |
|---|---|---|
agentName | string | Listing agent name. |
agentEmail | string | Agent email. Masked on the free tier. |
agentEmailMasked | boolean | Whether agentEmail is masked. |
agentPhone | string | Agent office phone. |
agentCellPhone | string | Agent cell phone when available. |
agentLicenseNumber | string | Agent license / NRDS ID when available. |
brokerName | string | Brokerage name. |
brokerPhone | string | Brokerage phone when available. |
agentProfileUrl | string | Agent profile URL. |
agentEmailSource | string | How the email was resolved. |
Meta fields: mode, searchZip, sourceUrl, scrapedAt (ISO), and error (null on success).
Example output row
{"mode": "zipSearch","propertyId": "8760921655","url": "https://www.realtor.com/realestateandhomes-detail/2009-Fortview-Rd_Austin_TX_78704_M87609-21655","status": "for_sale","price": 365000,"currency": "USD","beds": 3,"baths": 2,"sqft": 1128,"lotSqft": 8316,"yearBuilt": 1953,"propertyType": "single_family","streetAddress": "2009 Fortview Rd","city": "Austin","state": "TX","zip": "78704","latitude": 30.231288,"longitude": -97.788758,"hoaFee": 0,"daysOnMarket": null,"priceHistory": [],"photoUrls": ["http://ap.rdcpix.com/....jpg"],"listedDate": "2026-07-15T15:25:40.000Z","agentName": "Rosie Hayer","agentEmail": "rosie@512hayergroup.com","agentEmailMasked": false,"agentPhone": "5128433374","agentCellPhone": null,"brokerName": "Rivet Real Estate","agentProfileUrl": "http://www.512austinhomes.com/","agentEmailSource": "provider","searchZip": "78704","sourceUrl": null,"scrapedAt": "2026-07-17T13:05:45.270Z","error": null}
Input modes
The mode field decides what to scrape. Every mode returns the same flat row shape.
| Mode | Use it to | Requires |
|---|---|---|
zipSearch | Discover all listings + agents in a ZIP code (the main mode) | zipCodes |
propertyIds | Enrich a known list of Realtor.com property IDs | propertyIds |
url | Scrape any Realtor.com search or listing URL you paste | startUrls |
Search by ZIP code (main mode):
{"mode": "zipSearch","zipCodes": ["78704"],"listingStatus": "forSale","minPrice": 300000,"maxPrice": 900000,"beds": 3,"maxResults": 100}
Enrich known property IDs:
{"mode": "propertyIds","propertyIds": ["8760921655", "7960640248"],"maxResults": 2}
Scrape a Realtor.com URL:
{"mode": "url","startUrls": ["https://www.realtor.com/realestateandhomes-search/78704"],"listingStatus": "forSale","maxResults": 100}
Optional filters (minPrice, maxPrice, beds, baths) narrow zipSearch and url runs.
listingStatus picks between forSale, forRent, and sold. maxResults caps enriched
properties per run (up to 1000). requestDelayMs (advanced) adds a delay between requests for very
large runs.
How much does it cost?
No run-start fee. You are charged only for successfully enriched properties. A run that returns no property costs nothing.
| Apify plan | Price per enriched property | Agent email |
|---|---|---|
| Free | $0.07 | Masked (j***@e***.com) |
| Bronze | $0.06 | Full |
| Silver | $0.05 | Full |
| Gold | $0.045 | Full |
| Platinum | $0.04 | Full |
| Diamond | $0.04 | Full |
Free-plan runs are capped at 15 enriched properties and mask the agent email. Phones, license, brokerage, and all property data are always returned in full, on every plan. Upgrade your Apify plan for full agent emails and uncapped runs.
Example: 500 real estate agent leads on the Bronze plan is about 500 × $0.06 = $30.
How do I use it with an AI agent (MCP)?
This actor is available as a tool through the Apify MCP server. An agent can call it by name with a plain input and fill every field straight from the schema, because each input field carries a description:
{ "mode": "zipSearch", "zipCodes": ["78704"], "listingStatus": "forSale", "maxResults": 20 }
The output is one flat JSON object per property with no nested structures to unwrap, which is exactly what an agent needs to read a lead, decide, and act without extra parsing.
How do I get real estate agent leads by ZIP code?
Use zipSearch mode with one or more zipCodes. Each search returns the listings in that ZIP with
the listing agent's name, email, phone, cell phone, and brokerage attached. Add more ZIP codes to
widen coverage, and export agentEmail, agentPhone, agentCellPhone, and brokerName to CSV or
Google Sheets to build a real estate lead list you can import straight into a CRM. Free-plan runs
mask the email; any paid Apify plan returns the full realtor email address.
Is it legal / compliant?
The actor returns publicly available listing and agent data that Realtor.com already publishes. It does not log in, access private data, or bypass paywalls. As with any data tool, you are responsible for how you use the results: respect Realtor.com's terms of service, and follow marketing and privacy law in your market (for example CAN-SPAM and TCPA for outreach in the US, GDPR where it applies), including getting consent for cold outreach and honouring opt-outs. Treat the agent contact fields as B2B professional contacts, not consumer personal data.
Why is it reliable?
It is built on a stable real-estate data API rather than a headless browser scraper, so it is not broken by Realtor.com page-layout or anti-bot changes the way page-scraping actors are. Requests are retried automatically on transient errors, and a monthly-quota error stops the run cleanly instead of burning more requests on retries that cannot recover. Each search paginates against the provider's verified page cap, so large ZIP pulls come back complete. That combination is what makes it safe to put on a daily schedule or inside an automated agent pipeline: it keeps returning structured data instead of silently failing.
Use cases
- Real estate lead generation — build lists of contactable listing agents by ZIP, city, or state.
- Agent prospecting and recruiting — reach agents with their email, phone, brokerage, and the live listing they represent as context for the first message.
- Real estate market research — price, property type, location, and days-on-market analysis at scale.
- CRM and spreadsheet enrichment — push Realtor.com property and agent data into your sales stack.
- Investor and comp research — pull price, tax, HOA, estimate, rent estimate, and price history for properties in a target ZIP.
Examples
- All for-sale homes and their listing agents in a ZIP:
zipSearchwithzipCodes: ["78704"]. - Three-bed homes between $300k and $900k in a ZIP: add
minPrice,maxPrice, andbedsfilters. - A specific set of listings you already have IDs for:
propertyIdsmode. - Everything behind a Realtor.com search you built in the browser:
urlmode withstartUrls. - For-rent listings instead of for-sale: set
listingStatustoforRent.
Scheduling and integrations
Run it on a schedule (for example a daily new-listing pull per ZIP), or connect the dataset to Google Sheets, HubSpot, Make, Zapier, and webhooks through Apify integrations to keep your real estate lead list fresh automatically. No API key setup is needed — set your input and run.
Notes on coverage
- United States listings only.
- Agent email is found where available. Not every listing exposes an agent email through the
provider; when it is missing the field is null while phones, brokerage, and property data still
come back. Treat
agentEmailas "found where available" rather than a guaranteed field on every row. - Optional fields depend on the source.
estimateValue,rentEstimate,propertyTax,hoaFee,schools, andpriceHistoryare populated when Realtor.com carries them for that property and are null or empty otherwise. - Free plan preview. Free-plan runs are capped at 15 properties and mask the email so you can inspect the exact output shape before upgrading.