Real Estate
Real-estate listings and public property records: Zillow listing lookups, location searches (Zillow SRP with Redfin GIS fallback), and county assessor property records from free public ArcGIS REST FeatureServers.
What it scrapes
| Source | Data |
|---|---|
| Zillow (listing + SRP pages) | Address, price, Zestimate, beds/baths, sqft, listing history, search results by location/status |
| Redfin GIS API (fallback) | Location search fallback when Zillow SRP fails |
| County assessor ArcGIS REST | Owner, assessed value, tax, sale history by county + parcel id |
Endpoints
Router: routers/real_estate.py · tag: Real Estate
| Method | Path | Summary |
|---|---|---|
| GET | /v1/realestate/listing/{zillow_id} | Single listing by Zillow id (zpid) |
| GET | /v1/realestate/search | Listings by location + status (for_sale | for_rent | sold) |
| GET | /v1/realestate/property/{county}/{parcel_id} | County property record |
GET /v1/realestate/listing/{zillow_id}
curl -X GET "http://localhost:8005/v1/realestate/listing/123456789" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"data": {
"zpid": "123456789",
"address": "123 Main St, Austin, TX 78701",
"price": 650000,
"zestimate": 648500,
"beds": 3,
"baths": 2.5,
"sqft": 1850,
"status": "for_sale",
"history": [
{"date": "2024-05-01", "price": 620000, "event": "listed"}
],
"url": "https://www.zillow.com/homedetails/123456789_zpid/"
}
}
GET /v1/realestate/search
Query params: location (required, e.g. Austin, TX), status
(for_sale | for_rent | sold, default for_sale), limit (1–50,
default 20).
curl -X GET "http://localhost:8005/v1/realestate/search?location=Austin%2C%20TX&status=for_sale&limit=5" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"location": "Austin, TX",
"status": "for_sale",
"count": 5,
"data": [
{
"zpid": "123456789",
"address": "123 Main St, Austin, TX 78701",
"price": 650000,
"beds": 3,
"baths": 2.5,
"sqft": 1850,
"url": "https://www.zillow.com/homedetails/123456789_zpid/"
}
]
}
GET /v1/realestate/property/{county}/{parcel_id}
County slug is a lowercased, hyphenated county name; parcel id is the county assessor's parcel identifier.
curl -X GET "http://localhost:8005/v1/realestate/property/travis-county/0102030405" \
-H "Authorization: Bearer <key>"
Response (200):
{
"success": true,
"data": {
"county": "travis-county",
"parcel_id": "0102030405",
"owner": "Example Trust",
"assessed_value": 612000,
"tax": 8900.5,
"sale_history": [
{"date": "2019-03-15", "price": 480000, "type": "warranty deed"}
],
"address": "123 Main St, Austin, TX 78701",
"land_sqft": 7500,
"building_sqft": 1850
}
}
MCP tools
No dedicated MCP tool for real-estate endpoints yet — call the REST
endpoints directly, or pair pry_scrape + pry_extract for custom listing
pages.
Who uses this
- PropTech / investment analysis — pull Zillow + county records for comparable sales and assessed-value signals.
- Real-estate agents — build neighborhood digests (recent sales, Zestimates, tax records).
- Tax / title researchers — county assessor lookups for due diligence.
- Rental-market researchers —
status=for_rentsearches across markets.
Next steps
- Local Business — nearby places and reviews
- Extraction API — custom listing-page extraction
- Browser Automation — log into gated listing portals