Get a museum
Good to know. FNM September 2026 inventory: 23 museums, not every museum in Morocco. Source hours and prices; current opening status is unknown.
Read the response
data: The requested results, as an object or an array.
meta: Dataset sources, license and dates. null means unknown or unavailable.
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 19
[] means each item in a list. null means unknown or unavailable, never zero. The guide language does not translate source values.
dataobjectRequested result: a single object or a list.
data.idstringIdentifier of this item in the dataset; not necessarily an official code.
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.enstring | nullEnglish value; null when no translation is provided.
data.aliasesstring[]Alternative names for the same resource, useful for recognition or search.
data.city_codestringIdentifier of the associated commune in HCP geography.
data.region_codestringIdentifier of the parent region, Morocco’s first administrative level.
data.address_frstringFrench address provided by the source.
data.contactobjectContact details published by the source.
data.contact.phone_e164string | nullPhone normalized to international format; valid formatting does not guarantee it works.
data.contact.phone_statusstringFormat-validation result only; the number may be shared or unverified.
Accepted values:
"format_valid_unverified""invalid_format""missing"data.contact.social_handlesstring[]Public social handles; the platform is not inferred.
data.opening_hours_text_frstringFrench opening-hours text from the guide; check current hours with the museum.
data.admission_text_frstringFrench admission-fee excerpt; consult the guide for reductions and free entry.
data.coordinatesnullCoordinates are absent from the admitted source; no location is invented.
Accepted values:
nulldata.operating_statusstringOperating status known from the source; does not guarantee current opening.
Accepted values:
"unknown"data.quality_flagsstring[]Known quality issues, such as shared phones or mentions of building works.
Data structure
{
"type": "object",
"additionalProperties": false,
"required": [
"data",
"meta"
],
"properties": {
"data": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"name",
"aliases",
"city_code",
"region_code",
"address_fr",
"contact",
"opening_hours_text_fr",
"admission_text_fr",
"coordinates",
"operating_status",
"quality_flags"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "^fnm-[a-z0-9-]+$",
"description": "Stable internal MoroccoAPI ID, not an official FNM code."
},
"name": {
"type": "object",
"additionalProperties": false,
"required": [
"ar",
"fr",
"en"
],
"properties": {
"ar": {
"type": "string",
"minLength": 1
},
"fr": {
"type": "string",
"minLength": 1
},
"en": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
}
}
},
"aliases": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "French heading from the official guide, when different from the XLSX name."
},
"city_code": {
"type": "string",
"minLength": 1,
"description": "Commune slug from the HCP geography snapshot."
},
"region_code": {
"type": "string",
"minLength": 1
},
"address_fr": {
"type": "string",
"minLength": 1
},
"contact": {
"type": "object",
"additionalProperties": false,
"required": [
"phone_e164",
"phone_status",
"social_handles"
],
"properties": {
"phone_e164": {
"anyOf": [
{
"type": "string",
"pattern": "^\\+212[5-7]\\d{8}$"
},
{
"type": "string",
"nullable": true,
"enum": [
null
]
}
]
},
"phone_status": {
"type": "string",
"enum": [
"format_valid_unverified",
"invalid_format",
"missing"
],
"description": "Format validation only. Numbers may be shared and are not operationally verified."
},
"social_handles": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Public visitor handles; platform is not inferred."
}
}
},
"opening_hours_text_fr": {
"type": "string",
"minLength": 1,
"description": "Source visitor schedule; not a current opening guarantee."
},
"admission_text_fr": {
"type": "string",
"minLength": 1,
"description": "Source tariff excerpt. Consult the guide for free-entry/reduction conditions."
},
"coordinates": {
"type": "string",
"description": "No coordinates in the admitted source.",
"nullable": true,
"enum": [
null
]
},
"operating_status": {
"type": "string",
"enum": [
"unknown"
]
},
"quality_flags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Known source issues, including shared/missing phones and works mentions."
}
}
},
"meta": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"total",
"license",
"retrieved_at",
"transformation_version",
"source_version",
"scope",
"limitations",
"sources"
],
"properties": {
"dataset": {
"enum": [
"morocco-museums-fnm"
]
},
"total": {
"type": "integer",
"minimum": 0
},
"license": {
"enum": [
"ODbL-1.0"
]
},
"retrieved_at": {
"enum": [
"2026-10-14"
]
},
"transformation_version": {
"enum": [
"1.0.0"
]
},
"source_version": {
"enum": [
"Septembre 2026"
]
},
"scope": {
"type": "string",
"minLength": 1
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"sources": {
"type": "array",
"minItems": 3,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"dataset",
"producer",
"source_url",
"resource_url",
"license",
"source_updated_at"
],
"properties": {
"dataset": {
"type": "string",
"minLength": 1
},
"producer": {
"type": "string",
"minLength": 1
},
"source_url": {
"type": "string",
"format": "uri"
},
"resource_url": {
"type": "string",
"format": "uri"
},
"license": {
"type": "string",
"enum": [
"ODbL-1.0",
"CC-BY-4.0"
]
},
"source_updated_at": {
"type": "string",
"format": "date"
}
}
}
}
}
}
}
}Sources and pagination 16
metaobjectResult context: sources, dates, license and pagination where applicable.
meta.datasetstringName of the dataset for this result or source.
Accepted values:
"morocco-museums-fnm"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:
"ODbL-1.0"meta.retrieved_atstringDate the project retrieved the source file; not the observation date.
Accepted values:
"2026-10-14"meta.transformation_versionstringVersion of the dataset conversion rules; separate from the API version.
Accepted values:
"1.0.0"meta.source_versionstringVersion or edition of the source document.
Accepted values:
"Septembre 2026"meta.scopestringScope covered by the dataset; does not imply universal coverage.
meta.limitationsstring[]Known source or coverage limitations; read before using the data.
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:
"ODbL-1.0""CC-BY-4.0"meta.sources[].source_updated_atstringLast update reported by the source; not the retrieval date.
Errors
400: Invalid or missing parameter.404: Resource not found.
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.