Estately Real Estate Scraper avatar

Estately Real Estate Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Estately Real Estate Scraper

Estately Real Estate Scraper

Scrape Estately.com real-estate listings by city, ZIP code, or state - active for-sale or recently-sold homes with price, beds/baths, square footage, photos, and full property-detail lookups by URL.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape real-estate listings from Estately.com — active for-sale homes or recently-sold/closed comps, searched by city, ZIP code, or state. Also fetch a full property-detail record (description, features, walkability scores, agent, photos) from any Estately listing URL. No login, no API key, no cookies required.

What this actor does

  • Two modes: byLocation (search) and byPropertyUrl (detail lookup)
  • Search by city name, ZIP code, or both, within a US state
  • Listing status: active for-sale or recently-sold/closed
  • Filters: property type, price range (server-side), min bedrooms/bathrooms, square-footage range (client-side)
  • Full pagination — up to 200 listings per request page, automatically paginated to your maxItems
  • Rich detail records: description, flattened feature list (100+ possible attributes: building, interior, financial, schools, parking, utilities), agent contact, walk/bike/transit scores, photo gallery
  • Empty fields are omitted — every record only contains data Estately actually published for that listing

Output per listing (search mode)

  • listingId, mlsNumber, mlsAcronym
  • sourceUrl — canonical Estately listing URL
  • status, propertyType, isRental
  • price, soldDate, timeOnSite
  • beds, baths, sqft, lotSqft, photoCount
  • address, city, state, zipCode, latitude, longitude
  • officeName, officePhone
  • thumbnailUrl
  • recordType: "listing", scrapedAt

Additional fields (detail mode, byPropertyUrl)

  • description — full listing narrative (marketingRemarks)
  • yearBuilt, pricePerSqft, annualTax, hoaDues
  • agentName, agentPhone
  • features[] — flattened "Group > Label: Value" strings across every Estately attribute group (building, interior, room dimensions, financial & terms, location, property, taxes, heating/cooling, utilities, appliances, schools, community, parking)
  • walkScore, bikeScore, transitScore
  • photoUrls[] — full-size listing photos (capped at 30)
  • recordType: "propertyDetail"

Input

FieldTypeConsole prefillDescription
modeselectbyLocationbyLocation (search) or byPropertyUrl (detail lookup)
stateselecttxUS state (mode=byLocation); optional if zipCode is given. No forced default via API - if omitted, no state filter is applied
citystringAustinCity name (mode=byLocation). No forced default via API - city and/or zipCode is required
zipCodestring5-digit ZIP, used instead of city
listingStatusselectforSaleforSale or sold. No forced default via API - falls back to forSale in code if omitted
propertyTypeselectanyany / house / condo / townhouse / multiFamily / land
minPrice / maxPriceintPrice range in USD
minBeds / minBathsintMinimum bedrooms / bathrooms
minSqft / maxSqftintLiving-area square-footage range
propertyUrlsarrayEstately listing URLs/paths (mode=byPropertyUrl); deduplicated automatically
maxItemsint50Hard cap (1–1000)
proxyConfigurationobjectAUTOOptional; free Apify datacenter proxy fallback (not required in practice)

Note: only mode, maxItems, and proxyConfiguration have a real schema default (auto-filled when omitted from an API call). All other fields listed with a "Console prefill" value only pre-populate the Console Start button/daily test run - they are not injected when the field is omitted from a programmatic POST /runs call, so omitting state/city/listingStatus leaves them genuinely unset (subject to the code-level fallback noted above).

Example: for-sale condos in Miami under $500k

{
"mode": "byLocation",
"state": "fl",
"city": "Miami",
"propertyType": "condo",
"maxPrice": 500000,
"maxItems": 50
}

Example: recently-sold homes in a ZIP code

{
"mode": "byLocation",
"state": "tx",
"zipCode": "78704",
"listingStatus": "sold"
}

Example: full detail for specific listings

{
"mode": "byPropertyUrl",
"propertyUrls": [
"https://www.estately.com/listings/info/8211-greenslope-dr-austin-tx-78759--1"
]
}

Use cases

  • Home buyers/renters — track new listings and price drops in a target city or ZIP
  • Real-estate investors — pull comps (recently-sold) alongside active listings for a market
  • PropTech / data products — feed structured listing data into a dashboard or valuation model
  • Market research — compare price-per-sqft and inventory mix across cities
  • Lead generation — collect listing-office contact info for a target area

Data source & limitations

Estately's own front-end calls a public, unauthenticated JSON API (estately.com/api/v3/search) to render its search results, and embeds a structured JSON data island on every listing-detail page. This actor reads both directly instead of parsing rendered HTML.

  • Bedroom/bathroom/square-footage filters are applied to the fetched listings client-side, because the upstream search API does not support them as query parameters (only price range and property type are server-side filters). Results are still complete — the actor paginates through every upstream page up to your maxItems before applying these filters.
  • No login, cookies, or paid proxy are required. An optional free Apify AUTO datacenter proxy is exposed as a fallback but is not needed in practice.
  • Sold-listing records may omit price where the source MLS restricts display of the closing price (a common MLS rule) — this is a genuine data-availability gap, not a scraping bug.

FAQ

Do I need an Estately account or API key? No — this actor only reads publicly-served, unauthenticated endpoints.

What if my city isn't found? The actor returns a clear status message ("no results for location=...") when Estately doesn't recognize the location; try zipCode instead, or check spelling/state.

How many listings can I get per run? Estately's API returns up to 200 listings per page; the actor paginates automatically until it reaches maxItems (max 1000) or upstream results are exhausted.

Can I get more than the top-level listing fields? Yes — pass any listing's sourceUrl into a byPropertyUrl run to get the full detail record (description, all feature groups, walkability scores, photos, agent).