Realtor.com Agent Scraper — Agents, Listings & Reviews
Pricing
from $19.00 / 1,000 agent extracteds
Realtor.com Agent Scraper — Agents, Listings & Reviews
Scrape Realtor.com real estate agents at scale — search by city or lookup by agent id. Returns license number, broker, office, contacts, ratings, listing stats, served areas, and specializations, plus optional for-sale, sold history, and reviews. Built for recruiting, lead gen, and CRM enrichment.
Pricing
from $19.00 / 1,000 agent extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Realtor.com Agent Scraper — Agents, Listings & Reviews 🏠
🎉 The Realtor.com agent scraper that returns FULL profiles — license number, broker, ratings, sold history & reviews — not thin $1/1K lead dumps.
Built for brokerage recruiters, lead-gen SaaS founders, and real-estate data teams who need real productivity signals on every agent in a market.
📋 Overview
Pull thousands of real-estate agents from Realtor.com at scale — search any US market by city, then get license number, broker, office, contacts, ratings, listing stats, served areas, and specializations in one clean structured dataset. Optional one-toggle enrichment adds each agent's full active for-sale portfolio, complete sold history, for-rent listings, and the entire reviews + recommendations corpus.
Why recruiters and lead-gen teams choose us:
- ✅ Full profiles, not lead dumps: license number, broker + office, phones, ratings, served areas, specializations, languages — the depth the "$1 per 1,000 leads" actors strip out
- ⚡ City-scale discovery: one search returns every agent in a market with stable pagination (thousands of agents per city)
- 🎯 Recruiting signal built in:
sold-last-year+ activefor-sale-count+ ratings let you rank top producers and target the right agents to poach - 💎 Deep enrichment: active for-sale, full sold history (hundreds to thousands of rows per agent), for-rent listings, and the complete reviews + recommendations corpus with sub-ratings
- 💰 Pay-per-event: a low per-agent headline rate, with enrichment as an optional add-on — only pay for what you pull
- ✨ NEW: HTML cohort report with top-broker breakdown, productivity medians, license/phone coverage, and per-query totals
Built by SIÁN Agency — an independent tool. See the Trademark Disclaimer below.
✨ Features
- 🧭 Two modes: city/state directory search OR direct lookup by agent fulfillment id
- 📜 License + broker data — license number, supervising broker, office name + address + phones per agent
- 📞 Full contact — typed phone numbers (mobile/office) + a convenience primary phone
- ⭐ Ratings — average rating, reviews count, recommendations count
- 📊 Productivity stats —
sold-last-year, activefor-sale-count, and price range when available - 🗺 Served areas + specializations + languages — perfect for territory targeting and niche matching
- 🏷 Active for-sale + for-rent portfolios — paginated, with price, address, beds/baths, type
- 📈 Full sold history — hundreds to thousands of past transactions per agent with last-sold price + date
- 💬 Reviews + recommendations — full corpus with reviewer type and sub-ratings (responsiveness, market expertise, negotiation, professionalism), plus agent replies
- 📄 HTML cohort report — saved to the key-value store with top-broker breakdown, productivity medians, and coverage stats
- 🔁 Resilient by default — automatic key failover so upstream blips don't fail your run
🎬 Quick Start
Pick search mode, give it a "City, ST" location, and run. To enrich, flip on the toggles and run on a paid plan.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~realtor-agent-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"searchMode": "search", "location": "Austin, TX", "maxAgentsPerQuery": 50}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose your market
Set searchMode to search and enter a location as "City, ST" (e.g. "Miami, FL"). Set maxAgentsPerQuery to how many agents you want.
Step 2: (Optional) Turn on enrichment
On a paid plan, flip includeForSale, includeSoldProperties, includeForRent, or includeReviews to attach each agent's full portfolio and review corpus.
Step 3: Run and export
Run the actor and export the dataset to JSON, CSV, or Excel. Open the HTML report in the key-value store for a cohort summary.
That's it! In a few minutes you'll have:
- Every agent in your target market with license + broker + contacts
- Productivity rankings (sold-last-year, active listings) to find top producers
- Optional full portfolios and reviews per agent
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| searchMode | string | No | search (directory by city) or lookup (by fulfillment id). Default search. |
| location | string | For search | City + two-letter state, e.g. "Austin, TX". A bare city won't resolve. |
| maxAgentsPerQuery | integer | No | Cap on agents per search query. Default 50. FREE tier capped at 5. |
| lookupTargets | array | For lookup | Agent fulfillment ids (e.g. ["3656096"]), harvested from search. |
| fetchAgentDetails | boolean | No | Fetch the full profile per directory row (default true). Always on in lookup. |
| includeForSale | boolean | No | Attach full active for-sale portfolio. Paid only. |
| includeSoldProperties | boolean | No | Attach full sold history. Paid only. |
| includeForRent | boolean | No | Attach active for-rent portfolio. Paid only. |
| includeReviews | boolean | No | Attach reviews + recommendations corpus. Paid only. |
| maxListingsPerAgent | integer | No | Cap on for-sale + for-rent rows per agent. Default 50. |
| maxSoldPerAgent | integer | No | Cap on sold rows per agent. Default 50. |
| maxReviewsPerAgent | integer | No | Cap on reviews per agent. Default 25. |
Example (search + enrichment):
{"searchMode": "search","location": "Austin, TX","maxAgentsPerQuery": 100,"includeSoldProperties": true,"includeReviews": true,"maxSoldPerAgent": 200}
Example (lookup):
{"searchMode": "lookup","lookupTargets": ["3656096"],"includeForSale": true,"includeReviews": true}
📤 Output
Results are saved to the Apify dataset. Key fields per agent:
| Field | Type | Description |
|---|---|---|
| fulfillmentId | string | Stable agent id (use for lookup + joins) |
| agentName | string | Agent display name |
| licenseNumber | string | Real-estate license number |
| broker | object | Supervising broker (name + id) |
| office | object | Office name, website, phones, address |
| phones / primaryPhone | array / string | Typed phones + a convenience first line |
| ratings | object | Average rating, reviews count, recommendations count |
| listingStats | object | sold-last-year, for-sale-count, price range |
| servedAreas | array | Markets the agent serves |
| specializations / languages | array | Niche + language signals |
| forSaleListings / soldListings / forRentListings | array | Portfolios (full when enriched) |
| reviews / recommendations | array | Full corpus with sub-ratings (when enriched) |
| counts | object | Array counts + reported totals |
| profileUrl | string | Public agent profile URL |
| scrapedAt | string | ISO collection timestamp |
Example:
{"fulfillmentId": "3656096","agentName": "Gregg Klar","isRealtor": true,"licenseNumber": "0472276","broker": { "name": "Keller Williams Realty - Broker", "fulfillmentId": "4458562" },"office": { "name": "Keller Williams - Lake Travis", "address": { "city": "LAKEWAY", "state_code": "TX", "postal_code": "78734" } },"primaryPhone": "(512) 653-0488","ratings": { "averageRating": 5, "reviewsCount": 1, "recommendationsCount": 7 },"listingStats": { "forSaleCount": 38, "soldLastYear": 43 },"servedAreas": ["Austin", "Lakeway", "Marble Falls", "Spicewood"],"profileUrl": "https://www.realtor.com/realestateagents/5c08282d000298001ac42fc7"}
💼 Use Cases & Examples
1. Brokerage recruiting
A recruiter at a national brokerage wants to poach top producers in a metro.
Input: search mode, "Austin, TX", high maxAgentsPerQuery.
Output: Every agent with broker, license, ratings, and sold-last-year.
Use: Rank by productivity, filter out your own brokerage, and run outreach.
2. Lead-gen SaaS
A founder sells data products to agents and needs an enriched agent directory.
Input: search across target markets + fetchAgentDetails.
Output: License + phones + broker + served areas + specializations per agent.
Use: Power a contact-enrichment or territory-mapping product without maintaining scrapers.
3. Real-estate analytics
An analyst tracks agent productivity and broker market share over time.
Input: search by market on a schedule.
Output: sold-last-year + active for-sale counts + top-broker breakdown (HTML report).
Use: Monitor top-producer concentration and broker share month over month.
4. CRM / data integration
A data engineer matches Realtor.com agents to internal records.
Input: lookup mode with known fulfillment ids, or search to discover them.
Output: Stable fulfillmentId + license + broker for deterministic joins.
Use: Enrich existing CRM records with served areas, reviews, and recommendations.
5. Reputation intelligence
A reputation team needs the full review corpus for a set of agents.
Input: lookup or search with includeReviews.
Output: Reviews (rating, comment, reviewer type, sub-ratings, agent reply) + recommendations.
Use: Benchmark agent reputation and surface negotiation/responsiveness sub-scores.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/realtor-agent-scraper').call({searchMode: 'search',location: 'Austin, TX',maxAgentsPerQuery: 50});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/realtor-agent-scraper').call(run_input={'searchMode': 'search', 'location': 'Austin, TX', 'maxAgentsPerQuery': 50})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~realtor-agent-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode": "search", "location": "Austin, TX"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the actor API
- Process: Handle the JSON agent records
- Action: Push to CRM, enrich a sheet, or notify your team
📊 Performance & Pricing
FREE Tier (Try It Now)
- 5 agents per run — full field access, same quality
- No credit card required
- Perfect for testing and small samples
PAID Tier (Production Ready)
- Unlimited agents per run, plus all enrichment toggles
- Faster processing, no per-run caps
- Pay-per-event: charged per agent extracted + per enrichment bundle
💰 Built for depth at a fair rate — a low per-agent headline with enrichment as an optional add-on.
❓ Frequently Asked Questions
Q: How many agents can I pull? A: FREE tier: 5 per run. PAID tier: unlimited, across as many markets as you schedule.
Q: How do I look up a specific agent?
A: Use lookup mode with the agent's numeric fulfillment id — harvest ids from a search run first.
Q: Why does my location return nothing?
A: Use the "City, ST" form (e.g. "Austin, TX"). A bare city can't be resolved.
Q: Do all agents have for-rent listings? A: No — many sales-focused agents have zero rentals. That's reflected accurately, never invented.
Q: What output formats are available? A: JSON, CSV, and Excel — export directly from the Apify dataset.
Q: Is this legal? A: We only extract publicly available agent-profile data. See the legal section below.
🐛 Troubleshooting
Search returns 0 results
- Use
"City, ST"(two-letter state). A bare city name won't resolve.
Enrichment toggles seem ignored
- Enrichment is PAID-only. On FREE tier the toggles are skipped by design.
A lookup fails
lookupneeds a numeric fulfillment id, not a profile URL. Run a city search to harvest ids.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
⚠️ Trademark Disclaimer
This is an independent tool and is not affiliated with, endorsed by, or sponsored by Move, Inc. or the National Association of REALTORS®. "Realtor.com" and "REALTOR®" are trademarks of their respective owners. This actor collects only publicly available real-estate agent profile data and is intended for legitimate, compliant use.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's Issues tab
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools