Population par région
À savoir. RGPH 2024 et séries historiques HCP. Consultez meta pour la source et la date de chaque série.
Comprendre le contexte
RGPH est le recensement de la population réalisé par le HCP, l’office statistique marocain. Un résident n’est pas nécessairement de nationalité marocaine. Exemple de lecture : 100 résidents, dont 95 Marocains et 5 étrangers, donnent un total de 100 ; ne les additionnez pas une seconde fois. Cet exemple est illustratif.
Comprendre la réponse
data: Les résultats demandés, sous forme d’objet ou de liste.
meta: Sources, licence et dates du jeu de données. null signifie une valeur inconnue ou indisponible.
meta.pagination: Listes : 100 résultats par défaut, 500 maximum. Utilisez limit et offset ; meta.pagination.next_offset vaut null à la dernière page.
Exemple illustratif: Avec limit=10 et offset=0, la première page contient au plus 10 résultats. Si next_offset vaut 10, demandez la suivante avec offset=10 et les mêmes filtres. Arrêtez quand next_offset vaut null.
API v2 est le chemin de référence. Les anciens chemins /api/v1 restent des alias de compatibilité du comportement actuellement publié, pagination comprise ; aucune date de suppression n’est fixée.
Champs renvoyés 13
[] désigne chaque élément d’une liste. null signifie inconnu ou indisponible, jamais zéro. La langue du guide ne traduit pas les valeurs des sources.
dataobject[]Résultat demandé : objet unique ou liste.
data[].codestringIdentifiant MoroccoAPI de la ressource ; réutilisez-le dans les URL correspondantes.
data[].hcp_codestringCode du Haut-Commissariat au Plan (office statistique marocain). Conservez-le comme texte pour garder les zéros initiaux.
data[].typestringNature de la ressource. Les valeurs possibles figurent ci-dessous.
Valeurs acceptées:
"region"data[].nameobjectNom de la ressource, éventuellement réparti par langue.
data[].name.arstringValeur en arabe ; null si aucune traduction n’est fournie.
data[].name.frstringValeur en français ; null si aucune traduction n’est fournie.
data[].name.enstringValeur en anglais ; null si aucune traduction n’est fournie.
data[].populationintegerNombre total de résidents recensés dans cette unité administrative.
data[].moroccansintegerNombre de résidents de nationalité marocaine dans le périmètre indiqué.
data[].foreignersintegerNombre de résidents de nationalité étrangère dans le périmètre indiqué.
data[].urbanintegerPopulation des zones classées urbaines par le recensement ; objet détaillé si présent.
data[].ruralintegerPopulation des zones classées rurales par le recensement ; objet détaillé si présent.
Structure des données
{
"type": "object",
"additionalProperties": false,
"required": [
"data",
"meta"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"code",
"hcp_code",
"type",
"name",
"population",
"moroccans",
"foreigners",
"urban",
"rural"
],
"properties": {
"code": {
"type": "string"
},
"hcp_code": {
"type": "string",
"pattern": "^[0-9]{2}$"
},
"type": {
"enum": [
"region"
]
},
"name": {
"type": "object",
"additionalProperties": false,
"required": [
"ar",
"fr",
"en"
],
"properties": {
"ar": {
"type": "string"
},
"fr": {
"type": "string"
},
"en": {
"type": "string"
}
}
},
"population": {
"type": "integer",
"minimum": 0
},
"moroccans": {
"type": "integer",
"minimum": 0
},
"foreigners": {
"type": "integer",
"minimum": 0
},
"urban": {
"type": "integer",
"minimum": 0
},
"rural": {
"type": "integer",
"minimum": 0
}
}
}
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"total",
"license",
"retrieved_at",
"transformation_version",
"sources",
"pagination"
],
"properties": {
"dataset": {
"enum": [
"regional-population"
]
},
"total": {
"type": "integer",
"minimum": 0
},
"license": {
"enum": [
"CC-BY-4.0"
]
},
"retrieved_at": {
"enum": [
"2026-10-05"
]
},
"transformation_version": {
"enum": [
"2.0.0"
]
},
"sources": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"producer",
"source_url",
"resource_url",
"license",
"source_updated_at"
],
"properties": {
"dataset": {
"type": "string"
},
"producer": {
"type": "string"
},
"source_url": {
"type": "string",
"format": "uri"
},
"resource_url": {
"type": "string",
"format": "uri"
},
"license": {
"enum": [
"CC-BY-4.0"
]
},
"source_updated_at": {
"type": "string",
"format": "date"
}
}
}
},
"pagination": {
"type": "object",
"additionalProperties": false,
"required": [
"limit",
"offset",
"count",
"has_more",
"next_offset"
],
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 500
},
"has_more": {
"type": "boolean"
},
"next_offset": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 2147483647
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
}
}
}
}
}
}
}Sources et pagination 19
metaobjectContexte du résultat : sources, dates, licence et pagination si applicable.
meta.datasetstringNom du jeu de données auquel appartient le résultat ou la source.
Valeurs acceptées:
"regional-population"meta.totalintegerNombre de résultats correspondant aux filtres, avant pagination ; pas la taille de cette page.
meta.licensestringLicence de réutilisation. mixed signifie des licences différentes : consultez chaque source.
Valeurs acceptées:
"CC-BY-4.0"meta.retrieved_atstringDate de récupération du fichier source par le projet ; pas la date des observations.
Valeurs acceptées:
"2026-10-05"meta.transformation_versionstringVersion des règles de conversion du jeu de données ; distincte de l’API.
Valeurs acceptées:
"2.0.0"meta.sourcesobject[]Sources utilisées pour ce résultat, avec leurs producteurs et licences.
meta.sources[].datasetstringNom du jeu de données auquel appartient le résultat ou la source.
meta.sources[].producerstringOrganisme qui publie la donnée originale.
meta.sources[].source_urlstringPage de présentation ou de publication de la source.
meta.sources[].resource_urlstringLien vers le fichier ou la ressource utilisée.
meta.sources[].licensestringLicence de réutilisation. mixed signifie des licences différentes : consultez chaque source.
Valeurs acceptées:
"CC-BY-4.0"meta.sources[].source_updated_atstringDernière mise à jour annoncée par la source ; pas la date de récupération.
meta.paginationobjectInformations pour parcourir une collection page par page.
meta.pagination.limitintegerNombre maximal demandé par page : 100 par défaut, 500 au maximum.
meta.pagination.offsetintegerNombre de résultats ignorés avant cette page, après filtrage. La première page commence à 0.
meta.pagination.countintegerNombre de résultats effectivement présents dans cette page.
meta.pagination.has_morebooleantrue s’il reste une autre page de résultats.
meta.pagination.next_offsetinteger | nullValeur de offset pour la page suivante ; null à la fin. Gardez les mêmes filtres.
Erreurs
400: Paramètre invalide ou manquant.
Les erreurs renvoient error.code, error.message et error.request_id.
errorobjectDétails d’une requête échouée ; remplace data et meta.
error.codestringCode stable de l’erreur, par exemple RESOURCE_NOT_FOUND ; à utiliser dans votre logique.
error.messagestringExplication lisible de l’erreur ; utilisez code pour la logique de votre application.
error.request_idstringIdentifiant du traitement de cette requête, utile pour retrouver un problème.