Realtor Leads Scraper — Verified Emails
Pricing
from $40.00 / 1,000 enriched real estate leads
Realtor Leads Scraper — Verified Emails
Find real estate agent and brokerage leads with verified emails, phones, websites, locations, specialties, and structured contact data.
Pricing
from $40.00 / 1,000 enriched real estate leads
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
A Google Maps-focused lead generation Actor that scrapes live business listings for real estate professionals — agents, brokers, property managers, mortgage lenders, home inspectors, and title companies — then crawls each business website to extract contact emails, phone numbers, office addresses, and social media profiles. It performs DNS MX lookups and SMTP handshakes to verify email deliverability, enriches and deduplicates records by business identity and location, and produces CRM-ready leads you can export to HubSpot, Salesforce, or CSV.
Use cases
- Mortgage lenders building referral partner outreach lists of agents and brokers
- Home inspection companies sourcing nearby brokers and agents for referrals
- Real estate SaaS vendors generating segmented prospect lists by city or brokerage size
- Title companies compiling broker contact lists across service counties for email campaigns
- Property management software vendors identifying property managers in metro areas
- Home staging companies targeting agents and brokers who list vacant properties
- PropTech firms prospecting specific metro markets with fresh, verified contacts
- Real estate CRM vendors and marketing agencies building pipelines for product demos and outreach
Features
- 6 real estate professional types — Real Estate Agents, Brokers, Property Managers, Mortgage Lenders, Home Inspectors, Title Companies, plus a Custom mode for niche queries
- Multi-location search — run a single search across multiple cities, ZIP codes, or regions in one run
- Email enrichment — crawls each business website (homepage, contact, about, team pages) and extracts email addresses from HTML, mailto links, and encoded entities
- Email verification — DNS MX record lookup + SMTP RCPT TO handshake confirms the mailbox exists before it reaches your list. Detects catch-all domains and role-based addresses (info@, contact@, sales@)
- Social media extraction — finds Facebook, Instagram, LinkedIn, Twitter/X, YouTube, and TikTok profile links from business websites
- CRM export formats — Full (all fields), HubSpot Import (matching HubSpot CSV column names), or Salesforce Import (matching Salesforce lead fields)
- Automatic deduplication — within a single run, duplicate Google Maps place IDs are filtered out
- Run resumption — saves checkpoint state so interrupted runs continue from the last processed position
- Pay-per-result pricing — $0.04 per enriched lead, with no charge for the actor start event beyond memory
Input parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
businessType | enum | Yes | Real Estate Agent | Type of real estate professional to target. Options: Real Estate Agent, Real Estate Broker, Property Manager, Mortgage Lender, Home Inspector, Title Company, Custom |
locations | array | Yes | ["Miami, FL"] | One or more cities, states, ZIP codes, or regions. Use "City, ST" format (e.g., "Austin, TX") |
searchQuery | string | No | — | Raw Google Maps query, only used when businessType is "Custom" |
maxResults | integer | No | 50 | Maximum number of leads to collect across all locations |
maxResultsPerLocation | integer | No | 0 | Per-location cap (0 = use global max only) |
enrichEmails | boolean | No | true | Visit each business website and extract email addresses |
verifyEmails | boolean | No | true | Validate emails via DNS MX + SMTP handshake (requires enrichEmails) |
enrichSocials | boolean | No | true | Extract social media profile links from business websites |
outputFormat | enum | No | full | Output structure: full, hubspot, or salesforce |
countryCode | string | No | us | Two-letter country code for Google Maps localization |
languageCode | string | No | en | Two-letter language code for results |
proxyConfiguration | object | No | Apify proxy | Proxy settings (defaults to Apify residential proxy) |
Output data
Each record contains the following fields:
| Field | Type | Description |
|---|---|---|
name | string | Business name from Google Maps |
category | string | Google Maps business category |
businessType | string | The input business type used for the search |
address | string | Full street address |
phone | string|null | Phone number from Google Maps |
website | string|null | Business website URL |
mapsUrl | string|null | Direct Google Maps listing link |
rating | number|null | Google star rating (0–5) |
reviewCount | number|null | Number of Google reviews |
latitude | number|null | GPS latitude |
longitude | number|null | GPS longitude |
email | string|null | Best email found on the business website |
allEmails | array | All emails found, each with address, verified, status, verificationNote |
emailVerified | boolean | Whether the primary email passed verification |
emailVerificationStatus | string | valid, invalid, catch_all, role_based, unknown, or not_verified |
emailVerificationNote | string | Human-readable verification detail (MX host, SMTP response) |
socialLinks | object | Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok URLs |
location | string | The search location that produced this lead |
placeId | string|null | Google Maps Place ID |
sourceUrl | string | Google Maps search URL |
scrapedAt | string | ISO 8601 timestamp |
Sample output
{"name": "Premier Realty Group","category": "Real estate agency","businessType": "Real Estate Agent","address": "123 Ocean Dr, Miami, FL 33139, USA","phone": "+1 305-555-0100","website": "https://premierrealty.com","mapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJabc123","rating": 4.8,"reviewCount": 127,"latitude": 25.7617,"longitude": -80.1918,"email": "info@premierrealty.com","allEmails": [{"address": "info@premierrealty.com","verified": true,"status": "role_based","verificationNote": "MX: aspmx.l.google.com, SMTP 250 OK (role-based address)"}],"emailVerified": true,"emailVerificationStatus": "role_based","emailVerificationNote": "MX: aspmx.l.google.com, SMTP 250 OK (role-based address)","socialLinks": {"facebook": "https://facebook.com/premierrealty","instagram": "https://instagram.com/premierrealty","linkedin": "https://linkedin.com/company/premierrealty","twitter": null,"youtube": null,"tiktok": null},"location": "Miami, FL","placeId": "ChIJabc123","sourceUrl": "https://www.google.com/maps/search/Real%20Estate%20Agents%20in%20Miami%2C%20FL","scrapedAt": "2026-06-24T22:00:00.000Z"}
Pricing
This actor uses pay-per-event pricing: $0.04 per enriched real estate lead.
Cost examples
| Leads | Cost |
|---|---|
| 10 leads | $0.40 |
| 50 leads | $2.00 |
| 200 leads | $8.00 |
| 1,000 leads | $40.00 |
You only pay for leads actually returned in the dataset — no charge for pages that return zero results or for the actor start event (beyond standard memory usage).
Code examples
Run via Apify SDK (JavaScript)
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('USERNAME/realtor-lead-scraper').call({businessType: 'Real Estate Agent',locations: ['Miami, FL', 'Austin, TX'],maxResults: 100,enrichEmails: true,verifyEmails: true,enrichSocials: true,outputFormat: 'full'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} verified real estate leads`);
Run via REST API (cURL)
curl -X POST "https://api.apify.com/v2/acts/USERNAME~realtor-lead-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"businessType": "Real Estate Broker","locations": ["Denver, CO"],"maxResults": 50,"verifyEmails": true,"outputFormat": "hubspot"}'
Export to HubSpot CSV
Set outputFormat to hubspot in the input. The output records will use HubSpot's column names (firstname, lastname, company, email, phone, etc.) so you can export the dataset as CSV and import it directly into HubSpot.
How email verification works
- DNS MX lookup — the actor resolves the domain's MX (Mail Exchange) records. If no MX records exist, the email is marked
invalid - SMTP handshake — the actor connects to the mail server on port 25 and performs
HELO→MAIL FROM→RCPT TO. If the server responds with a 250 OK code, the email is markedvalid - Catch-all detection — if a domain has DNS records but no MX, it may be a catch-all domain (accepts all email addresses). These are marked
catch_all - Role-based detection — addresses like
info@,contact@,sales@are flagged asrole_basedeven when the SMTP check passes, so you can filter them for personalized outreach
FAQ
Why do some leads have no email?
Not every real estate business lists an email on their website. The actor scans the homepage, contact page, about page, and team page, but some sites use contact forms instead of email addresses. These leads will still have phone numbers, addresses, and ratings.
What's the difference between "valid" and "role_based" status?
valid means the SMTP server confirmed the mailbox exists. role_based means the same, but the address is a generic inbox (like info@ or sales@) rather than a person's name. Both are deliverable, but role-based addresses may have lower engagement for cold outreach.
Can I search multiple cities in one run?
Yes. Add multiple entries to the locations array. The actor processes each location sequentially and deduplicates results across locations.
How many leads can I get per search?
Google Maps typically returns up to ~120 results per search query. Use maxResultsPerLocation to balance results across multiple locations.
Does the actor work outside the US?
Yes. Set countryCode to the appropriate two-letter code (e.g., ca for Canada, gb for United Kingdom) and languageCode as needed.
Troubleshooting
| Issue | Solution |
|---|---|
| Zero results | Check that your location string is recognized by Google Maps. Use "City, ST" format. |
| No emails found | The business may not list an email publicly. Try disabling verifyEmails to get unverified emails faster. |
| All emails show "unknown" status | The target mail server may be blocking SMTP probes. This is common with large providers like Google. The emails are likely still valid. |
| Run takes too long | Email verification adds ~1-2 seconds per email. Disable verifyEmails for faster runs, or reduce maxResults. |
| Serper API error 401/403 | The Serper API key is missing or invalid. Check the SERPER_API_KEY environment variable in actor settings. |
What is Realtor Leads Scraper?
Realtor Leads Scraper turns the target data into structured, reusable results on Apify. Use it when you need repeatable collection for sales teams, agencies, recruiters, market researchers, and data-enrichment workflows without maintaining a custom scraper or one-off integration. Run it manually, schedule recurring jobs, call it through the Apify API, or connect it to an AI agent through the Apify MCP server.
The Actor stores results in an Apify dataset, where they can be previewed and exported as JSON, CSV, Excel, XML, or RSS. Availability and completeness depend on the source, supplied inputs, public visibility, authentication requirements, and upstream rate limits.
Use cases for Realtor Leads Scraper
- Build structured datasets for research, reporting, enrichment, or monitoring.
- Automate repetitive collection with schedules, webhooks, and API calls.
- Feed clean records into spreadsheets, databases, CRMs, BI tools, AI agents, or RAG pipelines.
- Track changes over time by running the same validated input on a schedule.
- Replace fragile manual copy-and-paste work with a reproducible Apify workflow.
How to use Realtor Leads Scraper
- Open the Actor input page and choose a focused, valid target.
- Set a conservative result limit for the first run.
- Start the Actor and inspect the dataset for coverage and field availability.
- Export the results or connect the dataset to your downstream system.
- Scale gradually and use scheduling, pagination, or proxies when supported.
Important input options
businessType— Select the type of real estate professional to target. The actor builds the Google Maps query automatically — e.g., 'Real Estate Agent' searches for 'Real Estate Agents in [location]', 'Reallocations— One or more cities, states, ZIP codes, or regions to search. Use 'City, ST' format for best results (e.g., 'Austin, TX' or 'Denver, CO'). You can also enter ZIP codes ('90210'), neighborhoodsearchQuery— A raw Google Maps search query — only used when Business Type is 'Custom'. Write it exactly as you would type it into Google Maps. Examples: 'luxury real estate agents in Beverly Hills, CA',maxResults— The maximum number of leads to collect and return. The prefill is set to 3 for a quick test run — increase to 50–200 for production use. Google Maps typically returns up to 120 results per smaxResultsPerLocation— Maximum number of leads to collect from each location before moving to the next. Useful when searching multiple locations and you want balanced coverage. Set to 0 to use the global maxResultenrichEmails— When enabled, the actor visits each agent or broker's website and scans contact pages, footers, and about pages for email addresses. This is what transforms raw Google Maps listings into a uverifyEmails— When enabled, each extracted email is validated via DNS MX lookup and SMTP handshake — confirming the mailbox exists before it reaches your list. Recommended for cold outreach to real estateenrichSocials— When enabled, the actor extracts social media profiles (Facebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok) from each agent or broker's website. Useful for LinkedIn outreach to realto
API and automation example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/realtor-lead-scraper').call({// Add the same input fields you use in the Apify Console.});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Related Apify Actors
Use these dedicated tools when a neighboring data source or workflow is a better match:
- Idealista Scraper — Extract Listings, Prices & Agency Contacts
- Instagram Followers & Following Scraper — With Cookies
- Leads Finder Pro - B2B Leads with Emails [Apollo Alternative]
- Yellow Pages US Scraper — Business Leads & Reviews
- Yellow Pages Australia Scraper — Business Leads & Reviews
- OpenTable Restaurants, Ratings & Reviews Scraper
- Etsy Scraper Pro — Products, Prices, Reviews & Shop Data
- Shopify Store Scraper - Products, Reviews & Emails
- 🔧 USA Plumbers Scraper — Leads with Phone, Address & Website
- Yellow Pages CA Scraper — Canadian Business Leads
Frequently asked questions
How many results can I scrape with Realtor Leads Scraper?
The practical total depends on the source, input limits, pagination, available records, run timeout, and upstream restrictions. Start with a small run, verify the output, and increase the limit gradually.
Can I integrate Realtor Leads Scraper with other apps?
Yes. Use Apify integrations, webhooks, schedules, dataset exports, Make, Zapier, Google Sheets, cloud storage, or your own application.
Can I use Realtor Leads Scraper with the Apify API?
Yes. Start runs with the Apify REST API or an official Apify client, then retrieve records from the run's default dataset. Keep your API token in a secret or environment variable.
Can I use Realtor Leads Scraper through an MCP Server?
Yes. The Apify MCP server can expose the Actor to compatible AI clients and agents. Review the input and expected cost before allowing an autonomous workflow to run it at scale.
Do I need proxies?
It depends on the source and volume. Use the default configuration first. For larger or geographically sensitive jobs, select an appropriate proxy configuration only when the Actor supports it.
Is it legal to scrape this data?
Scraping rules vary by source, jurisdiction, data type, and intended use. Collect only data you are authorized to access, respect applicable terms and privacy laws, and avoid restricted or personal data misuse. This documentation is not legal advice.
Your feedback
If a field is missing, a source layout has changed, or you need a supported use case documented, open an issue on the Actor page with a reproducible input and run ID.