La Sfida
Il mercato delle auto usate in Italia è frammentato su diverse piattaforme. Gli acquirenti perdono opportunità perché non riescono a monitorare costantemente i prezzi e identificare le occasioni migliori.
La Soluzione
Piattaforma SaaS con scraping automatizzato dei principali portali auto, tracking storico dei prezzi, analytics regionali e sistema di alert per variazioni significative.
Il Risultato
Sistema operativo 24/7 che monitora migliaia di annunci, identifica automaticamente le occasioni sotto-mercato e fornisce analytics dettagliate per regione e macro-area.
Il Contesto
Il mercato delle auto usate in Italia è distribuito principalmente su due piattaforme: AutoScout24.it e Subito.it. Per chi cerca un'auto, monitorare costantemente entrambi i portali è dispendioso in termini di tempo, e spesso le migliori occasioni vengono perse perché i prezzi cambiano rapidamente.
Le Sfide Principali
- Frammentazione del mercato: annunci distribuiti su multiple piattaforme con formati diversi
- Variabilità dei prezzi: i venditori modificano frequentemente i prezzi senza notifiche
- Analisi geografica: difficoltà nel confrontare prezzi tra regioni diverse
- Tempestività: le occasioni migliori vengono vendute rapidamente
- Anti-bot protection: i siti implementano sistemi di protezione contro lo scraping automatizzato
L'Architettura
Piattaforma End-to-End
Il sistema è stato progettato come piattaforma SaaS multi-utente con architettura modulare:

Componenti Principali
| Layer | Componente | Funzione |
|---|---|---|
| Scraping | Playwright + Stealth | Raccolta dati con evasione anti-bot |
| Storage | SQLAlchemy + SQLite | Persistenza dati e storico prezzi |
| API | FastAPI | REST API e web interface |
| Scheduler | APScheduler | Esecuzione automatica ogni 6 ore |
| Notifications | Telegram API | Alert errori e blocchi |
Multi-Source Scraping
Il sistema supporta due sorgenti dati con spider dedicati:
| Sorgente | Copertura | Caratteristiche |
|---|---|---|
| AutoScout24.it | Nazionale | Brand/model slug, filtri avanzati |
| Subito.it | Regionale | URL regionali, categorie km |
Stack Tecnologico
Application Layer

| Componente | Tecnologia | Configurazione |
|---|---|---|
| Runtime | Python 3.10+ | Ambiente virtuale |
| Framework | FastAPI | REST API + Jinja2 templates |
| ORM | SQLAlchemy 2.0 | Modelli relazionali |
| Browser | Playwright | Chromium headless + stealth |
Anti-Detection Layer
Per evitare blocchi e rate limiting, sono state implementate tecniche avanzate:
| Tecnica | Implementazione |
|---|---|
| Stealth Mode | playwright-stealth per fingerprint spoofing |
| User-Agent Rotation | fake-useragent con rotazione realistica |
| Request Delay | 2-4 secondi random tra richieste |
| Proxy Rotation | IPRoyal residential con cambio IP automatico |
| Retry Logic | Fino a 3 tentativi con nuovo IP su blocco |
Data Model
Il database è strutturato per supportare multi-utenza e tracking storico:
| Tabella | Funzione |
|---|---|
| users | Account utenti con ruoli (user/admin) |
| searches | Ricerche salvate con filtri |
| user_searches | Relazione N:N utenti-ricerche |
| cars | Annunci trovati con metadati |
| price_history | Storico variazioni prezzi |
| brands | 55+ brand organizzati per paese |
| blog_posts | Articoli blog in Markdown |
Funzionalità
Dashboard Utente
La dashboard principale mostra le ricerche attive con statistiche aggregate:
- Numero annunci trovati per ricerca
- Prezzo medio, minimo e massimo
- Variazioni recenti rispetto al giorno precedente
- Quick link a deals e alerts
Price Tracking
Ogni annuncio mantiene uno storico completo delle variazioni di prezzo:
- Grafico temporale delle variazioni
- Confronto con media di mercato
- Posizionamento percentile
- Alert automatici su variazioni > 5%
Analytics Geografiche
Analisi dettagliate per area geografica:
| Livello | Metriche |
|---|---|
| Regione | Min/Max/Media prezzi, conteggio annunci |
| Macro-Area | Nord/Centro/Sud/Isole aggregati |
| Top 10 | Regioni con più annunci |
Deals Detection
Sistema automatico di identificazione occasioni:
- Confronto prezzo con media di mercato
- Filtro per percentuale di sconto
- Ranking per convenienza
- Link diretto all'annuncio originale
Sistema di Alert
Notifiche per eventi significativi:
- Variazioni prezzo superiori alla soglia
- Nuovi annunci matching criteri
- Errori di scraping (via Telegram)
- Blocchi proxy con cooldown 30 minuti
Sicurezza e Compliance
Autenticazione
| Componente | Implementazione |
|---|---|
| Password | bcrypt hashing |
| Session | JWT tokens |
| Ruoli | User/Admin con permessi differenziati |
GDPR Compliance
- Privacy policy e Terms of Service dedicati
- Gestione consensi utente
- Possibilità di cancellazione account
- Nessun tracking di terze parti
Deployment
Infrastruttura
| Componente | Configurazione |
|---|---|
| Server | VPS dedicato |
| Domain | pricepatrol.it |
| Service | systemd unit |
| Deploy | Git pull + restart |
CLI Operations
Il sistema supporta operazioni da linea di comando:
python main.py init # Inizializza database
python main.py scrape # Scraping manuale
python main.py scheduler # Avvia scheduler automatico
python main.py web # Avvia web server
Risultati
Copertura
| Metrica | Valore |
|---|---|
| Piattaforme monitorate | 2 (AutoScout24, Subito) |
| Regioni coperte | 20 (tutte le regioni italiane) |
| Brand supportati | 55+ |
| Intervallo aggiornamento | 6 ore |
Performance
| Metrica | Valore |
|---|---|
| Uptime | 99%+ |
| Success rate scraping | > 95% |
| Tempo medio per ricerca | ~30 secondi |
| Retry su blocco | Max 3 con nuovo IP |
Estensibilità
ML-Ready Data
Il sistema raccoglie campi aggiuntivi per future applicazioni ML:
- Tipo venditore (privato/dealer)
- Potenza (CV)
- Tipo carrozzeria
- Numero e URL immagini
Roadmap
- Espansione europea (altri paesi AutoScout24)
- Notifiche email per alert
- Export CSV/Excel
- Dark mode UI
- App mobile (PWA)
Lezioni Apprese
- Stealth scraping: playwright-stealth essenziale per evitare blocchi
- Proxy rotation: IP residenziali più affidabili dei datacenter
- Rate limiting intelligente: delay randomici più efficaci di fissi
- N:N relationships: permettono condivisione efficiente delle ricerche
- Config-driven: ricerche configurabili senza modifiche al codice
- Notification cooldown: evita spam su errori ripetuti
Stack Tecnologico
Risultati in Numeri
"La piattaforma permette di non perdere mai un'occasione sul mercato delle auto usate, con alert automatici e analytics che semplificano la ricerca."