Property Searcher is a Python-based tool that automates the discovery, evaluation, and visualization of real estate listings. It scrapes data from Redfin, calculates drive times to a specified address, checks flood zone status via FEMA, filters properties based on customizable criteria, and provides a user-friendly GUI for review and browsing of saved listings with image previews.
📂 Property Searcher
├── 📄 1_get_properties.py # Scrapes Redfin listings and saves basic info + images
├── 📄 2_get_drive_time.py # Geocodes addresses and computes drive time using OSRM
├── 📄 3_get_flood_zone.py # Retrieves FEMA flood zone data
├── 📄 4_filter_properties.py # Filters properties by drive time and flood risk
├── 📄 5_ui.py # Tkinter-based GUI for browsing and viewing saved listings
├── 📄 requirements.txt # Python dependencies
├── 📄 run.ps1 # PowerShell script to run pipeline
└── 📄 run.sh # Shell script to run pipeline
- 🔍 Redfin Scraping: Collects address, price, beds, baths, square footage, and images.
- 🗺️ Drive Time Analysis: Calculates distance and time from each property to a target destination.
- 🌊 Flood Zone Checker: Uses FEMA's NFHL to determine flood risk.
- ✅ Property Filtering: Filters out flood-prone areas and long commutes.
- 🖼️ Interactive Viewer: GUI with property data grid, image gallery, and details panel.
-
Clone the repository
git clone https://github.com/oromis995/Property-Searcher.git cd Property-Searcher -
Install Python (if not already installed)
Download and install Python 3.7 or higher from the official site:
👉 https://www.python.org/downloads/Be sure to check the box "Add Python to PATH" during installation.
-
Install dependencies
pip install -r requirements.txt
-
Ensure the following are accessible:
- Internet access (for API requests to Redfin, OSRM, FEMA)
- Python 3.7+
- OSRM routing (via default public instance)
bash run.sh
# OR on Windows:
./run.ps1💡 Windows Users:
To open PowerShell:
- Press
Win + Xand choose Windows PowerShell, or- Press
Win + R, typepowershell, and hit Enter.
-
Scrape Redfin listings
python 1_get_properties.py
-
Add drive time data
python 2_get_drive_time.py
-
Check FEMA flood zones
python 3_get_flood_zone.py
-
Filter by drive time and flood zone
python 4_filter_properties.py
-
Launch the GUI viewer
python 5_ui.py
To change the address used for drive time calculations:
-
Open
2_get_drive_time.py -
Find this line near the top:
destination = "781 Lasalle St, New Orleans, LA 70112"
-
Replace it with your desired address:
destination = "123 Main St, YourCity, ST 12345"
To change the maximum allowed drive time (default is 25 minutes):
-
Open
4_filter_properties.py -
Locate the line:
if drive_time > 25:
-
Change
25to your preferred limit in minutes:if drive_time > 20:
- Interactive table of properties with sorting
- On-click image gallery for each property
- Details panel with key metadata
- ✅ Drive Time ≤ 25 minutes (configurable)
- 🚫 Flood Zone starts with "AE" → Excluded
- ✅ Non-AE flood zones or "Not in mapped flood zone" → Included
- Downloads up to 30 photos per property
- Saved in
Photos/ZIPCODE_STREETNAME/ - Images linked from Redfin previews and constructed from CDN patterns
- Redfin – Property listings
- ArcGIS Geocoding API
- OSRM Routing
- FEMA NFHL
Contributions are welcome! Please:
- Fork the repository
- Create a new feature branch
- Submit a pull request with detailed explanation
This tool is provided for educational and research purposes only. Scraping websites or using APIs should be done in compliance with their terms of service. Always respect data usage policies and rate limits.
MIT License. See LICENSE for details.