Realtor.com Agents Scraper: Reviews, Sales, Emails avatar

Realtor.com Agents Scraper: Reviews, Sales, Emails

Pricing

from $0.66 / 1,000 agents

Go to Apify Store
Realtor.com Agents Scraper: Reviews, Sales, Emails

Realtor.com Agents Scraper: Reviews, Sales, Emails

Scrape Realtor.com's Find a Realtor directory by city, ZIP code, state, link or name, past the 10,000 agents a search shows. Get office, brokerage, served areas, experience, ratings, reviews, recent sales and price range; add the profile, reviews, listings, e-mail. No login. Leads in CSV or API.

Pricing

from $0.66 / 1,000 agents

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Realtor.com Agents Scraper: Reviews, Sales, Emails

Realtor.com agents scraper and API: give a city ("Austin, TX"), a ZIP code, a whole state, a Find a Realtor link, an agent name or a list of profile links, and get one row per real estate agent of Realtor.com's agent directory: office and brokerage, served areas, languages, experience, rating with review and recommendation counts, homes for sale and recent sales with their price range, services and bio. Add the full profile (phones, website, office address, MLS memberships, specializations, designations, sales of the last 12 months), every review and recommendation, the agent's own listings and the agent's e-mail when you need them.

No login, no cookies and no browser: the Actor reads Realtor.com's own data service, up to 300 agents a request. Realtor.com answers at most 10,000 agents for one search; with Agents per search set higher, a city is read on through name prefixes (99.95 percent of Austin's 34,924 agents in a test). Each agent is charged once per run, whichever search found it; agents not found, filtered out or repeated are free rows.

What you can do with it

  • Build a list of the agents serving a city, a ZIP code or a whole state, with office, brokerage and experience.
  • Rank the agents of a market by ratings and reviews, recommendations, sales or recent activity, and keep only those with enough reviews, sales, listings or years.
  • Read an agent's reviews (with the four sub ratings) and recommendations for reputation research.
  • Find the agents advertising the homes for sale, sold or for rent in a city, ZIP code, county or neighborhood, with how many of those homes each one advertises.
  • Refresh a list of agents you already have by profile link or id, with the full profile, listings and e-mail.

How to use the Realtor.com Agents Scraper

  1. Open the Actor and type places into Places (Austin, TX, 78704, TX), or paste Find a Realtor links or profile links into Find-a-Realtor links and agent profile links, or profile links and ids into Agent profile links or ids.
  2. Optional: choose an Order, Realtor.com's filters (buyer's or seller's agents, languages, price range) and row filters (minimum rating, reviews, recommendations, recent sales, listings for sale, years of experience, brokerage, specializations, designations, required fields).
  3. Optional: turn on the add-ons (Agent details, Reviews, Recommendations, Listings, Agent email) and Include personal data if you need the agents' names and contacts.
  4. Set Agents per search (20 in the prefill, 100 by default) and click Start. Download the agents as JSON, CSV or Excel, or read them through the Apify API.

What data you get

One row per agent (type: "agent"), plus one free coverage row per search (type: "search": agents found, reached and delivered, whether the search is complete), free status rows for anything refused or not found (type: "status") and a free run summary (type: "summary"). Fill rates were measured on 150 agents at random positions of the agent lists of Austin TX, Dayton OH, Oakland MD, New York NY and Miami FL (October 2026); the e-mail on 60 agents of Austin, Dayton and Miami. Figures in brackets come from a run of 300 agents at the top of Chicago's list with Agent details on, and from 120 listings of 3 Austin agents (2026-10-30).

FieldWhat it holdsFill
profileId, name, profileUrlRealtor.com's profile id, the agent's name and profile link (with includePersonalData)100%
fulfillmentIdRealtor.com's second agent id (with includePersonalData)95%
photoUrl, licenseNumberphoto and licence number (with includePersonalData)85%, 59%
biothe agent's own text, as served77%
servedAreas, servesSearchedPlacecities the agent serves; whether one of them is the searched place (search rows)100% on search rows, about 92% on agents looked up or found on listings
experiencefirst year and month in business, years72% (Realtor.com shows a placeholder year 0 for the rest: delivered as no year)
office.name, brokerage.nameoffice and brokerage85%, 63%
languageslanguages listed on the profile29%
isRealtorMemberRealtor.com's REALTOR member marktrue on 57%
rating.average, rating.reviews, rating.recommendationsrating with its review and recommendation counts31% with reviews, 25% with recommendations
listingStats.forSale, listingStats.recentlySold, listingStats.annualPriceRangehomes for sale now and recently sold: count, price range, last date44% with homes for sale, 57% with recent sales
services, relevanceWeightbuyer and seller services offered; Realtor.com's relevance weight (search rows only)2%, 93%
search, rank, source, rowKey, scrapedAtthe search that found the agent and its place in it100%
rowStatus, detailsStatus, reviewsStatus, recommendationsStatus, listingsStatuswhether the row and each add-on were read in full (read, none, and for the e-mail no_listings), in part (partial, cut_to_fit_one_dataset_row, cut_by_charge_limit) or not (not_read, skipped_charge_limit); no_profile and no_fulfillment_id when Realtor.com has no profile or no agent id for it; a search with any of these not in full says not complete100%
details.phones, details.website, details.socialMediathe agent's phones, website and social links (Agent details, with includePersonalData)87%, 75%, 36%
details.officeoffice city and state, phones, website; street address with includePersonalData81% (address), 77% (phones), 52% (website)
details.mls, details.licenseStateMLS memberships (agent ids with includePersonalData), licence state77%, 59%
details.specializations, details.designations, details.intentTypespecializations, designations (ABR, CRS, GRI ...), buyer or seller focus78%, 14%, 61%
details.questionsAndAnswers, details.aboutVideoUrlthe profile's Q and A; video (with includePersonalData)8%, 3%
details.soldLast12Months, details.recentSalessales of the last 12 months; recent sales with city, beds, baths, photo(97%, 95%)
email, emails, nrdsId, officeEmails, emailStatusthe agent's e-mail and NRDS id from its own listings (Agent email, with includePersonalData)90% (54 of 60; every agent with a listing row)
reviewsrating, four sub ratings, comment, reviewer's display name, location and role, date, transaction date, the agent's reply242 reviews: rating 100%, sub ratings 96%, comment 81%, transaction date 15%, reply under 1%
recommendationscomment, author, date, source325 recommendations: comment and author 100%
listings, listingTotals, listingSideCountsthe agent's own listings: price, status, dates, address, beds, baths, size, type, photo, link, the agent's side; totals per kind(price, status, link and side 100%, address 99%, beds 90%; sold price 0%, as Texas does not disclose it)

Example row (shortened, personal data off)

{
"type": "agent",
"rowKey": "7cca436f86f9ed1d96fd268b",
"profileId": null,
"name": null,
"bio": "Austin & Central Texas Real Estate ...",
"isRealtorMember": true,
"languages": ["English"],
"servedAreas": [{ "city": "Austin", "state": "TX" }, { "city": "Bastrop", "state": "TX" }, { "city": "Buda", "state": "TX" }],
"servesSearchedPlace": true,
"experience": { "firstYear": 2011, "firstMonth": "January", "label": "15 years 9 months of experience", "years": 15 },
"office": { "name": "Team West Real Estate" },
"brokerage": { "name": "Team West Real Estate - Broker", "id": null },
"rating": { "average": 5, "reviews": 11, "recommendations": 62 },
"listingStats": {
"forSale": { "count": 3, "minPrice": 325000, "maxPrice": 462000, "lastListingDate": "2026-09-02T16:35:35Z" },
"recentlySold": { "count": 17, "minPrice": null, "maxPrice": null, "lastSoldDate": "2026-09-11" }
},
"source": "directory",
"rank": 1,
"search": { "label": "location 1", "place": "Austin, TX", "filters": { "sort": "relevant" } },
"detailsStatus": null,
"scrapedAt": "2026-10-30T02:51:55.267Z"
}

How much does it cost to scrape Realtor.com agents?

You pay per agent delivered, plus each add-on item you ask for (pay per event). Prices per 1,000 events:

EventFreeBronzeSilverGold
Agent (one agent row)$0.92$0.84$0.77$0.66
Agent details (the full profile, add-on)$0.55$0.50$0.45$0.40
Review$0.42$0.38$0.35$0.30
Recommendation$0.42$0.38$0.35$0.30
Listing$0.42$0.38$0.35$0.30
Agent email$1.40$1.28$1.16$1.00

Each run also pays a one time Actor start of $0.008 on every plan. Platinum and Diamond plans pay the Gold price. The Store pricing card shows these same prices per 1,000 events: "$0.66 / 1,000" on the Agent row means one agent costs less than a tenth of a cent, and "$1.00 / 1,000" on the Agent email row means one e-mail costs a tenth of a cent.

  • 1,000 agents of a city, no add-ons: $0.928 on the Free plan ($0.92 plus the $0.008 start fee), $0.668 on Gold.
  • 1,000 agents with Agent details and Agent email: at most $2.878 on Free and $2.068 on Gold. Agent email is charged only for an agent that has an e-mail (54 of 60 in the test).
  • 100 agents with Reviews on and 2,000 reviews among them: $0.94 on Free ($0.092 for the agents, $0.84 for the reviews, $0.008 start), $0.674 on Gold.
  • Agents looked up by link or id and agents found on listings come with their full profile, so each one pays Agent and Agent details: 1,000 of them cost $1.478 on Free and $1.068 on Gold.
  • Free: agents not found, filtered out or repeated, places refused or not found, every coverage, status and summary row, the CSV file, and Count only runs (only the start fee). A run with no usable input charges only the start fee.
  • Set a maximum cost per run in the Apify Console: an agent the limit cannot pay is not delivered, and add-on lists are cut to what the limit allows (marked cut_by_charge_limit, or skipped_charge_limit when nothing was left for a list).

Input

SettingWhat it does
locationsCities with their state (Austin, TX), 5 digit ZIP codes (78704, checked against Realtor.com's own place list) or whole states (TX or Texas: their cities, largest first). Up to 1,000. Realtor.com lists agents by city or ZIP code, so a county or neighborhood is refused, with a free row giving its position and the reason.
startUrlsFind a Realtor search links with their filter segments (buyer or seller, language, price, order, name, members, photo, rating, recommendations, designation), and agent profile links. Up to 10,000.
agentsProfile links (/realestateagents/<id> and the older <Name>_<City>_<ST>_<id>_<n> form), 24 character profile ids or numeric fulfillment ids. Up to 10,000. An id with no profile is a free row.
agentNameRealtor.com's own name search: alone, the agents of that name across the US; with places, the agents of that name in each place.
listingAgentLocations, listingAgentStatuses, maxListingsScannedAgents found on listings: the homes for sale (or sold, or for rent) of a city, ZIP code, county or neighborhood are read (1,000 by default, up to 10,000 a place) and the agents advertising them are delivered with their full profile and listingsFoundInSearch, up to Agents per search a place and checked by the same filters as a search (languages, price, name and the row filters). Up to 200 places.
sortMost relevant, ratings and reviews, recommendations, most sales, most recent activity.
agentType, languages, minPrice, maxPriceRealtor.com's own filters (languages and price are checked again on every row; buyer's or seller's agents is Realtor.com's own search filter only). A price leaves out every agent without a listing price range (about 85 percent of a city's agents).
realtorMembersOnly, withPhotoOnly, minRating, minReviews, minRecommendations, minRecentSales, minListingsForSale, minYearsExperience, maxYearsExperience, brokerageContains, requiredFields, specializations, designationsRow filters, checked on every row; a row they leave out is free. Specializations, designations and most required fields read the full profile (turn on Agent details).
maxItems, maxAgentsPerSearchAgents in all (200,000 by default and at most; split a bigger job over several runs) and per search (100 by default, up to 100,000). Above 10,000, a city search is read on through every two letter name prefix.
countOnlyFree: the agent count of each search in its coverage row, no agent rows.
includeDetails, includeEmail, includeReviews, includeRecommendations, includeListingsThe add-ons. maxReviewsPerAgent and maxRecommendationsPerAgent (50 by default, up to 5,000), listingTypes (for sale, sold, for rent, off market; for sale and sold by default) and maxListingsPerAgent (50 a kind by default, up to 1,000). includeEmail needs includePersonalData; it also gives the office's e-mail (officeEmails) where the agent's listings show one, at no extra charge.
includePersonalDataOff by default (see below).
outputFormat, omitEmptyFields, saveCsvNested, flat (one column per field) or compact rows; leave out empty fields; also save AGENTS.csv in the run's key-value store (every column but the review, recommendation and listing lists, which stay in the dataset; at most 400 columns).
maxConcurrency, proxyConfigurationParallel requests (1 to 4, default 3); Apify Proxy (default, its datacenter pool; a proxy group or a country is refused, since the Actor screens the networks Realtor.com refuses) or your own http:// proxy links (a password of 8 characters or more with letters and digits).

Example input:

{
"locations": ["Austin, TX", "78704"],
"sort": "ratings",
"minReviews": 5,
"includeDetails": true,
"maxAgentsPerSearch": 200
}

Personal data

Real estate agents are private persons, so with includePersonalData off (the default) every field that names or reaches an agent is empty: the name, profile and fulfillment ids, profile link, photo and licence number; with Agent details the agent's phones, website, social links, MLS agent ids and licences, the office's street address and the video; the e-mail and NRDS id; a reviewer's photo, address and link; the brokerage id; office phones of a person's kind (mobile, home, other) or equal to the agent's own number; an office or brokerage name or office website that holds two words of the agent's display name (the one word of a one word name; every business name when the name is missing); the agent's own website listed again as the office's; and the office phones and website of a profile Realtor.com answered with field errors (nothing can show they are not the agent's). That is why default rows show "name": null. Turn the switch on when you need contact lists. Other business data (office and brokerage names, office phones of a business kind and websites) is delivered, and free text such as the bio, the Q and A and review comments comes as Realtor.com serves it, so it can hold what the agent or reviewer wrote there. You are responsible for using personal data lawfully (GDPR, CAN-SPAM, TCPA and state laws included).

What this Actor does not do

  • No buyer side deal history of an agent: Realtor.com's listings by agent answer the listing side (in a test 195 of 200 seller only, 4 seller and buyer, 1 buyer only), so listings and listingSideCounts are mostly the seller side. To find buyer's agents, use listingAgentLocations on sold homes: listingRoles then names the buyer side.
  • No "active listings" order: Realtor.com's agent search offers five orders, all available in sort; a link sorted by active listings is refused with a free row.
  • No team membership or team details: Realtor.com's agent record has no team field.
  • No lookup by NRDS id: NRDS ids are delivered with the e-mail add-on, but a number given in agents is read as a fulfillment id (an NRDS id there gives a free not found row).
  • No later page links (pg-2 and on): such a link is refused with a free row; give the link of page 1 and set maxAgentsPerSearch.
  • No lists of the ZIP codes an agent serves and no background photos: Realtor.com gives served areas as city names.
  • No e-mails found on agents' own websites or through outside services: the e-mail is the one Realtor.com shows on the agent's own listings, so an agent without listings on Realtor.com has none (6 of 60 in the test).
  • No counties or neighborhoods as agent search places (Realtor.com lists agents by city or ZIP code); they work in listingAgentLocations.
  • A name search is not split past Realtor.com's 10,000 agents, and the name prefix split of a city is near complete, never claimed complete: in a test 5 of Austin's 34,924 agents were found only by their full name. The coverage row gives agents reached against Realtor.com's count.
  • No monitoring, alerts or stored database: every run reads Realtor.com live, and a new run does not resume where an earlier one stopped. Schedule runs on Apify and compare the rows in your own sheet.

FAQ

How do I get real estate agents' e-mail addresses from Realtor.com?

Turn on Agent email and Include personal data. The e-mail and NRDS id come from the agent's own listings on Realtor.com, since the agent profile has no e-mail field: in a test 54 of 60 agents had one, every agent with a listing row. Agents without an e-mail are not charged for it.

How do I get every real estate agent in a big city, past the 10,000 limit?

Realtor.com answers at most 10,000 agents for one search. Set Agents per search above the city's count (up to 100,000) and the Actor reads on through every two letter name prefix of the same place and filters: 34,905 of Austin's 34,924 agents and 68,948 of New York's 68,961 in a test. The coverage row says how many of Realtor.com's count were reached; for a whole state, give the state (TX).

Can I see the ratings and reviews of individual agents?

Every row carries the agent's rating with its review and recommendation counts, and minRating or minReviews keep only the agents you want. Turn on Reviews for each review (rating, the four sub ratings, comment, reviewer, date, the agent's reply) and Recommendations for the testimonials.

Does Realtor.com have an official API?

Realtor.com publishes no open API for its agent directory; its APIs are partner lead and listing feeds. This Actor works like an API: send a JSON input through the Apify API and read the agents as JSON.

This Actor reads only data Realtor.com shows to every visitor without a login, and it gives personal data only when you turn it on. Realtor.com's terms of use restrict automated collection; whether and how you use the data is your decision and responsibility.

Why does this Actor run with limited permissions?

It needs nothing beyond its own run storage (the dataset it writes and its own key-value store), so it runs with Apify's limited permissions: it cannot read or change anything else in your account.

Use it through the API

curl -X POST "https://api.apify.com/v2/acts/automation_craft~realtor-com-agents-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"locations": ["78704"], "maxAgentsPerSearch": 50}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('automation_craft/realtor-com-agents-scraper').call({
locations: ['Austin, TX'],
maxAgentsPerSearch: 100,
includeDetails: true,
includePersonalData: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((x) => x.type === 'agent').map((x) => [x.name, x.office?.name, x.details?.phones]));
from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("automation_craft/realtor-com-agents-scraper").call(run_input={
"agents": ["https://www.realtor.com/realestateagents/56a649a10fa417010073f11b"],
"includeEmail": True,
"includePersonalData": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("type") == "agent":
print(item.get("name"), item.get("email"), item.get("rating"))

Changelog

  • 0.1 (2026-10-30): first version.

More data tools by Automation Craft