{
  "edition": "2026-10-26",
  "city": "Casablanca",
  "price_nature": "asking_not_transaction",
  "statement": "Prix demandés relevés sur annonces publiques. Aucun prix de transaction. Disponibilité non confirmée. observed_at = date de consultation.",
  "definitions": {
    "observed_at": "Date de consultation de la page par Broker.ma (parfois via une copie en cache d’un moteur de recherche), pas la date de mise à jour de l’annonce par le vendeur.",
    "verification_grade": {
      "B": "Fiche professionnelle individuelle consultée ; aucune confirmation du propriétaire ou de l’annonceur.",
      "C": "Fiche ou relevé présentant des incohérences (surface, prix par lot, montant) ou relevé sur page de résultats ; aucune confirmation du propriétaire."
    },
    "split_fields": "Champs de surface détaillés renseignés uniquement si l’annonce les donne explicitement ; null sinon, jamais inférés."
  },
  "rules": {
    "ratio_location": "loyer mensuel annoncé (MAD) / surface explicitée (m²)",
    "ratio_vente": "prix annoncé (MAD) / surface explicitée (m²)",
    "scope": "observations fraîches avec eligible_displayed_statistics = true ; unités distinctes ; poids égal",
    "minimum_n_for_median": 3,
    "minimum_n_for_quartiles": 5,
    "percentile_method": "interpolation linéaire, h = (n − 1) × p (type 7)",
    "historical_in_aggregates": false,
    "strict_ht_hc_index_available": false
  },
  "counts": {
    "fresh": 35,
    "fresh_eligible": 13,
    "historical": 121,
    "fresh_relisting_of_historical": [
      {
        "id": "R147",
        "historical_ids": [
          "E20261007-R147",
          "E20261012-R147",
          "E20261019-R147"
        ]
      },
      {
        "id": "FB45",
        "historical_ids": [
          "E20261007-FB45",
          "E20261012-FB45",
          "E20261019-FB45"
        ]
      },
      {
        "id": "FB71",
        "historical_ids": [
          "E20261007-FB71",
          "E20261012-FB71",
          "E20261019-FB71"
        ]
      },
      {
        "id": "R77",
        "historical_ids": [
          "E20261007-R77",
          "E20261012-R77",
          "E20261019-R77"
        ]
      },
      {
        "id": "OA420",
        "historical_ids": [
          "NOTION-56",
          "E20261007-OA420",
          "E20261012-OA420",
          "E20261019-OA420"
        ]
      },
      {
        "id": "OAC125",
        "historical_ids": [
          "E20261007-OAC125",
          "E20261012-OAC125",
          "E20261019-OAC125"
        ]
      },
      {
        "id": "OAC144",
        "historical_ids": [
          "E20261007-OAC144",
          "E20261012-OAC144",
          "E20261019-OAC144"
        ]
      },
      {
        "id": "OAC283",
        "historical_ids": [
          "E20261007-OAC283",
          "E20261012-OAC283",
          "E20261019-OAC283"
        ]
      },
      {
        "id": "OAC97",
        "historical_ids": [
          "E20261007-OAC97",
          "E20261012-OAC97",
          "E20261019-OAC97"
        ]
      },
      {
        "id": "FBC65",
        "historical_ids": [
          "E20261007-FBC65",
          "E20261012-FBC65",
          "E20261019-FBC65"
        ]
      },
      {
        "id": "FBC110",
        "historical_ids": [
          "E20261007-FBC110",
          "E20261012-FBC110",
          "E20261019-FBC110"
        ]
      },
      {
        "id": "OAC171",
        "historical_ids": [
          "E20261007-OAC171",
          "E20261012-OAC171",
          "E20261019-OAC171"
        ]
      },
      {
        "id": "OAC60",
        "historical_ids": [
          "E20261007-OAC60",
          "E20261012-OAC60",
          "E20261019-OAC60"
        ]
      },
      {
        "id": "OAC148",
        "historical_ids": [
          "E20261007-OAC148",
          "E20261012-OAC148",
          "E20261019-OAC148"
        ]
      },
      {
        "id": "OAC80",
        "historical_ids": [
          "E20261007-OAC80",
          "E20261012-OAC80",
          "E20261019-OAC80"
        ]
      },
      {
        "id": "OAC47",
        "historical_ids": [
          "E20261007-OAC47",
          "E20261012-OAC47",
          "E20261019-OAC47"
        ]
      },
      {
        "id": "FB90ANFA",
        "historical_ids": [
          "N20261008-FB9090",
          "E20261012-FB90ANFA",
          "E20261019-FB90ANFA"
        ]
      },
      {
        "id": "FB125SOUK",
        "historical_ids": [
          "N20261008-FB125125",
          "E20261012-FB125SOUK",
          "E20261019-FB125SOUK"
        ]
      },
      {
        "id": "R91DABA",
        "historical_ids": [
          "E20261012-R91DABA",
          "E20261019-R91DABA"
        ]
      },
      {
        "id": "FB151",
        "historical_ids": [
          "NOTION-55",
          "E20261007-FB151",
          "E20261019-FB151"
        ]
      },
      {
        "id": "SI325",
        "historical_ids": [
          "NOTION-53",
          "E20261007-SI325",
          "E20261019-SI325"
        ]
      },
      {
        "id": "SI220",
        "historical_ids": [
          "NOTION-51",
          "E20261007-SI220",
          "E20261019-SI220"
        ]
      },
      {
        "id": "SI300",
        "historical_ids": [
          "NOTION-57",
          "E20261007-SI300",
          "E20261019-SI300"
        ]
      },
      {
        "id": "FBC149",
        "historical_ids": [
          "E20261007-FBC149",
          "E20261019-FBC149"
        ]
      },
      {
        "id": "OA70VAL",
        "historical_ids": [
          "E20261019-OA70VAL"
        ]
      },
      {
        "id": "SI307VAL",
        "historical_ids": [
          "E20261019-SI307VAL"
        ]
      },
      {
        "id": "SI234VAL",
        "historical_ids": [
          "E20261019-SI234VAL"
        ]
      },
      {
        "id": "SI468VAL",
        "historical_ids": [
          "E20261019-SI468VAL"
        ]
      }
    ]
  },
  "cells": [
    {
      "zone": "Sidi Maârouf",
      "asset_type": "bureau",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 0,
      "n_eligible_distinct_units": 0,
      "n_excluded": 0,
      "excluded_ids": [],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Sidi Maârouf",
      "asset_type": "bureau",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 7,
      "n_eligible_distinct_units": 5,
      "n_excluded": 2,
      "excluded_ids": [
        "SI300",
        "SI468VAL"
      ],
      "observation_ids": [
        "SI325",
        "SI220",
        "SI307VAL",
        "SI234VAL",
        "SI750VAL"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 113.64,
      "max": 209.33,
      "median": 160.68,
      "median_reason": null,
      "p25": 160,
      "p75": 162.51,
      "quartiles_reason": null,
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "nouvel_actif",
      "sample_statement": "Échantillon élargi par un nouvel actif (SI750VAL) : l’écart avec l’édition précédente ne mesure pas une tendance de quartier."
    },
    {
      "zone": "Sidi Maârouf",
      "asset_type": "local_commercial",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 3,
      "n_eligible_distinct_units": 2,
      "n_excluded": 1,
      "excluded_ids": [
        "SIC58YAK"
      ],
      "observation_ids": [
        "SIC61YAK",
        "SIC135YAK"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 10370.37,
      "max": 16393.44,
      "median": null,
      "median_reason": "n=2 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=2 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "nouvel_actif",
      "sample_statement": "Échantillon élargi par un nouvel actif (SIC61YAK, SIC135YAK) : l’écart avec l’édition précédente ne mesure pas une tendance de quartier."
    },
    {
      "zone": "Sidi Maârouf",
      "asset_type": "local_commercial",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 1,
      "n_eligible_distinct_units": 1,
      "n_excluded": 0,
      "excluded_ids": [],
      "observation_ids": [
        "SIC26AGENZ"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 307.69,
      "max": 307.69,
      "median": null,
      "median_reason": "n=1 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=1 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "nouvel_actif",
      "sample_statement": "Échantillon élargi par un nouvel actif (SIC26AGENZ) : l’écart avec l’édition précédente ne mesure pas une tendance de quartier."
    },
    {
      "zone": "Oasis",
      "asset_type": "bureau",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 0,
      "n_eligible_distinct_units": 0,
      "n_excluded": 0,
      "excluded_ids": [],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Oasis",
      "asset_type": "bureau",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 2,
      "n_eligible_distinct_units": 1,
      "n_excluded": 1,
      "excluded_ids": [
        "OA420"
      ],
      "observation_ids": [
        "OA70VAL"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 171.43,
      "max": 171.43,
      "median": null,
      "median_reason": "n=1 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=1 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Oasis",
      "asset_type": "local_commercial",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 4,
      "n_eligible_distinct_units": 0,
      "n_excluded": 4,
      "excluded_ids": [
        "OAC125",
        "OAC144",
        "OAC283",
        "OAC97"
      ],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Oasis",
      "asset_type": "local_commercial",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 6,
      "n_eligible_distinct_units": 0,
      "n_excluded": 6,
      "excluded_ids": [
        "OAC171",
        "OAC60",
        "OAC148",
        "OAC80",
        "OAC47",
        "OAC208YAK"
      ],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Route d’El Jadida",
      "asset_type": "bureau",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 1,
      "n_eligible_distinct_units": 0,
      "n_excluded": 1,
      "excluded_ids": [
        "R147"
      ],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Route d’El Jadida",
      "asset_type": "bureau",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 3,
      "n_eligible_distinct_units": 2,
      "n_excluded": 1,
      "excluded_ids": [
        "R91CAP"
      ],
      "observation_ids": [
        "R77",
        "R91DABA"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 168.83,
      "max": 175.82,
      "median": null,
      "median_reason": "n=2 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=2 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Route d’El Jadida",
      "asset_type": "local_commercial",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 0,
      "n_eligible_distinct_units": 0,
      "n_excluded": 0,
      "excluded_ids": [],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Route d’El Jadida",
      "asset_type": "local_commercial",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 0,
      "n_eligible_distinct_units": 0,
      "n_excluded": 0,
      "excluded_ids": [],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Ferme Bretonne",
      "asset_type": "bureau",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 2,
      "n_eligible_distinct_units": 1,
      "n_excluded": 1,
      "excluded_ids": [
        "FB71"
      ],
      "observation_ids": [
        "FB45"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 20222.22,
      "max": 20222.22,
      "median": null,
      "median_reason": "n=1 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=1 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Ferme Bretonne",
      "asset_type": "bureau",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 3,
      "n_eligible_distinct_units": 0,
      "n_excluded": 3,
      "excluded_ids": [
        "FB90ANFA",
        "FB125SOUK",
        "FB151"
      ],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles : loyer HT HC annoncé pour FB90ANFA, mais surface privative de bureaux non établie.",
      "homogeneity_warning": "Repères hétérogènes : prix demandés, périmètres de surface et bases fiscales différents ; pas un indice normalisé.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Ferme Bretonne",
      "asset_type": "local_commercial",
      "transaction": "vente",
      "unit": "MAD/m²",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 2,
      "n_eligible_distinct_units": 1,
      "n_excluded": 1,
      "excluded_ids": [
        "FBC65"
      ],
      "observation_ids": [
        "FBC110"
      ],
      "tax_bases_in_sample": [
        "Non précisée"
      ],
      "ttc_ids": [],
      "min": 10000,
      "max": 10000,
      "median": null,
      "median_reason": "n=1 < 3 : médiane non publiée, observations individuelles et min–max seulement.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=1 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    },
    {
      "zone": "Ferme Bretonne",
      "asset_type": "local_commercial",
      "transaction": "location",
      "unit": "MAD/m²/mois",
      "price_nature": "prix_demandes_annonces",
      "n_fresh_observations": 1,
      "n_eligible_distinct_units": 0,
      "n_excluded": 1,
      "excluded_ids": [
        "FBC149"
      ],
      "observation_ids": [],
      "tax_bases_in_sample": [],
      "ttc_ids": [],
      "min": null,
      "max": null,
      "median": null,
      "median_reason": "Aucune observation fraîche éligible.",
      "p25": null,
      "p75": null,
      "quartiles_reason": "n=0 < 5 : P25/P75 non publiés.",
      "ht_hc_median": null,
      "ht_hc_reason": "Aucun indice HT HC calculable sur des surfaces admissibles.",
      "homogeneity_warning": "Seuls les locaux sans mezzanine ni ventilation incertaine sont retenus ; les autres restent en fiches individuelles.",
      "blocked_previous_ids": [],
      "sample_change_cause": "echantillon_identique",
      "sample_statement": "Échantillon éligible inchangé."
    }
  ],
  "neighborhood_yields": [
    {
      "zone": "Sidi Maârouf",
      "gross_yield": null,
      "reason": "Pas d’échantillons vente et location compatibles (même typologie, même base fiscale, même périmètre de surface, n suffisant) : rendement de quartier non publiable."
    },
    {
      "zone": "Oasis",
      "gross_yield": null,
      "reason": "Pas d’échantillons vente et location compatibles (même typologie, même base fiscale, même périmètre de surface, n suffisant) : rendement de quartier non publiable."
    },
    {
      "zone": "Route d’El Jadida",
      "gross_yield": null,
      "reason": "Pas d’échantillons vente et location compatibles (même typologie, même base fiscale, même périmètre de surface, n suffisant) : rendement de quartier non publiable."
    },
    {
      "zone": "Ferme Bretonne",
      "gross_yield": null,
      "reason": "Pas d’échantillons vente et location compatibles (même typologie, même base fiscale, même périmètre de surface, n suffisant) : rendement de quartier non publiable."
    }
  ],
  "historical_alerts": [
    {
      "ids": [
        "NOTION-15",
        "NOTION-17",
        "NOTION-16"
      ],
      "label": "SI294 / SI71 / SI80",
      "alert": "Les trois relevés pointent vers une même URL source (« bureau-140m ») alors que les surfaces annoncées sont 294, 71 et 80 m² : source commune incohérente, lots non identifiables."
    },
    {
      "ids": [
        "NOTION-14"
      ],
      "label": "SI438",
      "alert": "Conflit interne : loyer affiché 91 000 MAD contre 150 MAD/m² HT HC en description (soit 65 700 MAD). Montant net à clarifier."
    },
    {
      "ids": [
        "NOTION-13"
      ],
      "label": "R490",
      "alert": "490 m² annoncés incluant 150 m² de terrasse : le loyer ne doit pas être divisé par 490 m² comme une surface de bureaux homogène."
    },
    {
      "ids": [
        "NOTION-4"
      ],
      "label": "FB850",
      "alert": "Immeuble entier semi-fini : non comparable à des plateaux de bureaux."
    },
    {
      "ids": [
        "NOTION-27",
        "NOTION-48"
      ],
      "label": "SI65",
      "alert": "Ancienne annonce de vente (bureau vendu loué) dont la page renvoie désormais vers la page d’accueil du portail ; contenu non revérifiable. Le relevé SI65MILK (NOTION-50, 8 000 MAD/mois) est une autre fiche."
    },
    {
      "ids": [
        "E20261007-FB151"
      ],
      "label": "FB151 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-FB151), hors agrégats. Alerte d’accès datée du 12/10 explicitement supersédée : fiche de nouveau lisible le 19/10/2026, sans confirmation de disponibilité. L’état ancien reste archivé et hors agrégats.",
      "alert_at": "2026-10-12",
      "superseded_at": "2026-10-19",
      "superseded_by": "FB151"
    },
    {
      "ids": [
        "E20261007-SI325"
      ],
      "label": "SI325 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-SI325), hors agrégats. Alerte d’accès datée du 12/10 explicitement supersédée : fiche de nouveau lisible le 19/10/2026, sans confirmation de disponibilité. L’état ancien reste archivé et hors agrégats.",
      "alert_at": "2026-10-12",
      "superseded_at": "2026-10-19",
      "superseded_by": "SI325"
    },
    {
      "ids": [
        "E20261007-SI220"
      ],
      "label": "SI220 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-SI220), hors agrégats. Alerte d’accès datée du 12/10 explicitement supersédée : fiche de nouveau lisible le 19/10/2026, sans confirmation de disponibilité. L’état ancien reste archivé et hors agrégats.",
      "alert_at": "2026-10-12",
      "superseded_at": "2026-10-19",
      "superseded_by": "SI220"
    },
    {
      "ids": [
        "E20261007-SI300"
      ],
      "label": "SI300 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-SI300), hors agrégats. Alerte d’accès datée du 12/10 explicitement supersédée : fiche de nouveau lisible le 19/10/2026, sans confirmation de disponibilité. L’état ancien reste archivé et hors agrégats.",
      "alert_at": "2026-10-12",
      "superseded_at": "2026-10-19",
      "superseded_by": "SI300"
    },
    {
      "ids": [
        "E20261007-SIC121"
      ],
      "label": "SIC121 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-SIC121), hors agrégats. Nouvelle tentative le 19/10/2026 : fiche toujours non accessible, statut de marché inconnu. Nouvelle tentative le 26/10/2026 : URL inaccessible, statut de marché inconnu, aucun prix reconduit."
    },
    {
      "ids": [
        "E20261007-FBC149"
      ],
      "label": "FBC149 — non accessible le 12/10/2026",
      "alert": "Fiche non accessible le 12/10/2026 après nouvelle tentative ; statut de marché inconnu (aucune vente, location ou retrait constaté). Dernier état conservé dans l’historique : relevé du 07/10/2026 (E20261007-FBC149), hors agrégats. Alerte d’accès datée du 12/10 explicitement supersédée : fiche de nouveau lisible le 19/10/2026, sans confirmation de disponibilité. L’état ancien reste archivé et hors agrégats.",
      "alert_at": "2026-10-12",
      "superseded_at": "2026-10-19",
      "superseded_by": "FBC149"
    },
    {
      "ids": [
        "E20261012-OA53"
      ],
      "label": "OA53 — non relue le 19/10/2026",
      "alert": "Prix non reconduit en observation fraîche. Métadonnées de cache sans prix relisible, puis erreurs répétées et HTTP 503 direct. Statut de marché inconnu ; état du 12/10 conservé dans l’historique. Nouvelle tentative le 26/10/2026 : HTTP 502, statut de marché inconnu, aucun prix reconduit."
    },
    {
      "ids": [
        "E20261012-R64"
      ],
      "label": "R64 — non relue le 19/10/2026",
      "alert": "Prix non reconduit en observation fraîche. Métadonnées de cache sans prix relisible, puis erreurs répétées et HTTP 503 direct. Statut de marché inconnu ; état du 12/10 conservé dans l’historique. Nouvelle tentative le 26/10/2026 : HTTP 502, statut de marché inconnu, aucun prix reconduit."
    },
    {
      "ids": [
        "E20261012-SI244DAM"
      ],
      "label": "SI244DAM — non relue le 19/10/2026",
      "alert": "Prix non reconduit en observation fraîche. Statut de marché inconnu ; état du 12/10 conservé dans l’historique. Nouvelle tentative le 26/10/2026 : délai d’attente dépassé, statut de marché inconnu, aucun prix reconduit."
    }
  ],
  "historical_yield_box": {
    "sale_id": "NOTION-27",
    "rent_id": "NOTION-48",
    "title": "Encadré historique — SI65, bureau « vendu loué » à Nassim (relevé du 23/09/2026)",
    "caveat": "Rendement brut facial calculé à partir d’un prix demandé et d’un loyer contractuel affirmés par le vendeur dans une annonce de vente. Bail, quittances, fiscalité (HT/TTC), charges et parking non vérifiés ; l’annonce n’est plus accessible. Ce chiffre n’est ni un indice actuel, ni un rendement de quartier, ni un bail confirmé.",
    "observed_at": "2026-09-23",
    "asking_price_mad": 845000,
    "claimed_monthly_rent_mad": 5670,
    "claimed_annual_rent_mad": 68040,
    "gross_yield_claimed_pct": 8.05,
    "verified": false,
    "is_current_index": false
  },
  "update_summary": {
    "previous_edition": "2026-10-19",
    "counts": {
      "previous_fresh": 28,
      "attempted": 28,
      "reread": 28,
      "failed_after_retry": 0,
      "reused_reverified": 0,
      "new_assets": 7,
      "fresh_total": 35,
      "fresh_eligible": 13,
      "previous_fresh_eligible": 9,
      "historical_total": 121,
      "price_changes": 0,
      "recovery_attempted": 4,
      "recovered_from_historical": 0,
      "recovery_failed_after_retry": 4,
      "attempted_total_existing": 32,
      "surface_changes": 0,
      "new_listings": 7,
      "new_distinct_assets": 6,
      "suspected_duplicates": 1,
      "deduplicated_rebroadcasts": 1,
      "non_admitted_listings": 2
    },
    "changes_url": "https://broker.ma/observatoire/casablanca/2026-10-26/changes.json",
    "access_checks_url": "https://broker.ma/observatoire/casablanca/2026-10-26/access-checks.json"
  },
  "comparability_policy": {
    "effective_from": "2026-10-19",
    "excluded_common_aggregates": [
      "OA420",
      "SI300",
      "SI468VAL"
    ],
    "statement": "Politique plus prudente appliquée à compter du 19/10/2026 uniquement : TTC isolé, syndic/TSC inclus non ventilés exclus, terrasse sans valorisation distincte exclue. Reclassements d’éligibilité sans changement de prix."
  }
}
