Realtor & Real Estate Agent Lead Scraper — Verified Emails avatar

Realtor & Real Estate Agent Lead Scraper — Verified Emails

Pricing

from $40.00 / 1,000 enriched real estate leads

Go to Apify Store
Realtor & Real Estate Agent Lead Scraper — Verified Emails

Realtor & Real Estate Agent Lead Scraper — Verified Emails

Scrape real estate agent & broker contacts from Google Maps with verified emails & phones. Real-time data from agency websites. Export to HubSpot, Salesforce, or CSV. Built for proptech sales & mortgage marketing.

Pricing

from $40.00 / 1,000 enriched real estate leads

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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

FieldTypeRequiredDefaultDescription
businessTypeenumYesReal Estate AgentType of real estate professional to target. Options: Real Estate Agent, Real Estate Broker, Property Manager, Mortgage Lender, Home Inspector, Title Company, Custom
locationsarrayYes["Miami, FL"]One or more cities, states, ZIP codes, or regions. Use "City, ST" format (e.g., "Austin, TX")
searchQuerystringNoRaw Google Maps query, only used when businessType is "Custom"
maxResultsintegerNo50Maximum number of leads to collect across all locations
maxResultsPerLocationintegerNo0Per-location cap (0 = use global max only)
enrichEmailsbooleanNotrueVisit each business website and extract email addresses
verifyEmailsbooleanNotrueValidate emails via DNS MX + SMTP handshake (requires enrichEmails)
enrichSocialsbooleanNotrueExtract social media profile links from business websites
outputFormatenumNofullOutput structure: full, hubspot, or salesforce
countryCodestringNousTwo-letter country code for Google Maps localization
languageCodestringNoenTwo-letter language code for results
proxyConfigurationobjectNoApify proxyProxy settings (defaults to Apify residential proxy)

Output data

Each record contains the following fields:

FieldTypeDescription
namestringBusiness name from Google Maps
categorystringGoogle Maps business category
businessTypestringThe input business type used for the search
addressstringFull street address
phonestring|nullPhone number from Google Maps
websitestring|nullBusiness website URL
mapsUrlstring|nullDirect Google Maps listing link
ratingnumber|nullGoogle star rating (0–5)
reviewCountnumber|nullNumber of Google reviews
latitudenumber|nullGPS latitude
longitudenumber|nullGPS longitude
emailstring|nullBest email found on the business website
allEmailsarrayAll emails found, each with address, verified, status, verificationNote
emailVerifiedbooleanWhether the primary email passed verification
emailVerificationStatusstringvalid, invalid, catch_all, role_based, unknown, or not_verified
emailVerificationNotestringHuman-readable verification detail (MX host, SMTP response)
socialLinksobjectFacebook, Instagram, LinkedIn, Twitter/X, YouTube, TikTok URLs
locationstringThe search location that produced this lead
placeIdstring|nullGoogle Maps Place ID
sourceUrlstringGoogle Maps search URL
scrapedAtstringISO 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

LeadsCost
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

  1. DNS MX lookup — the actor resolves the domain's MX (Mail Exchange) records. If no MX records exist, the email is marked invalid
  2. SMTP handshake — the actor connects to the mail server on port 25 and performs HELOMAIL FROMRCPT TO. If the server responds with a 250 OK code, the email is marked valid
  3. 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
  4. Role-based detection — addresses like info@, contact@, sales@ are flagged as role_based even 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.

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

IssueSolution
Zero resultsCheck that your location string is recognized by Google Maps. Use "City, ST" format.
No emails foundThe business may not list an email publicly. Try disabling verifyEmails to get unverified emails faster.
All emails show "unknown" statusThe 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 longEmail verification adds ~1-2 seconds per email. Disable verifyEmails for faster runs, or reduce maxResults.
Serper API error 401/403The Serper API key is missing or invalid. Check the SERPER_API_KEY environment variable in actor settings.