Realtor.com Agent Scraper Experience Specialties avatar

Realtor.com Agent Scraper Experience Specialties

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Realtor.com Agent Scraper Experience Specialties

Realtor.com Agent Scraper Experience Specialties

Realtor.com Agent Scraper extracts agent experience, specialties, profiles, locations, brokerage details, ratings, contact info, and profile URLs. Ideal for agent research, lead generation, real estate prospecting, market analysis, and competitive intelligence.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Realtor.com Agent Scraper — Experience, Specialties & Reviews

Realtor.com Agent Scraper — Experience, Specialties & Reviews pulls real estate agent listings from Realtor.com by zip code and returns each agent as typed JSON: contact and brokerage fields plus an enrichment block of bio, years of experience, specialties, professional designations, spoken languages, license number, MLS IDs, average rating and recommendation count. Unlike scraping frameworks that hand you raw HTML, this Actor returns a stable JSON schema — ready for a CRM, a database, or an LLM context window with no parsing step. Keep-only filters narrow results to agents matching a specialty or a spoken language, and an optional AI step condenses each bio into a one-line summary using your own model key. This guide documents every input, every output field, and how teams put it to work.

What Does This Actor Do?

Realtor.com Agent Scraper — Experience, Specialties & Reviews searches Realtor.com's agent directory by zip code and enriches each result with the same profile detail Realtor.com's own agent pages show: experience, specialties, designations, languages, license and MLS numbers, and a rating/recommendations summary. No Realtor.com account, login, or cookie is required — the Actor calls Realtor.com's public agent-search and agent-branding endpoints directly, the same way an anonymous visitor's browser does.

  • Multi-zip search — query any number of US zip codes in one run, each paged independently
  • Five sort orders — most relevant, most reviewed/rated, most sales, most recent activity, most testimonials
  • Experience & specialties enrichment — bio, years of experience, specialties, designations, languages, license number, MLS IDs, average rating, recommendation count
  • Keep-only filters — narrow output to agents matching a given specialty or spoken language
  • Optional AI bio summary — condense each bio into one sentence using your own Anthropic, OpenAI, Gemini, xAI, DeepSeek, Perplexity or Mistral key
  • Automatic proxy escalation on a block — direct connection, then datacenter, then sticky residential

Features & Capabilities

The Actor's feature set splits into three layers: the base agent search, the experience/specialties enrichment layered on top of it, and the anti-block handling that keeps both running.

Core features

Every enriched row can carry these keys (exact names, as pushed to the dataset):

zip_code, agent_name, website, email, listing_count, sold_count, office_phone, mobile_phones, areas_serviced, zip_codes_serviced, office_company_name, company_website, review_count, agent_photo, profile_url, experience_years, experience_label, specialties, designations, languages, license_number, mls_numbers, average_rating, recommendations_count, bio, bio_summary.

Specialties, designations and languages are returned as comma-joined strings rather than raw arrays, so a spreadsheet or CSV export never needs a separate flattening step. experience_years is a parsed integer pulled out of Realtor.com's own experience label (for example, "12 years 4 months of experience" becomes 12) — if the label text doesn't contain a year figure, the field is null rather than a guessed number.

Behind the scenes, the Actor pages through Realtor.com's agent search in batches of 24 agents per request until it reaches your maxItemsPerZipcode target or Realtor.com has no more matches for that zip, then fetches the full enrichment detail for each collected agent in concurrent batches of 5, with a short randomized pause between batches so requests aren't bursted all at once.

How this Actor compares to other Realtor.com agent scrapers

Checked on the Apify Store on 26 July 2026:

FeatureThis Actorcleansyntax/realtor-com-agents-scraperscraped/realtor-com-agents-by-zip-code
Output formatApify dataset (JSON), CSV exportApify dataset + generated OUTPUT.csvApify dataset
Experience / specialties / designations / license / MLS fieldsBuilt-in enrichment blockNot documented as a named field groupNot documented
Keep-only filter by specialty or languageTwo dedicated input filtersNot documentedNot documented
Optional AI-generated bio summaryBring-your-own-key, 7 providersNot documentedNot documented
Pricing modelPay per eventPay per eventFlat price per month
Anti-bot handlingDocumented direct → datacenter → sticky residential proxy ladderDescribed as "built-in retries"Recommends manually supplying a KP_UIDz-ssn cookie and User-Agent

If your use case is feeding structured data straight into an LLM or a CRM field, the enrichment-and-filter row is the decision-maker — pulling specialties and languages out of free-text bios yourself, inside an agent loop, is a reliability failure mode, not a feature.

When another tool might suit you better

If you need a pre-built national database instead of a live per-zip search — for example, sourcing agents across an entire state without running a scrape at all — memo23/realtor-search-cheerio documents an "Instant Agent Database" mode on its Apify Store listing (checked 26 July 2026) that serves from a large pre-collected agent set rather than scraping Realtor.com live. If your priority is property listings alongside agents in the same run, that same Actor also documents property-page scraping, which this Actor does not attempt at all — it returns agent rows only.

This Actor within the Scrapio data stack

This is currently the only Realtor.com agent scraper in the Scrapio catalogue. For adjacent Realtor.com data — social/phone lead qualification, market and brokerage rollups, or recent sold-listing detail — see Related Realtor.com Scrapers & Tools below, which names the closest Actors elsewhere in the wider catalogue and on the Apify Store.

Why do developers and data teams scrape Realtor.com agent data?

🏢 Brokerages and team leads

A brokerage evaluating recruits or comparing offices pulls experience_years, specialties, sold_count, review_count and average_rating for every agent in a target zip, then ranks candidates before a single outreach call is made. designations (CRS, ABR and similar) and license_number support fast credential checks, and areas_serviced shows whether a candidate's coverage actually overlaps the territory being staffed.

📊 AI training data and RAG indexing

bio, specialties and designations carry the most descriptive free text per agent, making them the fields worth chunking into a vector store for a "find me an agent who specializes in X" retrieval tool. For training data, experience_years, average_rating, recommendations_count and review_count are the most structurally consistent numeric fields across records, since every enriched row carries them in the same type.

📱 Competitive and market intelligence

Re-running the same zip codes on a schedule and diffing sold_count, listing_count, review_count and average_rating per agent surfaces who is gaining sales velocity or review volume in a territory — the signal a competitor's marketing spend or a brokerage's recruiting push shows up in first.

🔬 Research and academic use

experience_years, specialties, languages and average_rating support market-structure and professional-services research at the zip-code or metro level. Only publicly available profile data is returned — no login-gated or account-only data is collected.

🎥 Product and SaaS development

Agent-directory products, lead-routing tools and enrichment APIs are commonly built on top of exactly this shape: a zip_code-keyed agent list with contact, brokerage and credential fields already normalized, so a product team can wire a matching or routing feature without writing a Realtor.com parser first.

🍚 Input Parameters

All ten parameters below are optional per the schema, though the Actor exits with no output if zipCodes is empty.

ParameterRequiredTypeConstraintsDescription
zipCodesNoarrayeditor: stringListOne or more US zip codes to pull agents from. Example: ["33139", "90211"]. Each zip is paged independently.
maxItemsPerZipcodeNointegerdefault 10; min 1; max 10000Upper bound on agents returned per zip code. Example: 25 → up to 25 agent profiles for each zip.
sortOrderNostringdefault "RELEVANT_AGENTS"; enum: RELEVANT_AGENTS (Most relevant), RATINGS_REVIEWS (Most reviewed / rated), MOST_SALES (Most sales), MOST_RECENT_ACTIVITY (Most recent activity), TESTIMONIALS_RECOMMENDATIONS (Most testimonials)Order agents are pulled in. RATINGS_REVIEWS surfaces the most reviewed (and best-enriched) agents first.
enrichProfileNobooleandefault trueFetch and append the enrichment block per agent: bio, experience years, specialties, designations, spoken languages, license number, MLS IDs, average rating and recommendations. Uses the same request the base search already makes — no extra HTTP cost.
filterBySpecialtyNoarraydefault []; editor: stringListCase-insensitive keep-only filter. If set, an agent is kept only when at least one of their specialties contains one of these terms. Example: ["Luxury", "Waterfront"]. Leave empty to keep all. Requires enrichment ON.
filterByLanguageNoarraydefault []; editor: stringListCase-insensitive keep-only filter on spoken languages. Example: ["Spanish"] keeps only agents listing Spanish. Agents with no listed language are dropped when this is set. Leave empty to keep all. Requires enrichment ON.
aiEnhancementNobooleandefault falseWhen on, condense each agent's bio into a one-line bio_summary via your own LLM key. Off by default; keyless runs return the full structured output with bio_summary = null.
aiModelNostringdefault "claude-haiku-4-5"; 14 enum values across 7 providersProvider auto-detected from the model name: claude-* → Anthropic, gpt-*/o1/o3 → OpenAI, gemini-* → Google, grok-* → xAI, deepseek-* → DeepSeek, sonar* → Perplexity, mistral-* → Mistral. Cheaper mini/flash/haiku models are recommended for one-line summaries.
aiApiKeyNostringeditor: textfield; isSecret: true — masked in the Apify Console and run logsYour provider API key, used only when AI Bio Summary is on. Falls back to environment variables per provider: ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, XAI_API_KEY, DEEPSEEK_API_KEY, PERPLEXITY_API_KEY, MISTRAL_API_KEY.
maxRetriesNointegerdefault 3; min 1; max 10How many times a blocked or unstable request is retried before rotating the proxy IP.
proxyConfigurationNoobjecteditor: proxy; prefilled {"useApifyProxy": false}Starts direct (no proxy). On a block or soft block it auto-falls back to datacenter, then sticky residential with IP rotation. Enable Apify Proxy here to start on a proxy instead.

Note on maxRetries: independent verification of the current build found this value is read from input and logged at run start, but the two retry functions in the codebase are called without forwarding it — both run at a fixed 3 attempts regardless of what you set here. Documented above exactly as the schema declares it; do not rely on raising it to change retry behavior until this is fixed upstream.

Example input

{
"zipCodes": ["33139", "90211"],
"maxItemsPerZipcode": 25,
"sortOrder": "RATINGS_REVIEWS",
"enrichProfile": true,
"filterBySpecialty": ["Luxury", "Waterfront"],
"filterByLanguage": ["Spanish"],
"aiEnhancement": false,
"aiModel": "claude-haiku-4-5",
"maxRetries": 3,
"proxyConfiguration": { "useApifyProxy": false }
}

Supported zip code formats and input options

zipCodes accepts any US 5-digit postal code as a string, one or many, in any order — the console prefills ["07101", "00501"] as a starting example. Each entry is searched and paged independently, so a run with ten zip codes makes ten independent search sequences, not one combined query.

Three common patterns:

  • Single-market pull: {"zipCodes": ["90210"], "maxItemsPerZipcode": 50} — the top 50 agents in one zip, default sort.
  • Specialty-filtered multi-zip pull: {"zipCodes": ["33139", "33140", "33141"], "filterBySpecialty": ["Luxury"], "sortOrder": "RATINGS_REVIEWS"} — highest-rated luxury specialists across three adjacent zips.
  • Bilingual lead list: {"zipCodes": ["90011", "90023"], "filterByLanguage": ["Spanish"], "maxItemsPerZipcode": 100} — up to 100 Spanish-speaking agents per zip.

📦 Output Format

Every agent is one dataset row. When enrichProfile is on (the default), a row carries all 26 keys listed below. When it is off, the 12 enrichment keys are omitted from the row entirely — not written as null — so a downstream schema check should treat them as optional rather than always-present.

Output for agent profiles

{
"zip_code": "33139",
"agent_name": "Jamie Rivera, agent",
"website": "https://www.realtor.com/realestateagents/64f2a9d7b8c1e50012a34567",
"email": null,
"listing_count": 14,
"sold_count": 22,
"office_phone": "(305) 555-0134",
"mobile_phones": "(305) 555-0199",
"areas_serviced": "Miami Beach, South Beach, Sunny Isles Beach",
"zip_codes_serviced": null,
"office_company_name": "Coastal Realty Group",
"company_website": "https://www.coastalrealtygroup.example",
"review_count": 47,
"agent_photo": "https://ap.rdcpix.com/example-photo-id-w480.jpg",
"profile_url": "https://www.realtor.com/realestateagents/jamie-rivera_miami-beach_fl_64f2a9d7b8c1e50012a34567",
"experience_years": 12,
"experience_label": "12 years 4 months of experience",
"specialties": "Luxury, Waterfront, Condominiums",
"designations": "CRS, ABR",
"languages": "English, Spanish",
"license_number": "SL1234567",
"mls_numbers": "A11223344",
"average_rating": 4.9,
"recommendations_count": 18,
"bio": "Jamie has sold waterfront and luxury condos across Miami Beach for over a decade, with a focus on first-time luxury buyers and seasonal residents.",
"bio_summary": null
}

agent_name preserves Realtor.com's own label format verbatim: full name followed by a comma and either the literal string agent or non-realtor, depending on whether Realtor.com flags the listing as a Realtor®-designated agent. bio_summary stays null unless aiEnhancement is on and a usable API key is resolved.

⚠️ Known data-quality caveats

Read this before you build anything on website, email, or zip_codes_serviced:

  • website is not the agent's personal or brokerage website. It is a Realtor.com profile URL, built by the Actor from an internal fulfillment_id (https://www.realtor.com/realestateagents/<fulfillment_id>). Realtor.com's own agent-branding data does expose a real website field (the agent's actual personal or business site, requested by this Actor's own GraphQL query), but the current build discards that value and writes the constructed Realtor.com link in its place. The genuine profile link is separately available and correctly populated in the profile_url field, so website and profile_url currently point to two different Realtor.com-hosted URLs for the same agent, and neither is the agent's outside personal website.
  • email is always null. No code path in the current build populates it from any Realtor.com response — it is a static placeholder field, present in the schema for compatibility but never filled in.
  • zip_codes_serviced is always null. Like email, it is never assigned a value from any fetched data. Use areas_serviced (a comma-joined list of named service areas) for coverage information instead — that field is populated from Realtor.com's response.
  • Keep-only filters and AI summary depend on enrichProfile. filterBySpecialty, filterByLanguage and aiEnhancement all read fields that only exist when enrichProfile is true; with enrichment off, specialty/language filters have nothing to match against and bio_summary stays null regardless of the AI setting.

Schema stability and export options

Field names are stable across runs and are not tied to Realtor.com's front-end layout — the Actor reads Realtor.com's GraphQL response structure directly rather than parsing rendered HTML, so a visual redesign does not by itself change the output shape. Export the dataset as JSON, CSV, Excel or XML from the Apify Console, or read it programmatically through the Apify API or the apify-client libraries.

💡 Realtor.com Agent Scraper Strategy Guide

🎯 Strategy 1: Real-time enrichment pipeline

When a new lead or referral arrives with a zip code attached, trigger a run scoped to that single zip with maxItemsPerZipcode set low (10–25) and enrichProfile on. Match the incoming lead against the returned agent_name and office_company_name, then write specialties, experience_years, license_number and average_rating back into the CRM record before routing the lead — so a router can prefer, say, a Spanish-speaking luxury specialist over a generalist without a human reviewing bios first.

🎯 Strategy 2: Scheduled monitoring and alerting

Set up an Apify Schedule to re-run the same zipCodes list weekly. Diff each run's dataset against the previous one on sold_count, review_count, average_rating and recommendations_count, keyed on agent_name plus office_company_name. Alert on the delta that matters for your use case — a jump in sold_count signals a fast-moving competitor in the territory; a drop in average_rating signals a brokerage worth a recruiting call.

🎯 Strategy 3: Bulk dataset build

Pass a large zipCodes array in a single run with maxItemsPerZipcode raised to cover your target volume per zip, and enrichProfile on for full field coverage. Agents within each zip are fetched in concurrent batches internally; there is no user-configurable concurrency setting to tune. Export the finished dataset as CSV or JSON for a market-wide agent directory or an AI training set once the run completes.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentCRM lead routingSingle on-demand run per lead's zip codeDataset row read via API, written into CRM
Scheduled monitoringTerritory / competitor trackingApify Schedule, recurring run over the same zip listDataset diffed run-over-run on named fields
Bulk dataset buildMarket-wide directory or training dataOne run, large zipCodes array + higher maxItemsPerZipcodeFull dataset export as CSV or JSON
Scraper NameWhat it extracts
Realtor.com Agent Scraper With Phone & Social LeadsAgent leads with phone-only filtering, cross-zip agent de-duplication, and Facebook/Instagram/LinkedIn/X/YouTube/TikTok links
Realtor Com Agent Scraper With Market & Brokerage StatsBase agent fields plus per-zip market rollups and per-brokerage aggregation in a separate dataset
Realtor.com Agents + Recent Sold ListingsBase agent fields plus active-listing price bands and recent-sold listing preview rows
Realtor.com Agent Scraper (base)The unenriched agent search — name, contact, brokerage, listing and sold counts, no specialties block
cleansyntax/realtor-com-agents-scraper (Apify Store)Multi-zip agent export with CSV output; checked 26 July 2026
scraped/realtor-com-agents-by-zip-code (Apify Store)Per-zip agent export with a documented data dictionary; checked 26 July 2026

How to integrate this Actor with your stack

Realtor.com Agent Scraper — Experience, Specialties & Reviews works with any language or tool that can call the Apify API — there is no separate signup flow or credential system beyond your Apify account.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("<YOUR_USERNAME>/realtor-com-agent-scraper-experience-specialties").call(run_input={
"zipCodes": ["33139", "90211"],
"maxItemsPerZipcode": 25,
"sortOrder": "RATINGS_REVIEWS",
"enrichProfile": True,
"filterBySpecialty": ["Luxury"],
"proxyConfiguration": {"useApifyProxy": False},
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
for agent in rows:
print(agent["agent_name"], agent["specialties"], agent["average_rating"])
import csv
with open("agents.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)

Node.js

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
(async () => {
const run = await client.actor('<YOUR_USERNAME>/realtor-com-agent-scraper-experience-specialties').call({
zipCodes: ['33139', '90211'],
maxItemsPerZipcode: 25,
sortOrder: 'RATINGS_REVIEWS',
enrichProfile: true,
filterBySpecialty: ['Luxury'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const agent of items) {
console.log(agent.agent_name, agent.specialties, agent.average_rating);
}
})();

Async and scheduled pipelines

For large multi-zip jobs, start the run and poll client.run(runId).get() for status rather than blocking on .call(), or trigger runs on a recurring cadence with an Apify Schedule in the Console. Apify can also fire a webhook on run completion or failure, so a downstream system can be notified without polling — configure it against this Actor's runs from the Apify Console or API, independent of any code inside the Actor itself.

Who Needs This Actor? (Use Cases & Industries)

🏢 Brokerages and team leads

A team lead expanding into a new zip pulls every agent's specialties, experience_years and sold_count before making a single recruiting call, using license_number and designations to pre-screen credentials rather than asking for them in a first conversation.

📊 AI/RAG and product teams

A real-estate assistant product indexes bio, specialties and designations into a vector store so an agent-matching feature can answer "find me an experienced bilingual luxury specialist near this zip" against live data instead of a stale directory scrape.

📱 Market intelligence analysts

An analyst tracking a metro's top producers re-runs the same zip list on a schedule and watches sold_count, review_count and average_rating move over time, flagging which brokerages are picking up share before it shows up in quarterly market reports.

🔬 Researchers

Academic and market researchers studying professional-services structure by geography use experience_years, specialties and languages across zip codes, working only with data that is already public on Realtor.com's agent-search pages.

Scraping publicly accessible web data is broadly permitted in the United States: in hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2022), the Ninth Circuit held that accessing data a website makes available to the public, without bypassing an access control, does not violate the Computer Fraud and Abuse Act. That precedent addresses public accessibility, not a website's own contractual terms.

Separately, Realtor.com's terms of service govern what a user is contractually permitted to do with the site — violating them is a civil contract matter between you and Realtor.com, not a criminal one, but it is a real risk to weigh for commercial use.

Because this Actor's output includes agent names, mobile phone numbers and photos — personal data about identifiable individuals, even in a professional context — GDPR (if any subject is in the EU/UK) and CCPA/state privacy laws (if any subject is a California or similarly-covered resident) can apply to how you store, use and delete that data, separately from whether the scraping itself was lawful.

This Actor returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel before any commercial use involving personal data, especially outreach.

❓ Frequently asked questions

Does this Actor work without a Realtor.com account?

Yes. It calls Realtor.com's public agent-search and agent-branding GraphQL endpoints directly, the same ones an anonymous browser session uses. No account, login, cookie, or session token is required or used.

How does this Actor handle Realtor.com's anti-scraping measures?

Requests are sent through curl_cffi with Chrome TLS/JA3 impersonation rather than a default HTTP client signature, since Realtor.com's Akamai/PerimeterX-class protection fingerprints plain requests/aiohttp traffic. A block is detected on HTTP 403/429/503, on error-message tokens such as "blocked," "captcha," "rate limit," "connection reset," or "timeout," and on a soft-block guard that catches an HTTP-200 response with a data-less shell (the expected result container missing while the API otherwise reports matching rows). Any of these triggers escalation from no proxy, to datacenter proxy, to sticky residential proxy with IP rotation.

Can I run this Actor at scale without getting blocked?

There is no published uptime or block-rate guarantee. The Actor retries and escalates proxies automatically as described above, and maxRetries is exposed as an input — though independent verification found the current build's retry calls do not forward that value, so retries run at a fixed 3 attempts regardless of what you set. No documented rate limit or concurrency cap exists beyond maxItemsPerZipcode's own 1–10,000 range.

How fresh is the data this Actor returns?

Live. Every run performs a fresh Realtor.com search and detail fetch — there is no caching layer, so two runs seconds apart can return different sold_count, review_count or average_rating values if Realtor.com's own data changed in between.

Which fields work best for AI training and RAG indexing?

For RAG indexing: bio, specialties and designations carry the most descriptive text per agent and chunk cleanly. For training data: experience_years, average_rating, recommendations_count and review_count are the most structurally consistent numeric fields across records. All fields return as typed primitives — strings, integers or null — with no HTML or nested markup to strip.

Does website show the agent's real personal website?

No. website is a Realtor.com-hosted profile link built from an internal agent ID, not the agent's outside personal or brokerage site — see the Known data-quality caveats section above for the full detail. If you need the agent's own listed website independent of Realtor.com, this field will not give it to you in the current build.

What data protection obligations apply to the data this Actor returns?

The dataset includes personal data — names, phone numbers and photos of identifiable people — so GDPR, CCPA and equivalent regimes can apply to storage, use and retention depending on who the subjects and your users are. This Actor returns publicly available Realtor.com data; the lawful basis for any downstream storage or use is the responsibility of whoever runs it.

What happens if a zip code has no agents or fewer than requested?

No error is raised. If Realtor.com's search returns fewer agents than maxItemsPerZipcode asks for, the Actor pages until Realtor.com reports no more matches, then moves on with whatever it collected — including zero rows for that zip if Realtor.com has no agents listed there. A failed pagination request on the very first page of a zip does raise an error for that zip; a failure on a later page instead stops pagination early and the Actor still processes whichever agents it already collected.

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

Yes. It is callable as a standard HTTP endpoint through the Apify API, so any agent framework that can make a request — LangChain, CrewAI, a custom tool definition, or a no-code automation tool — can invoke it and receive typed JSON directly, with no HTML parsing step in between.

How does this Actor compare to other Realtor.com agent scrapers?

Checked on the Apify Store on 26 July 2026: cleansyntax/realtor-com-agents-scraper documents auto-pagination, retries, and a generated CSV, and is priced per event like this Actor, but does not document a named specialty/language filter or an AI summary step. scraped/realtor-com-agents-by-zip-code documents a 13-field data dictionary and recommends manually supplying a Realtor.com session cookie for reliability, and caps trial users at 5 records; it is billed as a flat monthly price rather than per event. memo23/realtor-search-cheerio documents a much broader scope — a 200,000+ agent instant database plus live property scraping — and is the better fit if you want a pre-built national dataset or property listings alongside agents. This Actor's difference is the combination of a structured experience/specialties/designations/MLS enrichment block, keep-only filtering by specialty or language, and an optional AI bio summary, all from a single per-zip live search.

ℹ️ Disclaimer

Realtor.com Agent Scraper — Experience, Specialties & Reviews extracts only publicly available data from Realtor.com. This tool is intended for lawful use cases only. Users are responsible for complying with Realtor.com's terms of service and applicable data protection laws in their jurisdiction, particularly given the personal data — names, phone numbers and photos — included in its output.