Indicateurs nationaux du recensement
À 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.
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 27
[] 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.
dataobjectRésultat demandé : objet unique ou liste.
data.territoryobjectTerritoire décrit par les indicateurs, avec ses codes et son nom.
data.territory.levelstringNiveau territorial : national, regions, subdivisions (provinces et préfectures), prefectures-of-arrondissements, communes ou arrondissements.
Valeurs acceptées:
"national""regions""subdivisions""prefectures-of-arrondissements""communes""arrondissements"data.territory.codestring | nullIdentifiant MoroccoAPI de la ressource ; réutilisez-le dans les URL correspondantes.
data.territory.hcp_codestring | nullCode du Haut-Commissariat au Plan (office statistique marocain). Conservez-le comme texte pour garder les zéros initiaux.
data.territory.nameobjectNom de la ressource, éventuellement réparti par langue.
data.territory.name.arstringValeur en arabe ; null si aucune traduction n’est fournie.
data.territory.name.frstringValeur en français ; null si aucune traduction n’est fournie.
data.territory.name.enstring | nullValeur en anglais ; null si aucune traduction n’est fournie.
data.territory.region_codestring | nullIdentifiant de la région parente, premier niveau administratif du Maroc.
data.territory.province_codestring | nullIdentifiant de la province ou préfecture parente, sous la région.
data.territory.data_from_local_administrationbooleantrue pour les quatre communes marquées * par le HCP : données fournies par l’administration locale en raison de la mobilité saisonnière.
data.indicatorsobject[]Indicateurs du recensement pour ce territoire, avec leurs valeurs par sexe.
data.indicators[].idstringIdentifiant de cet élément dans le jeu de données ; pas nécessairement un code officiel.
data.indicators[].groupstringIdentifiant du groupe d’indicateurs, utilisable dans le filtre group.
data.indicators[].unitstringUnité de l’indicateur : percent (0 à 100), persons, households, years, children-per-woman, persons-per-room, persons-per-household ou km.
Valeurs acceptées:
"percent""persons""households""years""children-per-woman""persons-per-room""persons-per-household""km"data.indicators[].nameobjectNom de la ressource, éventuellement réparti par langue.
data.indicators[].name.frstringValeur en français ; null si aucune traduction n’est fournie.
data.indicators[].name.enstringValeur en anglais ; null si aucune traduction n’est fournie.
data.indicators[].name.arstringValeur en arabe ; null si aucune traduction n’est fournie.
data.indicators[].both_sexesnumber | nullValeur pour l’ensemble de la population (deux sexes), dans l’unité de l’indicateur ; null si absente, voir null_reasons.
data.indicators[].malenumber | nullValeur pour les hommes, dans l’unité de l’indicateur ; null si absente, voir null_reasons.
data.indicators[].femalenumber | nullValeur pour les femmes, dans l’unité de l’indicateur ; null si absente, voir null_reasons.
data.indicators[].null_reasonsobjectRaison de chaque valeur null : unavailable (« . » du HCP), not_applicable (« … » du HCP) ou not_published (aucune valeur HCP pour ce sexe).
data.indicators[].null_reasons.both_sexesstring | nullRaison si la valeur de ce sexe est null : unavailable, not_applicable ou not_published ; null quand la valeur existe.
data.indicators[].null_reasons.malestring | nullRaison si la valeur de ce sexe est null : unavailable, not_applicable ou not_published ; null quand la valeur existe.
data.indicators[].null_reasons.femalestring | nullRaison si la valeur de ce sexe est null : unavailable, not_applicable ou not_published ; null quand la valeur existe.
Structure des données
{
"type": "object",
"additionalProperties": false,
"required": [
"data",
"meta"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"territory",
"indicators"
],
"properties": {
"territory": {
"type": "object",
"additionalProperties": false,
"required": [
"level",
"code",
"hcp_code",
"name",
"region_code",
"province_code",
"data_from_local_administration"
],
"properties": {
"level": {
"enum": [
"national",
"regions",
"subdivisions",
"prefectures-of-arrondissements",
"communes",
"arrondissements"
]
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
],
"description": "MoroccoAPI geography code; null for the national total."
},
"hcp_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
],
"description": "HCP geographic code in the dotted form used by the geography endpoints; null for the national total."
},
"name": {
"type": "object",
"additionalProperties": false,
"required": [
"ar",
"fr",
"en"
],
"properties": {
"ar": {
"type": "string"
},
"fr": {
"type": "string"
},
"en": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
}
}
},
"region_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"province_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"data_from_local_administration": {
"type": "boolean",
"description": "True for the four communes that HCP marks with *: their data comes from the local administration because of seasonal mobility."
}
}
},
"indicators": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"group",
"unit",
"name",
"both_sexes",
"male",
"female",
"null_reasons"
],
"properties": {
"id": {
"type": "string",
"minLength": 2,
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"group": {
"type": "string"
},
"unit": {
"enum": [
"percent",
"persons",
"households",
"years",
"children-per-woman",
"persons-per-room",
"persons-per-household",
"km"
]
},
"name": {
"type": "object",
"additionalProperties": false,
"required": [
"fr",
"en",
"ar"
],
"properties": {
"fr": {
"type": "string"
},
"en": {
"type": "string"
},
"ar": {
"type": "string"
}
}
},
"both_sexes": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"male": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"female": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"null_reasons": {
"type": "object",
"additionalProperties": false,
"required": [
"both_sexes",
"male",
"female"
],
"description": "Why each value is null: unavailable (HCP \".\"), not_applicable (HCP \"…\") or not_published (HCP gives no value for that sex). Null when the value is present.",
"properties": {
"both_sexes": {
"anyOf": [
{
"enum": [
"unavailable",
"not_applicable",
"not_published"
]
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"male": {
"anyOf": [
{
"enum": [
"unavailable",
"not_applicable",
"not_published"
]
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"female": {
"anyOf": [
{
"enum": [
"unavailable",
"not_applicable",
"not_published"
]
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
}
}
}
}
}
}
}
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"total",
"license",
"retrieved_at",
"transformation_version",
"sources"
],
"properties": {
"dataset": {
"enum": [
"population-indicators"
]
},
"total": {
"type": "integer",
"minimum": 0
},
"license": {
"enum": [
"CC-BY-4.0"
]
},
"retrieved_at": {
"enum": [
"2026-10-20"
]
},
"transformation_version": {
"enum": [
"1.0.1"
]
},
"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"
}
}
}
}
}
}
}
}Sources et pagination 13
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:
"population-indicators"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-20"meta.transformation_versionstringVersion des règles de conversion du jeu de données ; distincte de l’API.
Valeurs acceptées:
"1.0.1"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.
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.