Bien pricer une voiture d'occasion est un problème de données avant d'être un problème commercial. La même Golf GTI de trois ans peut être affichée à 24 900 € sur Mobile.de en Allemagne, 22 400 € sur AutoScout24 en France et 21 000 € chez un particulier sur Leboncoin, le même jour. Et une fois la voiture sur votre parc, sa remise en état dépend de pièces dont les prix varient tout autant : la même référence de kit de freinage peut coûter 20 % de moins sur autodoc.pl que sur auto-doc.fr.
Les groupes de distribution, les acheteurs de flottes et les plateformes de pricing automobile qui les servent ont tous besoin de la même chose : une vue continue et structurée des annonces et des prix des pièces, à travers les marketplaces et les pays. Personne n'obtient cela en rafraîchissant des pages de recherche à la main. Il faut un pipeline de collecte automatisé, construit sur des données marketplace fiables.
Cet article déroule ce pipeline, à partir d'un schéma de production chez l'un de nos clients (une plateforme de pricing automobile que nous ne nommerons pas), avec des appels API concrets sur AutoScout24, Mobile.de, Leboncoin et Autodoc.
Le cas d'usage : une plateforme de pricing véhicules pour groupes de distribution
L'un de nos clients construit un outil de pricing pour concessionnaires et gestionnaires de flottes. Leur produit répond aux trois questions que tout professionnel de l'occasion se pose chaque jour :
- Combien vaut cette voiture aujourd'hui ? Des snapshots de marché par modèle : prix des annonces en direct, tranches de kilométrage, durée de publication, par pays.
- Où sourcer au meilleur prix ? Des alertes d'arbitrage transfrontalier quand le même modèle se négocie nettement sous son prix domestique dans un pays voisin.
- Combien coûtera la remise en état ? Un index du coût des pièces par modèle, alimenté par les prix en direct des marketplaces de pièces, pour transformer une fiche d'inspection de reprise en budget de reconditionnement.
Répondre à ces questions exige de collecter des dizaines de milliers d'annonces par jour sur des sites fortement protégés, localisés et structurellement différents les uns des autres. Plutôt que de maintenir en interne une flotte de navigateurs headless, des proxies et des parseurs par site, leur plateforme fait passer la collecte par les API Piloterr. Trois propriétés du web automobile justifient ce choix :
- Chaque marketplace a une forme différente. Mobile.de sert des composants serveur Next.js derrière des règles anti-bot agressives ; Leboncoin mélange annonces de professionnels et de particuliers avec sa propre protection ; AutoScout24 s'étend sur une douzaine de domaines européens. Une seule couche API normalise tout cela en JSON.
- Les prix n'ont de sens que localisés. Une recherche allemande et une recherche française sur le même modèle sont deux marchés différents. Les API préservent la locale, la devise et le contexte de marché de chaque annonce.
- Le volume est quotidien, pas ponctuel. La durée de publication et la détection des baisses de prix exigent de re-scanner les mêmes recherches chaque jour et de comparer les résultats : une charge d'infrastructure, pas un script.
Anatomie d'un pipeline de suivi des prix automobile
Découvrir Normaliser Enrichir Produire
(API search) (unifier champs) (API ad) (index + alertes)
│ │ │ │
balayages par → prix, km, → specs complètes, → snapshot marché,
modèle et marché mise en circ., équipements, alertes arbitrage,
devise type vendeur index coût pièces
Étape 1 : découvrir les annonces avec les endpoints de recherche
Tout commence par des balayages par modèle et par marché. Pour chaque modèle du catalogue, la plateforme interroge l'endpoint de recherche de chaque marketplace couverte, dans chaque pays pertinent.
Sur AutoScout24, vous passez n'importe quelle URL de recherche de n'importe quel domaine européen : filtres compris. Un appel renvoie les cartes d'annonces avec caractéristiques, prix et informations vendeur :
curl -G "https://api.piloterr.com/v2/autoscout24/search" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=https://www.autoscout24.fr/lst/volkswagen/golf?atype=C"
Remplacez autoscout24.fr par autoscout24.de ou autoscout24.it et vous balayez un autre marché national avec la même intégration.
Sur Mobile.de, l'API Search accepte une URL de recherche complète ou un code marque/modèle, avec un paramètre locale couvrant 10 locales et un paramètre page pour la pagination :
curl -G "https://api.piloterr.com/v2/mobile/search" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=https://www.mobile.de/fr/voiture/recherche.html?ms=20100&s=Car&vc=Car"
Chaque carte de résultat est déjà riche : price, currency, mileage, first_registration, fuel_type, power, transmission, location, plus price_rating : l'évaluation de marché propre à Mobile.de (GOOD_PRICE, etc.). Injecter ce label dans votre propre modèle de pricing vous donne un signal de calibration gratuit venant de la plus grande marketplace allemande.
Sur Leboncoin, l'API Search prend n'importe quelle URL de recherche ou de catégorie et renvoie des annonces parsées. C'est là que vit le marché des particuliers, dont les prix sous-cotent systématiquement ceux des professionnels :
curl -G "https://api.piloterr.com/v2/leboncoin/search" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=https://www.leboncoin.fr/recherche?category=2&text=golf+gti"
Étape 2 : normaliser vers un modèle d'annonce unique
Trois marketplaces, cela signifie trois schémas, trois devises et trois façons d'écrire « première mise en circulation 03/2023 ». La couche de normalisation projette tout sur un enregistrement unique :
(marketplace, ad_id, observed_at) → { make, model, price, currency, mileage_km, first_registration, fuel, transmission, seller_type, location, url }
Deux règles issues de la production évitent le plus de douleur :
- Conserver les champs bruts de la marketplace à côté des champs normalisés. Quand une anomalie de prix apparaît, vous voulez voir exactement ce que le site affichait.
- Une annonce qui disparaît est un signal, pas une erreur. Les voitures se vendent. La date de disparition d'une annonce est ce qui transforme une série de prix en métrique de durée de publication : le meilleur indicateur de demande du marché de l'occasion.
Étape 3 : enrichir la shortlist avec les endpoints ad
Les cartes de recherche suffisent pour les courbes de marché. Pour les voitures qu'un acheteur considère réellement, la plateforme récupère l'annonce complète via les endpoints ad : AutoScout24 Ad (specs complètes, liste d'équipements, détails vendeur), Mobile Ad (prix, specs, images, équipements) et Leboncoin Ad (attributs, informations vendeur, images) :
curl -G "https://api.piloterr.com/v2/mobile/ad" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=https://www.mobile.de/fr/details.html?id=123456789"
La liste d'équipements compte plus qu'il n'y paraît : deux Golf au kilométrage identique peuvent différer de plusieurs milliers d'euros parce que l'une a un attelage et un régulateur adaptatif. Des données d'équipement structurées sont ce qui rend la comparaison entre annonces honnête.
Étape 4 : chiffrer la remise en état avec les endpoints pièces
Une reprise ne vaut que son prix de revente moins les coûts de remise en état. C'est là que les marketplaces de pièces entrent dans le pipeline.
L'API Autodoc Search couvre plus de 30 boutiques nationales (autodoc.de, auto-doc.fr, autodoc.pl, autodoc.es, …) via le paramètre domain. Chaque résultat inclut price, original_price, discount, la reference constructeur de la pièce, le vendeur et la disponibilité :
# Pièces de freinage sur la boutique française
curl -G "https://api.piloterr.com/v2/autodoc/search" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=search?keyword=frein" \
--data-urlencode "domain=auto-doc.fr"
# Même balayage sur la boutique allemande : mêmes références, prix différents
curl -G "https://api.piloterr.com/v2/autodoc/search" \
-H "x-api-key: YOUR-API-KEY" \
--data-urlencode "query=search?keyword=bremsen" \
--data-urlencode "domain=autodoc.de"
Le champ reference constructeur est la clé de jointure : il permet de comparer exactement la même pièce entre boutiques nationales, et face à d'autres sources : Oscaro et Norauto pour le marché français, et Ovoko pour les pièces OEM d'occasion, qui divisent souvent par deux une ligne de reconditionnement. Autodoc Product ajoute specs, EAN et compatibilité véhicule pour les pièces suivies au long cours.
Un exemple Python fonctionnel : une pièce, cinq pays
Le script ci-dessous recherche le même mot-clé de pièce sur plusieurs boutiques nationales Autodoc, joint les résultats sur la référence constructeur et affiche la boutique la moins chère par référence. Il est volontairement minimal : en production, vous persisteriez les snapshots, suivriez la disponibilité et convertiriez les devises.
import requests
from collections import defaultdict
PILOTERR_API_KEY = "YOUR-API-KEY"
BASE = "https://api.piloterr.com/v2"
HEADERS = {"x-api-key": PILOTERR_API_KEY}
SHOPS = {
"auto-doc.fr": "frein",
"autodoc.de": "bremsen",
"autodoc.es": "freno",
"autodoc.pl": "hamulec",
"auto-doc.it": "freno",
}
def sweep_autodoc(domain: str, keyword: str) -> list[dict]:
r = requests.get(f"{BASE}/autodoc/search", headers=HEADERS,
params={"query": f"search?keyword={keyword}", "domain": domain},
timeout=60)
r.raise_for_status()
return [
{
"shop": domain,
"name": item["name"],
"reference": item.get("reference"),
"price": item.get("price"),
"original_price": item.get("original_price"),
"discount": item.get("discount"),
"availability": item.get("availability"),
"url": item.get("product_url"),
}
for item in r.json().get("results", [])
]
def main():
by_reference = defaultdict(list)
for domain, keyword in SHOPS.items():
for offer in sweep_autodoc(domain, keyword):
if offer["reference"] and offer["price"] is not None:
by_reference[offer["reference"]].append(offer)
multi_shop = {ref: offers for ref, offers in by_reference.items()
if len(offers) >= 2}
print(f"{len(by_reference)} références collectées, "
f"{len(multi_shop)} disponibles dans 2 boutiques ou plus\n")
for ref, offers in sorted(multi_shop.items()):
offers.sort(key=lambda offer: offer["price"])
best, worst = offers[0], offers[-1]
spread = (worst["price"] - best["price"]) / worst["price"] * 100
print(f"{ref} {best['name'][:50]}")
print(f" best: {best['price']} @ {best['shop']} "
f"worst: {worst['price']} @ {worst['shop']} "
f"spread: {spread:.0f}%\n")
if __name__ == "__main__":
main()
La même logique de jointure sur référence alimente le volet voitures du pipeline : remplacez les boutiques par des marketplaces, les références par des buckets normalisés (marque, modèle, année, tranche de km), et le spread devient une alerte d'arbitrage transfrontalier.
Au-delà des annonces : enchères, engins et marché britannique
La même approche API-first dépasse le cœur des marketplaces européennes :
- Épaves et enchères : Copart expose les lots d'enchères, la source des acheteurs de véhicules accidentés et des assureurs pour pricer les sinistres totaux.
- Camions et engins : Mascus couvre le matériel lourd d'occasion, les tracteurs et les véhicules utilitaires.
- Marchés UK et US : Autotrader intègre les annonces à conduite à droite et nord-américaines dans le même pipeline.
- Références location : AutoEurope ajoute des points de prix de location, utiles aux opérateurs de mobilité qui modélisent l'utilisation de flotte.
Scraper les marketplaces automobiles, est-ce légal ?
Les annonces de véhicules sont des offres commerciales affichées publiquement, et le suivi de prix sur données publiques est l'un des cas d'usage de scraping les plus établis : la même pratique sous-tend tous les comparateurs de prix. Les principes habituels s'appliquent : ne collecter que des données publiques, respecter les limites de débit et faire attention aux données personnelles dans les annonces de particuliers (stocker ce dont l'analyse a besoin, pas le numéro de téléphone du vendeur). Pour le cadre général, consultez notre guide sur la légalité du web scraping.
En résumé
Le pricing automobile est un pipeline : découvrir avec les API de recherche des marketplaces, normaliser vers un modèle d'annonce unique, enrichir la shortlist avec les endpoints ad, et chiffrer la remise en état avec les API pièces jointes sur les références constructeur. Les plateformes qui gagnent sont celles dont la vue marché est plus fraîche que l'intuition du concessionnaire. Pour la mécanique des écarts de prix entre pays (devises, promos asynchrones, assortiment), notre guide du price monitoring multirégional s'applique aux pièces auto exactement comme aux biens de consommation.
Piloterr fournit cette couche de collecte sous forme d'API : AutoScout24, Mobile.de, Leboncoin, Autodoc, Ovoko, Copart et le reste de la library de 500 endpoints, avec bypass anti-bot et rendu navigateur gérés pour vous. Si vous construisez des outils de pricing automobile et voulez évaluer la qualité des données sur vos propres modèles, créez un compte gratuit (+500 crédits, sans carte bancaire) ou contactez-nous pour un tarif volume et les endpoints que nous pouvons ajouter pour votre cas d'usage.