Population by region
Good to know. RGPH 2024 and HCP historical series. See meta for each series’ source and date.
Understand the context
RGPH is the population census run by HCP, Morocco’s statistics office. A resident is not necessarily a Moroccan citizen. Reading example: 100 residents, including 95 Moroccan nationals and 5 foreign nationals, means a total of 100; do not add them again. These figures are illustrative.
Read the response
data: The requested results, as an object or an array.
meta: Dataset sources, license and dates. null means unknown or unavailable.
meta.pagination: Lists: 100 results by default, 500 maximum. Use limit and offset; meta.pagination.next_offset is null on the last page.
Illustrative example: With limit=10 and offset=0, the first page holds at most 10 results. If next_offset is 10, request the next page with offset=10 and the same filters. Stop when next_offset is null.
API v2 is the canonical path. Older /api/v1 paths remain compatibility aliases for the currently published behavior, including pagination; no removal date is scheduled.
Response fields 13
[] means each item in a list. null means unknown or unavailable, never zero. The guide language does not translate source values.
dataobject[]Requested result: a single object or a list.
data[].codestringMoroccoAPI resource identifier; use it in the corresponding resource URLs.
data[].hcp_codestringCode from HCP, Morocco’s national statistics office. Keep it as text to preserve leading zeros.
data[].typestringKind of resource. Possible values are listed below.
Accepted values:
"region"data[].nameobjectResource name, grouped by language where applicable.
data[].name.arstringArabic value; null when no translation is provided.
data[].name.frstringFrench value; null when no translation is provided.
data[].name.enstringEnglish value; null when no translation is provided.
data[].populationintegerTotal census residents in this administrative unit.
data[].moroccansintegerNumber of residents with Moroccan nationality in the stated area.
data[].foreignersintegerNumber of foreign-national residents in the stated area.
data[].urbanintegerPopulation in census-classified urban areas; a breakdown object where provided.
data[].ruralintegerPopulation in census-classified rural areas; a breakdown object where provided.
Data structure
{
"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 and pagination 19
metaobjectResult context: sources, dates, license and pagination where applicable.
meta.datasetstringName of the dataset for this result or source.
Accepted values:
"regional-population"meta.totalintegerNumber of matching records before pagination; not the size of this page.
meta.licensestringReuse license. mixed means licenses differ: inspect each source.
Accepted values:
"CC-BY-4.0"meta.retrieved_atstringDate the project retrieved the source file; not the observation date.
Accepted values:
"2026-10-05"meta.transformation_versionstringVersion of the dataset conversion rules; separate from the API version.
Accepted values:
"2.0.0"meta.sourcesobject[]Sources used for this result, with their publishers and licenses.
meta.sources[].datasetstringName of the dataset for this result or source.
meta.sources[].producerstringOrganization publishing the original data.
meta.sources[].source_urlstringSource publication or dataset landing page.
meta.sources[].resource_urlstringLink to the actual file or resource used.
meta.sources[].licensestringReuse license. mixed means licenses differ: inspect each source.
Accepted values:
"CC-BY-4.0"meta.sources[].source_updated_atstringLast update reported by the source; not the retrieval date.
meta.paginationobjectInformation for reading a collection one page at a time.
meta.pagination.limitintegerRequested maximum records per page: default 100, maximum 500.
meta.pagination.offsetintegerMatching records skipped before this page, after filtering. The first page starts at 0.
meta.pagination.countintegerNumber of records actually returned on this page.
meta.pagination.has_morebooleantrue when another page of records remains.
meta.pagination.next_offsetinteger | nullUse as offset for the next page; null at the end. Keep the same filters.
Errors
400: Invalid or missing parameter.
Errors return error.code, error.message and error.request_id.
errorobjectDetails of a failed request; replaces data and meta.
error.codestringStable error code, such as RESOURCE_NOT_FOUND; use it in application logic.
error.messagestringHuman-readable error explanation; use code for application logic.
error.request_idstringIdentifier for this request, useful when reporting a problem.