API Moteur.ma : prix du neuf, promotions et annonces d'occasion au Maroc en JSON
Moteur.ma réunit deux choses sous la même adresse : les annonces de voitures d'occasion (124 690 en ligne le 25 octobre 2026, à Casablanca, Rabat, Marrakech et dans le reste du pays) et le catalogue des prix du neuf au Maroc (74 marques, 410 modèles et 1 256 versions ce jour-là). Le site ne documente aucun accès pour les développeurs. Cette API lit les deux parties telles qu'elles s'affichent publiquement et les renvoie en JSON, montants en dirhams ; pour le neuf, la fiche d'une version donne le prix showroom, la remise en cours, les frais d'immatriculation et le prix clé en main. On reste du côté de l'acheteur : cette API ne fait que lire, et elle n'a rien à voir avec les outils qu'un concessionnaire utilise pour diffuser son stock sur Moteur.ma.
Endpoints
| endpoint | Ce qui est renvoyé | Obligatoires |
|---|---|---|
| search | Les annonces d'occasion, filtrées par marque, modèle, ville (Casablanca, Rabat, Marrakech, Tanger, Fès, Agadir… 111 valeurs, « Autre » compris), carburant, boîte, carrosserie, couleur, prix en MAD, année et kilométrage. 30 annonces par page, les plus récentes en tête comme sur le site, avec le total qu'il annonce. Aucun paramètre obligatoire. | tous optionnels |
| listing | Une annonce entière à partir de son `id` ou de son URL : prix, marque, modèle, année, kilométrage, puissance fiscale, texte du vendeur, options, photos, nombre de vues, et le bloc vendeur avec le téléphone et le lien WhatsApp tels que la page les publie. | tous optionnels |
| makes | Les marques de l'occasion et, pour chacune, les slugs de modèles que `search` accepte, repris des filtres du site. | tous optionnels |
| new_catalog | L'arbre du neuf vendu au Maroc : marque, modèles en cours, et l'identifiant de chaque version à passer à `new_version`. | tous optionnels |
| new_models | La gamme neuve d'une marque, avec le prix « à partir de » en MAD et le nombre de versions de chaque modèle. Dacia, le 25 octobre 2026 : 6 modèles, de la Sandero à 132 000 DH au Bigster à 264 500 DH. | brand |
| new_versions | Toutes les versions d'un modèle neuf : carburant, boîte, puissance fiscale (CV) et réelle (ch), prix actuel, prix catalogue et montant de la remise quand une promotion est en cours (`is_promo`). | brand, model |
| new_version | Une version en détail, par `id` ou URL : prix showroom, remise, prix promo, frais d'immatriculation et autres frais, prix clé en main, date de fin de promotion, puis la fiche technique (couple, 0 à 100 km/h, consommation, dimensions, coffre, batterie et autonomie) et chaque ligne d'équipement, cochée ou non (true/false). | tous optionnels |
Chaque appel est facturé en crédits. Les appels en échec ou bloqués sont gratuits.
Exemple qui fonctionne
La C3 Aircross 1.2 PureTech 110 MAX BVM était en promotion jusqu'au 31 octobre 2026 : 224 900 DH en showroom, 32 000 DH de remise, soit 192 900 DH. Le prix clé en main y ajoute 4 555 DH d'immatriculation et 2 700 DH d'autres frais, ce qui donne 200 155 DH. `new_versions` s'arrête aux trois premiers montants ; les frais n'existent que dans `new_version`, et ils varient d'un modèle à l'autre : le même jour, une Sandero Stepway à 158 000 DH portait 7 454 DH d'immatriculation, pour 168 454 DH clé en main.
curl -X POST https://api.reefapi.com/moteur-ma/v1/new_version \
-H "x-api-key: VOTRE_CLE" \
-H "content-type: application/json" \
-d '{"id": "4616"}'{
"ok": true,
"data": {
"id": "4616",
"name": "Citroën C3 Aircross 1.2 PureTech 110 MAX BVM",
"brand": "Citroën",
"model": "C3 Aircross",
"year": 2025,
"body_type": "Crossover",
"fuel": "Essence",
"gearbox": "Manuelle",
"power_hp": 110,
"fiscal_power_cv": 7,
"currency": "MAD",
"showroom_price_mad": 224900,
"discount_mad": 32000,
"promo_price_mad": 192900,
"registration_fee_mad": 4555,
"other_fees_mad": 2700,
"on_the_road_price_mad": 200155,
"price_ld_json": 192900,
"price_mismatch": false,
"is_promo": true,
"promo_valid_until": "2026-10-31",
"specs": {
"Motorisation & Performance": {
"Couple maximal (Nm)": "205 nm",
"Accélération 0–100 km/h": "10.1 s",
"Consommation mixte": "5.8 L/100km",
"Capacité du réservoir": "44.0 L",
...
},
"Dimensions & Capacité": { "Longueur": "4390 mm", "Volume de coffre": "460 L", "Poids à vide": "1280 kg", ... },
...
},
...
},
"meta": { "record_count": 1, "cache_hit": false, "mode": "live" }
}Votre propre scraper Moteur.ma : quatre pièges relevés sur le site
Un filtre inconnu ne déclenche aucune erreur. Lors de nos essais sur le site, `carburant=Foo` renvoyait 123 059 annonces avec un statut HTTP 200, soit le catalogue entier, et `couleur=Zzz` en renvoyait 123 062. Une faute de frappe sur « Électrique » donne donc l'impression de filtrer alors que tout le parc est compté. Ici, carburant, boîte, carrosserie, couleur et ville sont vérifiés contre les listes du formulaire du site, et une valeur inconnue revient en INVALID_PARAM.
Chaque page d'annonce contient un bloc « Avis & Évaluations » masqué : 4/5, « Basé sur 0 avis », avec exactement les mêmes chiffres sur l'annonce d'une Dacia vendue par un particulier et sur celle d'une Fiat de concessionnaire. Un parseur qui lit tout le HTML prête cette note à chaque vendeur. Nous ne la publions pas, puisque Moteur.ma n'affiche en réalité aucune note de vendeur.
La fin des résultats ne se signale pas comme une erreur. Après la dernière page, le site répond 200 avec zéro annonce et le même total (page 5 000 des Logan : total 3 472, aucune ligne). Une annonce expirée, une version retirée ou une marque inconnue, elles, sont redirigées par un 302, vers la liste des annonces ou vers une page `?status=version_introuvable` ou `marque_introuvable`. Notre API ne suit pas ces redirections et répond NOT_FOUND : vous ne récupérez jamais, sous l'`id` d'une annonce disparue, le contenu de la liste générale.
Un dernier conseil si vous écrivez votre propre extraction : ne tirez rien du texte libre. Dans notre recherche de Logan diesel à Casablanca, les descriptions mêlaient français, darija en lettres latines (« l3mara », « 3andi ») et arabe, et une annonce classée Logan décrivait une Sandero Stepway. Seuls le prix, l'année, le kilométrage, le carburant et la boîte se comparent d'une annonce à l'autre.
Autres documentations en français
- leboncoin API — documentation
- Carrefour API — documentation
- Rakuten API — documentation
- Cdiscount API — documentation
- Fnac API — documentation
- AliExpress API — documentation
- Mubawab API — documentation
- API Vinted — annonces de vinted.fr
- idealo.fr API — documentation
- Cardmarket API — documentation
- AutoScout24 API — documentation (autoscout24.fr)
Limites et remarques honnêtes
- Accès non officiel : Moteur.ma n'est pas à l'origine de cette API, et aucun partenariat ne nous associe au site.
- Comme sur le site, `price_max` garde les annonces « Appeler pour le prix ». Pour les automatiques à Marrakech jusqu'à 200 000 DH, 27 des 30 premières lignes avaient `price_mad` à null (25 octobre 2026). Si vous voulez des prix, écartez ces lignes de votre côté ; `price_label` conserve la mention.
- Les prix et les titres sont saisis par les vendeurs et ne sont pas corrigés : parmi les Logan diesel 2019 à 2025 de Casablanca, affichées entre 90 000 et 165 000 DH, une Logan 2022 l'était à 14 000 DH.
- Les cases « Caractéristiques » d'une annonce ne valent pas historique : sur les 8 annonces ouvertes le 25 octobre 2026, `accident_history` valait true et `first_owner` false à chaque fois, y compris pour deux annonces « jamais accidenté » et deux annonces « 1ère main ». Ces champs reprennent l'icône affichée dans le tableau de l'annonce, sans la confronter au texte du vendeur : fiez-vous plutôt à la description.
- `seller.type` ne vaut `private` que lorsque la page affiche « particulier » à la place du nom. Sur ces mêmes 8 annonces, il revenait `professional` partout, y compris pour des annonces rédigées à la première personne ; ne vous en servez pas pour séparer particuliers et garages.
- Côté neuf, les libellés sont ceux du site : la Sandero Streetway « 1.0 TCe 100 AT Essentiel » figure dans la fiche technique de Moteur.ma en Diesel et en boîte Manuelle, et `new_versions` classe les trois Stepway « TCe 100 AT » en boîte Manuelle. Nous ne les corrigeons pas d'après le nom de la version.
- Le champ `url` de `new_version` est une adresse technique : dans nos trois appels, elle pointait sous /dacia/logan/, même pour la Citroën, et menait bien à la bonne version. Pour un lien à afficher, prenez l'`url` renvoyée par `new_versions`.
- L'occasion n'a ni recherche libre ni tri, parce que le site n'en propose pas : on affine avec les filtres. Motos, camions et location ne sont pas couverts.
- `listing` renvoie le téléphone, le lien WhatsApp et le nom du vendeur tels que l'annonce les montre ; il s'agit souvent de particuliers. N'enregistrez ces champs que si votre usage l'exige vraiment.
- Chaque appel interroge Moteur.ma au moment où vous le lancez (`cache_hit: false`, `mode: "live"`) : une promotion qui prend fin le 31 octobre disparaît de la réponse dès que le site la retire.