Créer un site immobilier avec PrestaShop : retour d'expérience complet
Comment détourner PrestaShop pour créer un site immobilier : adaptation du catalogue, migration Scrapy, SEO et hébergement. Guide technique complet.
En bref : PrestaShop peut être détourné efficacement pour créer un site immobilier en mappant les produits sur des biens, les catégories sur des types de biens et les caractéristiques sur des critères de recherche. Le framework Scrapy permet de migrer en masse les données d'un ancien site.
Utiliser PrestaShop pour un site immobilier : pourquoi ça fonctionne
PrestaShop est conçu pour le e-commerce, mais sa structure de catalogue — produits, catégories, déclinaisons, images, filtres — s'adapte remarquablement bien à d'autres secteurs verticaux comme l'immobilier. Un bien immobilier est, structurellement, un "produit" avec des caractéristiques (surface, nombre de pièces, localisation), des photos et un prix.
Ce type de détournement de CMS e-commerce présente plusieurs avantages concrets :
- **Catalogue structuré nativement** : catégories (vente, location, location saisonnière), filtres par caractéristiques, tri par prix
- **Gestion d'images intégrée** : galerie multi-photos, redimensionnement automatique, zoom
- **SEO natif** : URLs réécrites, meta descriptions par fiche, sitemap XML
- **Back-office complet** : gestion des biens sans développement custom
- **Écosystème de modules** : formulaires de contact, cartes, newsletters
Mapper le vocabulaire e-commerce vers l'immobilier
Migration de données avec Scrapy : récupérer un catalogue existant
Lorsqu'on reprend un site immobilier existant, la saisie manuelle de centaines d'annonces est impensable. Le framework Python Scrapy est l'outil idéal pour crawler l'ancien site et extraire les données de manière structurée.
Installation et configuration de Scrapy
pip install scrapy
scrapy startproject immo_scraper
cd immo_scraper
scrapy genspider annonces ancien-site.fr
Spider type pour un site immobilier
import scrapy
import csv
class AnnoncesSpider(scrapy.Spider):
name = 'annonces'
start_urls = ['https://ancien-site.fr/annonces']
custom_settings = {
'DOWNLOAD_DELAY': 1, # Respecter le serveur source
'FEEDS': {
'annonces.csv': {
'format': 'csv',
'encoding': 'utf-8',
}
}
}
def parse(self, response):
for annonce in response.css('.annonce-item'):
detail_url = annonce.css('a::attr(href)').get()
yield response.follow(detail_url, self.parse_detail)
# Pagination
next_page = response.css('.pagination .next a::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)
def parse_detail(self, response):
yield {
'name': response.css('h1::text').get('').strip(),
'description': response.css('.description::text').getall(),
'price': response.css('.price::text').re_first(r'[\d\s]+'),
'surface': response.css('.surface::text').re_first(r'\d+'),
'rooms': response.css('.pieces::text').re_first(r'\d+'),
'images': response.css('.gallery img::attr(src)').getall(),
'location': response.css('.ville::text').get('').strip(),
}
Importer les données dans PrestaShop
Une fois le CSV généré par Scrapy, deux approches pour l'import :
1. Import CSV natif PrestaShop
PrestaShop accepte l'import CSV via le back-office (*Paramètres avancés > Import*). Il faut adapter les colonnes du CSV au format attendu :
ID;Active;Name;Categories;Price;Description;Image URLs;Feature (name:value:position)
;1;Appartement T3 centre-ville;Vente > Appartements;185000;Description...;https://...jpg;Surface (m²):75:1
2. Script d'import via Webservice (recommandé en 8.x)
import csv
import requests
from xml.etree import ElementTree as ET
API_KEY = 'VOTRE_CLE_WEBSERVICE'
BASE_URL = 'https://votre-site.fr/api'
def create_product(bien):
"""Crée un produit PrestaShop via le Webservice REST."""
xml = f"""<?xml version="1.0" encoding="UTF-8"?>
<prestashop>
<product>
<active>1</active>
<price>{bien['price']}</price>
<name>
<language id="1">{bien['name']}</language>
</name>
<description>
<language id="1">{bien['description']}</language>
</description>
<id_category_default>{bien['category_id']}</id_category_default>
</product>
</prestashop>"""
response = requests.post(
f'{BASE_URL}/products',
auth=(API_KEY, ''),
data=xml,
headers={'Content-Type': 'application/xml'}
)
return response.status_code == 201
Gestion des images scrapées
Les images récupérées par crawl sont souvent de qualité insuffisante : résolution trop basse, compression excessive, dimensions inadaptées. Quelques bonnes pratiques :
- **Ne jamais agrandir une image en CSS** : si l'image source fait 400×300px, ne l'affichez pas en 800×600. Le résultat sera flou et l'expérience utilisateur dégradée
- **Configurer les tailles d'images PrestaShop** correctement dans *Design > Paramètres des images* pour que le redimensionnement serveur produise des miniatures nettes
- **Planifier un remplacement progressif** des photos par des clichés professionnels
// PrestaShop 8.x : configuration des tailles d'images recommandées pour l'immobilier
// Back-office > Design > Paramètres des images
// Ajouter un type personnalisé :
// - Nom : immobilier_large | 1200 x 800
// - Nom : immobilier_thumb | 400 x 267
// - Nom : immobilier_list | 600 x 400
Adapter le thème PrestaShop au secteur immobilier
Personnaliser les templates produit
La fiche produit standard d'un thème e-commerce affiche un bouton "Ajouter au panier" — inadapté pour l'immobilier. Il faut transformer cette action en "Demander une visite" ou "Contacter l'agence".
En PrestaShop 8.x avec un thème enfant :
{* themes/votre-theme-enfant/templates/catalog/product.tpl *}
{block name='product_add_to_cart'}
<div class="immobilier-actions">
<a href="{$link->getPageLink('contact')}?id_product={$product.id}"
class="btn btn-primary btn-lg">
<i class="material-icons">phone</i>
Demander une visite
</a>
<a href="tel:+33XXXXXXXXX" class="btn btn-outline-primary btn-lg">
Appeler directement
</a>
</div>
{/block}
Exploiter les caractéristiques comme filtres
Créez des caractéristiques PrestaShop pour chaque critère immobilier pertinent :
- **Surface (m²)** : valeurs par tranches (< 30, 30-50, 50-80, 80-120, > 120)
- **Nombre de pièces** : 1 à 6+
- **Type de bien** : Appartement, Maison, Terrain, Local commercial
- **DPE** : A à G
- **Ville / Quartier** : selon votre zone géographique
Le module Navigation à facettes (ps_facetedsearch) transforme automatiquement ces caractéristiques en filtres cliquables dans la colonne latérale.
SEO immobilier sur PrestaShop : les fondamentaux
Le référencement d'un site immobilier sous PrestaShop nécessite une attention particulière à la structure des URLs et au contenu.
Structure d'URLs optimisée
/vente/appartements/appartement-t3-centre-ville-metz
/location/maisons/maison-4-chambres-jardin-thionville
/location-vacances/gites/gite-charme-gorze-moselle
Dans PrestaShop 8.x, activez les URLs simplifiées (*Configurer > Paramètres de la boutique > Trafic & SEO*) et structurez vos catégories pour refléter cette hiérarchie.
Analyser les logs serveur
Avant toute optimisation SEO, comprendre comment Googlebot explore votre site est essentiel. L'analyse des logs d'accès permet de détecter :
- Les pages crawlées trop fréquemment (budget de crawl gaspillé)
- Les pages ignorées (contenu important non indexé)
- Les erreurs 404 ou redirections en chaîne
# Extraire les visites de Googlebot depuis les logs Apache/Nginx
grep "Googlebot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -50
Données structurées pour l'immobilier
Ajoutez du JSON-LD RealEstateListing (schema.org) pour enrichir vos résultats dans Google :
{
"@context": "https://schema.org",
"@type": "RealEstateListing",
"name": "Appartement T3 centre-ville Metz",
"url": "https://votre-site.fr/vente/appartement-t3-metz",
"datePosted": "2026-03-15",
"offers": {
"@type": "Offer",
"price": "185000",
"priceCurrency": "EUR"
}
}
Hébergement : auto-hébergement vs cloud
Héberger un PrestaShop chez soi sur un serveur personnel derrière une connexion fibre est techniquement possible, mais comporte des limites :
Recommandation actuelle : pour un site immobilier professionnel, un VPS OVH ou Scaleway à partir de 10€/mois offre de bien meilleures garanties de disponibilité et de performances. L'auto-hébergement reste intéressant pour le développement et les tests.
Évolutions recommandées en PrestaShop 8.x
Si vous maintenez un site immobilier initialement développé sous PrestaShop 1.6, voici les gains d'une migration vers la version 8.x :
- **Symfony sous le capot** : architecture plus robuste, meilleure maintenabilité
- **API native améliorée** : le nouveau Webservice facilite les intégrations avec des portails immobiliers (SeLoger, LeBonCoin)
- **Performances** : PHP 8.1+, cache Symfony, lazy loading natif des images
- **Accessibilité** : le thème Hummingbird (8.x) respecte mieux les normes WCAG
- **Module Navigation à facettes** repensé : filtres plus rapides et plus flexibles
Questions fréquentes
Tout ce que vous devez savoir sur ce sujet.
Un projet PrestaShop ?
Discutons-en directement.
193 projets livrés
Lire sur le blog

Alexandre Carette
Expert PrestaShop & Architecture E-commerce
Développeur PrestaShop depuis 2014, 193 projets livrés. Je conçois des architectures headless Nuxt + PrestaShop et des outils d'automatisation IA pour les e-commerçants.