A production-ready real estate scraper for Georgian property websites (SS.ge and MyHome.ge) with Google Sheets integration and intelligent monitoring.
- Multi-site scraping: SS.ge and MyHome.ge support
- Smart duplicate detection: Hash-based property comparison
- Google Sheets integration: Automatic export of new properties
- Precise data extraction: Square meters, rooms, prices with currency detection
- Intelligent scheduling: Configurable scraping intervals
- Production ready: Docker support, logging, error handling
- Respectful scraping: Rate limiting and proper headers
git clone https://github.com/nmbrthirteen/homeus.git
cd homeus
# Run setup script
python setup.py
git clone https://github.com/nmbrthirteen/homeus.git
cd homeus
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy example config
cp config/config.example.yaml config/config.yaml
# Edit configuration
nano config/config.yaml
# Single scraping cycle
python src/main.py --once
# Continuous monitoring (every 5 minutes)
python src/main.py
The config/config.yaml
file controls all aspects of the scraper:
scraping:
interval_minutes: 5 # How often to scrape
max_pages: 10 # Maximum pages per search
delay_between_requests: 2 # Seconds between requests
websites:
ss:
enabled: true
search_urls:
- url: "https://home.ss.ge/ka/udzravi-qoneba/iyideba-bina?price_to=90000"
name: "Apartments Under 90k USD"
google_sheets:
enabled: true
sheet_id: "your-google-sheet-id"
service_account_file: "config/google_credentials.json"
- Create a Google Sheet and note the Sheet ID from the URL
- Enable Google Sheets API in Google Cloud Console
- Create Service Account and download credentials JSON
- Share your sheet with the service account email
- Place credentials in
config/google_credentials.json
Detailed setup guide: GOOGLE_SHEETS_SETUP.md
# Build and run
docker-compose up -d
# View logs
docker-compose logs -f homeus
# Stop
docker-compose down
Properties are extracted with the following fields:
Field | Description | Example |
---|---|---|
property_id |
Unique identifier | ss_12345678 |
title |
Property title | แแงแแแแแ 3 แแแแฎแแแแ แแแแ |
price |
Price in specified currency | 75000 |
currency |
Currency code | USD |
location |
Property location | แแแแ แแแฆแแแ |
size |
Size in square meters | 61.5 |
rooms |
Number of rooms | 3 |
property_type |
Type of property | apartment |
- โ Property listings
- โ Detailed property pages
- โ Price extraction (USD/GEL)
- โ Size extraction (mยฒ)
- โ Room count
- โ Images
- โ Property listings
- โ Basic property data
โ ๏ธ Limited detail extraction (encoding issues)
The scraper provides comprehensive logging:
# View logs
tail -f data/logs/homeus.log
# Database statistics
sqlite3 data/homeus.db "SELECT COUNT(*) as total_properties FROM properties;"
homeus/
โโโ src/
โ โโโ models/ # Data models
โ โโโ scraper/ # Website scrapers
โ โโโ storage/ # Database & Sheets
โ โโโ utils/ # Utilities
โ โโโ main.py # Entry point
โโโ config/
โ โโโ config.example.yaml
โ โโโ google_credentials.json
โโโ data/
โ โโโ homeus.db # SQLite database
โ โโโ logs/ # Log files
โโโ docker-compose.yml
- Create scraper class inheriting from
BaseScraper
- Implement
scrape_listings()
andscrape_property_details()
- Add website configuration to
config.yaml
- Register scraper in
main.py
# Test individual scrapers
python -c "from src.scraper.ss_scraper import SSScraper; print('SS scraper imported successfully')"
# Test database
python -c "from src.storage.database import Database; db = Database('test.db'); print('Database working')"
This scraper is designed to be respectful:
- 2-second delays between requests
- Proper User-Agent headers
- Error handling to avoid overwhelming servers
- Configurable limits on pages and requests
Please use responsibly and respect the websites' terms of service.
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Additional Georgian real estate websites
- Price change notifications
- Web dashboard
- Property image downloading
- Advanced filtering options
- Telegram bot integration
- Email notifications
Made with โค๏ธ for the Georgian real estate market