Estately Real Estate Scraper
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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) andbyPropertyUrl(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,mlsAcronymsourceUrl— canonical Estately listing URLstatus,propertyType,isRentalprice,soldDate,timeOnSitebeds,baths,sqft,lotSqft,photoCountaddress,city,state,zipCode,latitude,longitudeofficeName,officePhonethumbnailUrlrecordType: "listing",scrapedAt
Additional fields (detail mode, byPropertyUrl)
description— full listing narrative (marketingRemarks)yearBuilt,pricePerSqft,annualTax,hoaDuesagentName,agentPhonefeatures[]— 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,transitScorephotoUrls[]— full-size listing photos (capped at 30)recordType: "propertyDetail"
Input
| Field | Type | Console prefill | Description |
|---|---|---|---|
mode | select | byLocation | byLocation (search) or byPropertyUrl (detail lookup) |
state | select | tx | US state (mode=byLocation); optional if zipCode is given. No forced default via API - if omitted, no state filter is applied |
city | string | Austin | City name (mode=byLocation). No forced default via API - city and/or zipCode is required |
zipCode | string | – | 5-digit ZIP, used instead of city |
listingStatus | select | forSale | forSale or sold. No forced default via API - falls back to forSale in code if omitted |
propertyType | select | any | any / house / condo / townhouse / multiFamily / land |
minPrice / maxPrice | int | – | Price range in USD |
minBeds / minBaths | int | – | Minimum bedrooms / bathrooms |
minSqft / maxSqft | int | – | Living-area square-footage range |
propertyUrls | array | – | Estately listing URLs/paths (mode=byPropertyUrl); deduplicated automatically |
maxItems | int | 50 | Hard cap (1–1000) |
proxyConfiguration | object | AUTO | Optional; free Apify datacenter proxy fallback (not required in practice) |
Note: only
mode,maxItems, andproxyConfigurationhave 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 programmaticPOST /runscall, so omittingstate/city/listingStatusleaves 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
maxItemsbefore 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
pricewhere 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).