Mubawab API : les annonces immobilières du Maroc en JSON
Côté développeurs, Mubawab ne documente aucune interface. L'API décrite ici reprend ce que voit n'importe quel visiteur du site — prix en DH, surface, chambres, quartier, équipements, agence — et le restitue en JSON. Ce n'est pas l'outil d'une agence ou d'un promoteur pour diffuser ses biens sur Mubawab : c'est le côté acheteur, l'offre telle qu'elle est en ligne au moment de l'appel. Le même moteur lit aussi mubawab.tn (prix en TND) avec `country: "tn"`.
Endpoints
| endpoint | Ce qui est renvoyé | Obligatoires |
|---|---|---|
| search | Recherche par opération (vente, location, location de vacances), type de bien (appartement, maison, villa, riad, terrain, local, bureau, ferme), ville et quartier, puis prix, surface, chambres, salles de bain, équipements et mot-clé. 32 annonces par page, avec le total annoncé par Mubawab. | tous optionnels |
| detail | La fiche complète à partir de l'`id` d'une ligne de recherche ou de l'URL : description, prix, surface, pièces et chambres, caractéristiques (état, étage, standing, date de livraison pour le neuf), équipements, photos, coordonnées GPS et annonceur — agence, promoteur ou particulier. | id |
Chaque appel est facturé en crédits. Les appels en échec ou bloqués sont gratuits.
Exemple qui fonctionne
Dans cette recherche d'appartements à vendre au Maârif, une annonce intitulée « A louer Appartement Haut Standing à Maarif » à 9 000 DH est remontée : c'est Mubawab qui l'a classée en vente. `title_deal` le signale déjà dans la liste, et `detail` le confirme avec `deal_conflict: true`. Avant de calculer un prix moyen au m², écartez ces lignes, sinon un loyer mensuel se retrouve au milieu des prix de vente.
curl -X POST https://api.reefapi.com/mubawab/v1/search \
-H "x-api-key: VOTRE_CLE" \
-H "content-type: application/json" \
-d '{"country": "ma", "deal": "sale", "property_type": "apartment", "city": "casablanca", "district": "Maârif"}'{
"ok": true,
"data": {
"results": [
{
"id": "8153729",
"title": "Bel appartement de 68m au maarif",
"title_deal": null,
"price": { "amount": 1200000, "currency": "MAD", "display": "1 200 000 DH", "on_request": false },
"area_m2": 68,
"rooms": 3,
"bedrooms": 2,
"bathrooms": 1,
"district": "Maârif",
"city": "Casablanca",
"amenities": ["Terrasse", "Garage", "Ascenseur", "Concierge", "Salon Marocain", "Salon européen", "Antenne parabolique", "Climatisation", "Sécurité", "Cuisine équipée", "Four"]
},
{
"id": "8273034",
"title": "A louer Appartement Haut Standing à Maarif",
"title_deal": "rent",
"price": { "amount": 9000, "currency": "MAD", "display": "9 000 DH", "on_request": false },
"area_m2": 150,
"bedrooms": 3
},
...
],
"total": 189,
"page_size": 32,
"last_page": 6,
"dropped_padding": 0,
"promoted_boxes_dropped": 1
},
"meta": { "record_count": 32, "cache_hit": false, "mode": "live", "market": "MA", "currency": "MAD" }
}Pourquoi ne pas scraper Mubawab soi-même
Mubawab n'expose pas de JSON exploitable : il faut lire les pages de résultats, et le premier piège ne se voit pas. Quand une recherche compte moins d'annonces qu'une page n'en contient, le site complète la page avec des biens d'autres quartiers : une recherche à 3 résultats dans le centre-ville de Fès affichait 33 cartes. Sans recouper avec le total annoncé, votre script compte 33 biens là où il y en a 3.
D'autres écarts mesurés pendant la construction du moteur : le filtre « pièces » du site compte en fait les chambres, une option de filtre inconnue est ignorée sans message, le tri par prix fait disparaître les annonces « Prix à consulter », et certaines villes n'existent dans l'adresse qu'avec leur accent (fès, salé).
Ici, les cartes de remplissage sont retirées et comptées dans `dropped_padding`, et un paramètre que le site n'appliquerait pas est signalé au lieu d'être avalé. Si vous n'avez besoin qu'une fois des annonces d'une seule ville, écrivez votre propre script, ce sera moins cher. Un relevé régulier des prix au m², lui, dépend justement de ces écarts que rien ne signale.
Limites et remarques honnêtes
- Ce n'est pas l'API officielle de Mubawab et nous n'avons aucun partenariat avec Mubawab.
- Les annonces « Prix à consulter » reviennent avec `amount` à null et `on_request: true` ; aucun prix n'est reconstitué.
- En location, le site n'indique pas la période : loyers au mois et prix à la nuitée se côtoient dans les mêmes résultats, et `period` reste à null.
- La devise est lue sur l'annonce elle-même : sur mubawab.ma la plupart des prix sont en MAD, mais quelques biens sont affichés en euros.
- L'annonceur (agence, promoteur ou particulier) n'apparaît que dans `detail` ; la liste de résultats ne le publie pas.