Century 21 Real Estate Scraper
Pricing
from $3.00 / 1,000 results
Century 21 Real Estate Scraper
Scrape homes for sale and rent from Century21.com. Search by city, county, neighborhood or ZIP with price/beds/baths/sqft/year-built filters, look up a specific property by street address, or fetch full listing details by ID - price, photos, agent, schools, taxes, HOA, and more.
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
15 hours ago
Last modified
Categories
Share
Scrape homes for sale and for rent from Century21.com — one of the largest real estate brokerage networks in the US. Search by city, county, neighborhood or ZIP code with rich filters (price, beds, baths, square footage, lot size, year built), look up a specific property by street address, or fetch full listing details (description, taxes, HOA, schools, appliances) by listing ID. No login, no API key, no proxy required.
What this actor does
- Three modes:
search(by location + filters),byAddress(direct property lookup),byListingId(fetch by internal listing ID) - For sale or for rent — toggle with
listingType - Filters: property type, listing status, price range, min beds/baths, sqft range, lot size range, year-built range, sort order
- Full detail enrichment — optionally fetch description, taxes, HOA dues, schools, appliances, utilities and every photo for each search result
- Empty fields are omitted — every record only contains fields the source actually returned
Output per listing
listingId,mlsNumber,listingUrllistingType(For Sale / For Rent),listingStatusprice,pricePerSquareFoot(detail mode)propertyType,propertyTypeLabelbedrooms,bathrooms,fullBathrooms,halfBathroomslivingAreaSqFt,lotSize,lotSizeUnits,yearBuilt(detail mode)address,city,state,stateCode,postalCode,neighborhood,latitude,longitudeelementarySchool,middleSchool,highSchool(detail mode)photoUrl,photoUrls[],photosCount,virtualTourUrllistingOfficeName,agentName,agentPhone,officePhone(phone in detail mode)description,taxAnnualAmount,taxYear,hoaDuesMonthly(detail mode)heating,cooling,roof,flooring,appliances,amenities,lotFeatures,sewer,water(detail mode)openHouses[],daysOnMarket,lastUpdated(detail mode)recordType: "listing",scrapedAt
Input
| Field | Type | Console prefill | Description |
|---|---|---|---|
mode | string | search | search / byAddress / byListingId |
location | string | Austin, TX | City, county, neighborhood or ZIP (mode=search). No forced default via API - required in search mode |
addresses | array | – | Full street addresses (mode=byAddress); deduplicated automatically |
listingIds | array | – | Listing IDs from a previous run (mode=byListingId); deduplicated automatically |
listingType | string | forSale | forSale / forRent. No forced default via API - falls back to forSale in code if omitted |
propertyTypes | array | all | Single family, Multi-family, Co-op, Mobile/Manufactured, Lots/Land, Condominium, Townhouse, Farm |
statuses | array | all | Active, Pending/Under contract, Coming soon |
minPrice / maxPrice | int | – | Price range in USD |
minBedrooms | select | – | Studio – 5+ |
minBathrooms | select | – | 1+ – 5+ |
minSqft / maxSqft | select | – | Living area range |
minAcreage / maxAcreage | select | – | Lot size range |
minYearBuilt / maxYearBuilt | select | – | Year-built range |
sortBy | string | newest | newest / priceHighToLow / priceLowToHigh. No forced default via API - falls back to newest in code if omitted |
includeFullDetails | bool | false | Fetch full property detail (description, taxes, schools, all photos) for every search result — one extra request per listing |
maxItems | int | 30 | Hard cap (1–1000) |
Note: only
mode,propertyTypes/statuses(default to "all"),maxItems, and non-listed numeric/proxy fields have a real schema default.location,listingType, andsortBylist a "Console prefill" only - it pre-populates the Console Start button/daily test run and is not injected when the field is omitted from a programmaticPOST /runscall.
Example: homes for sale in Austin, TX under $500k
{"mode": "search","location": "Austin, TX","listingType": "forSale","maxPrice": 500000,"minBedrooms": "3","maxItems": 50}
Example: rentals in Miami, FL with full details
{"mode": "search","location": "Miami, FL","listingType": "forRent","includeFullDetails": true,"maxItems": 20}
Example: lookup a specific address
{"mode": "byAddress","addresses": ["13521 Sea Biscuit Dr, Del Valle, TX"]}
Example: fetch by listing ID
{"mode": "byListingId","listingIds": ["P00800000HF6cD2iLtM7DTj91VD8KUzhnfCsy0Wx"]}
Use cases
- Real estate market research — track pricing trends by city/neighborhood
- Investment analysis — filter by price, lot size, and year built to find deals
- Lead generation — pull agent/office contact info from active listings
- Rental market comparison — compare rents across neighborhoods
- Portfolio monitoring — periodically re-fetch known listings by ID for price/status changes
FAQ
Does this need a proxy or login? No. Century21.com's own listings API is public and returns real MLS-syndicated data with a plain HTTP request — the same endpoint the century21.com website itself calls.
How do I find a listingId for byListingId mode? Every record from search or byAddress mode includes a listingId field you can reuse.
Why does search mode return fewer fields than byAddress/byListingId? The location-search endpoint returns a lighter summary object (used for map/list views). Set includeFullDetails: true to enrich every search result with the full property detail (description, taxes, schools, all photos) — this makes one extra request per listing, so it's slower.
What area does this cover? All US markets that Century 21 syndicates through its MLS/IDX feeds — coverage varies by MLS availability in each area.
Are "For Rent" listings the same fields as "For Sale"? Mostly yes; some fields specific to home sales (e.g. HOA dues, taxes) are less commonly populated on rental listings depending on what the source MLS provides.
How fresh is the data? Listings are pulled live from Century21.com's current MLS/IDX feed at the time the actor runs — no caching.