API Places

Points d'intérêt : recherche, proximité & détails

Base POI issue d'OSM + Overture + données locales. Pharmacies de garde, marchés avec jours d'ouverture, mosquées, églises, stations-service. Chaque place porte un identifiant stable place_01HZ….

Sources de données

OpenStreetMap

Routes, commerces, services publics, POI contribués par la communauté. Qualité variable mais très riche en zone urbaine Abidjan.

Overture Maps

54 millions de POI monde. Comble les trous OSM avec des données de Microsoft, Meta, TomTom, Esri.

Couche locale AfriMap

Pharmacies de garde (avec rotation), marchés (jours d'ouverture), maquis, stations-service, lieux de culte. Crowdsourcé.

Recherche de lieux

Recherche textuelle parmi tous les POI, avec filtrage optionnel par catégorie et rayon autour d'un point.

TypeScriptRecherche de pharmacies
const results = await client.places.search({ q: 'pharmacie', lat: 5.3480, lng: -3.9904, radius: 2000, // 2 km category: 'pharmacy', limit: 10, }) // results.places[0] = {// id: "place_01HZ...",// name: "Pharmacie de Cocody",// category: "pharmacy",// location: { lat: 5.3495, lng: -3.9910 },// distance_m: 180,// metadata: { garde: true, phone: "+225 27 22 44 55 66" }// }
TerminalcURL
 curl -H "X-AfriMap-Key: afm_test_..." \ "https://api.afrimap.ci/v1/places/search?q=restaurant&lat=5.34&lng=-4.01&radius=1000"

Recherche de proximité

Trouve les POI les plus proches d'un point, triés par distance. Pas besoin de texte de recherche — juste la position et optionnellement une catégorie.

TypeScriptPOI à proximité
const nearby = await client.places.nearby({ lat: 5.3197, lng: -4.0167, radius: 500, category: 'fuel_station', }) // nearby.places = liste triée par distance croissante

Détails d'un lieu

Chaque lieu a un identifiant stable que vous pouvez stocker et réutiliser :

TypeScriptDétails par ID
const place = await client.places.get('place_01HZ...') // place = {// id: "place_01HZ...",// name: "Marché de Cocody",// category: "market",// location: { lat: 5.349, lng: -3.991 },// address: "Cocody, Abidjan, Cote d'Ivoire",// metadata: {// market_hours: { days: ["lundi", "mercredi", "vendredi"] },// phone: "+225 ...",// }// }

Catégories disponibles

Listez les catégories disponibles via /v1/places/categories :

restaurant
pharmacy
fuel_station
market
mosque
church
bank
atm
hospital
school
hotel
supermarket
police
post_office
bus_station
parking

Liste non exhaustive. Appelez GET /v1/places/categories pour la liste complète avec compteurs.

Données spéciales : marchés & pharmacies

Marchés avec jours d'ouverture

Beaucoup de marchés ivoiriens n'ouvrent que certains jours. AfriMap inclut cette info dans metadata.market_hours.

JSONExemple marché
 { "name": "Marche d'Adjame", "metadata": { "market_hours": { "days": ["lundi", "mercredi", "samedi"], "open": "06:00", "close": "18:00" } } }

Pharmacies de garde

Le champ metadata.garde indique si la pharmacie est de garde cette semaine.

JSONExemple pharmacie
 { "name": "Pharmacie du Plateau", "metadata": { "garde": true, "phone": "+225 27 20 21 33 44", "hours": "24/7 (de garde)" } }

Endpoints

GET/v1/places/search

Search POIs by text + optional location bias

Paramètres

NomEmplacementTypeDescription
q requiredquerystring
lat querynumber
lng querynumber
radius queryinteger

Réponses

  • 200Matching places.

    object

Exemples de code

curl "https://api.afrimap.ci/v1/places/search?q=pharmacie&lat=5.3480&lng=-3.9904&radius=2000" \
  -H "X-AfriMap-Key: $AFM_KEY"

Testez-le

Essayer en direct

GET /v1/places/search

Collez une clé sandbox afm_test_…. La requête part directement de votre navigateur vers le gateway, aucun proxy côté portail.

GET http://localhost:8090/v1/places/search?q=pharmacie&radius=2000
GET/v1/places/nearby

Places within a radius, optionally filtered by category

Paramètres

NomEmplacementTypeDescription
lat requiredquerynumber
lng requiredquerynumber
radius queryintegerMetres.
category querystring

Réponses

  • 200Matching places.

Exemples de code

curl "https://api.afrimap.ci/v1/places/nearby?lat=5.3480&lng=-3.9904&radius=1000&category=restaurant" \
  -H "X-AfriMap-Key: $AFM_KEY"

Testez-le

Essayer en direct

GET /v1/places/nearby

Collez une clé sandbox afm_test_…. La requête part directement de votre navigateur vers le gateway, aucun proxy côté portail.

Metres.

GET http://localhost:8090/v1/places/nearby?lat=5.348&lng=-3.9904&radius=1000&category=restaurant
GET/v1/places/categories

List supported place categories

Réponses

  • 200Flat array of category slugs.

Exemples de code

curl https://api.afrimap.ci/v1/places/categories \
  -H "X-AfriMap-Key: $AFM_KEY"

Testez-le

Essayer en direct

GET /v1/places/categories

Collez une clé sandbox afm_test_…. La requête part directement de votre navigateur vers le gateway, aucun proxy côté portail.

GET http://localhost:8090/v1/places/categories
GET/v1/places/{id}

Fetch a single place by id

Paramètres

NomEmplacementTypeDescription
id requiredpathstring

Réponses

  • 200Place.

    Place

  • 404Not found.

Exemples de code

curl https://api.afrimap.ci/v1/places/place_01HZABC... \
  -H "X-AfriMap-Key: $AFM_KEY"

Testez-le

Essayer en direct

GET /v1/places/{id}

Collez une clé sandbox afm_test_…. La requête part directement de votre navigateur vers le gateway, aucun proxy côté portail.

GET http://localhost:8090/v1/places/place_01HZ...