Schema LocalBusiness : créer un balisage local fiable sans surpromesse
Le type Schema.org LocalBusiness permet de décrire une entreprise locale dans un format lisible par les machines : nom, adresse, téléphone, URL, horaires et catégorie. Il aide un moteur à interpréter les informations déjà présentes, mais ne crée ni établissement, ni contenu local, ni droit à un résultat enrichi. Ce guide traite exclusivement du balisage JSON-LD. L’optimisation de la fiche Google, les pages « métier + ville » et la conversion d’une page service restent des intentions séparées.
1. Comprenez ce que LocalBusiness dit — et ce qu’il ne fait pas
Schema.org fournit un vocabulaire partagé. LocalBusiness est un sous-type d’Organization et de Place : il sert à décrire une organisation qui possède une dimension locale. Google documente ce type pour communiquer l’adresse, les horaires, des départements et d’autres propriétés. Le code n’est pas un texte caché destiné à répéter des mots-clés ; c’est une représentation structurée des faits accessibles sur la page.
Google précise que le balisage peut rendre une page éligible à certaines présentations, sans garantir qu’elles apparaîtront. L’algorithme, la requête, la qualité du site, les politiques et la disponibilité de la fonctionnalité interviennent. Une validation verte signifie que la syntaxe et les propriétés requises sont reconnues ; elle ne signifie pas que la page sera mieux classée ou qu’un panneau local sera créé.
Le balisage ne remplace pas la gestion d’une fiche Google Business Profile. Il ne rend pas éligible une adresse virtuelle, ne vérifie pas un établissement et ne corrige pas une fiche suspendue. Il complète aussi le contenu visible du site, lequel doit déjà répondre à l’utilisateur. Avant le code, assurez-vous que le projet suit la checklist d’un site professionnel.
2. Placez l’entité sur la page qui la décrit réellement
Google indique que LocalBusiness peut être ajouté à toute page, tout en recommandant une page contenant les informations de l’entreprise. Pour une TPE mono-établissement, la page de contact ou une page « À propos » complète convient souvent. Pour plusieurs implantations, chaque page établissement porte son entité locale. La page d’accueil peut décrire l’organisation ou le siège selon le contenu visible, mais elle ne doit pas déclarer artificiellement toutes les adresses.
Choisissez une URL canonique, publique et indexable. La page doit afficher au minimum le nom et l’adresse utilisés dans le code, ainsi que les coordonnées utiles. Si l’adresse est volontairement masquée parce que l’activité se déplace chez le client, n’ajoutez pas une adresse privée invisible uniquement pour remplir une propriété. Le balisage doit rester cohérent avec la politique de confidentialité et la représentation publique de l’activité.
Évitez d’injecter un LocalBusiness complet sur chaque article de blog et chaque page de service sans raison. La répétition n’ajoute pas d’établissements et complique la maintenance. Une entité correctement identifiée peut être référencée depuis les autres graphes du site. Si le CMS duplique automatiquement le balisage, vérifiez qu’il n’entre pas en conflit avec une extension SEO ou un thème.
La page doit enfin avoir une intention humaine autonome. Pour les zones réellement servies, suivez le guide sur le SEO local « métier + ville » au lieu de créer une entité LocalBusiness par commune.
3. Choisissez le sous-type le plus précis sans inventer une profession
Schema.org propose LocalBusiness puis des sous-types actuels comme Store, Restaurant, Electrician, Plumber, Locksmith ou DaySpa. Google recommande le sous-type le plus précis disponible. Le type générique ProfessionalService est déprécié par Schema.org : ne le choisissez plus pour un nouveau balisage. Parcourez la hiérarchie officielle et sélectionnez le type qui décrit réellement l’activité principale de l’établissement ; à défaut de sous-type adapté, utilisez LocalBusiness sans inventer une profession. N’utilisez pas un restaurant pour un traiteur sans salle uniquement parce que le résultat vous paraît plus attractif.
Une entreprise peut relever de plusieurs types. La documentation Google accepte un tableau de types pour certains cas et donne l’exemple d’une activité cumulant Electrician, Plumber et Locksmith. Utilisez cette possibilité seulement si les activités sont réellement exercées et visibles. Google précise que plusieurs types s’indiquent dans ce tableau et que la propriété additionalType n’est pas acceptée : ne suivez pas un tutoriel ancien qui la recommande.
Ne confondez pas le type Schema.org avec la catégorie Google Business Profile, le code APE ou l’objet social. Ces référentiels ont des finalités différentes. Le guide sur les identifiants SIREN, SIRET, RNE et code APE montre déjà qu’un code administratif ne résume pas toute l’activité ou le service proposé.
| Situation | Point de départ possible | Contrôle nécessaire |
|---|---|---|
| Commerce physique | Store ou sous-type de magasin | Le sous-type correspond-il au commerce réel ? |
| Restaurant ouvert au public | Restaurant | Adresse, cuisine et horaires sont-ils visibles ? |
| Artisan électricien | Electrician | L’activité est-elle réellement proposée ? |
| Service professionnel local | Sous-type actuel pertinent, sinon LocalBusiness | Le type est-il actuel et réellement adapté ? |
| Plusieurs activités | Tableau de types admis | Chaque activité est-elle prouvée sur la page ? |
4. Préparez une source de vérité avant d’écrire le JSON
Listez le nom public, l’URL canonique, un identifiant stable, l’adresse, les coordonnées géographiques si elles sont justifiées, le téléphone, les horaires, les images, la gamme de prix lorsqu’elle apporte une information, et les profils officiels. Déterminez qui valide chaque valeur. Les données structurées ne doivent pas être maintenues dans un fichier isolé que l’équipe locale ignore.
Le nom correspond à celui présenté au public, sans slogan ni liste de villes. Google décrit le téléphone comme le numéro « censé être le mode de contact principal des clients » : indiquez la ligne que vos clients composent réellement, au format international (+33…). Un numéro de suivi réservé à une campagne n’a pas sa place dans ce balisage durable ; le guide du call tracking en TPE et de ses effets sur la présence locale détaille ce risque. L’URL pointe vers la page de l’établissement, pas une redirection de campagne. L’image doit être accessible, représentative et utilisable par l’entreprise.
L’adresse est un objet PostalAddress. Renseignez streetAddress, addressLocality, postalCode et addressCountry, ainsi que la région lorsque c’est pertinent. Ne mélangez pas le complément d’adresse avec une accroche marketing. Les coordonnées geo doivent pointer le lieu réel, pas le centre de la ville ou une zone commerciale plus connue ; Google demande au moins cinq décimales pour la latitude et la longitude.
Les liens sameAs peuvent identifier des profils officiels qui représentent bien la même entité. Ne les utilisez pas comme catalogue de citations ou de partenaires. Une page d’annuaire incontrôlée n’est pas forcément une identité officielle. Vérifiez régulièrement que chaque URL fonctionne et appartient encore à l’entreprise.
5. Construisez un JSON-LD minimal avant d’ajouter des propriétés
Google recommande généralement JSON-LD pour sa facilité de maintenance. Le bloc est placé dans un élément script de type application/ld+json, dans le head ou le body selon l’architecture. Commencez avec le contexte Schema.org, le type précis, un identifiant, le nom, l’URL, le téléphone et l’adresse. Google indique actuellement name et address comme propriétés requises pour son utilisation LocalBusiness, puis liste d’autres propriétés recommandées.
L’identifiant @id peut être une URL stable suivie d’un fragment, par exemple l’URL de la page établissement avec « #localbusiness ». Il ne doit pas forcément correspondre à une page distincte ; il sert à reconnaître l’entité dans le graphe. Réutilisez exactement le même identifiant lorsque d’autres objets décrivent cette entreprise. Ne changez pas l’@id à chaque refonte visuelle.
{
"@context": "https://schema.org",
"@type": "Electrician",
"@id": "https://exemple.fr/etablissements/nantes#localbusiness",
"name": "Exemple Électricité",
"url": "https://exemple.fr/etablissements/nantes",
"telephone": "+33200000000",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 rue Exemple",
"postalCode": "44000",
"addressLocality": "Nantes",
"addressCountry": "FR"
}
}
Cet exemple est fictif et ne doit pas être copié tel quel. Remplacez chaque valeur par un fait visible, contrôlé et propre à l’établissement. Ajoutez progressivement image, geo, openingHoursSpecification ou priceRange. Une propriété utile et fiable vaut mieux qu’un graphe très long rempli de données approximatives.
Exemple complété avec coordonnées et horaires
Une fois les données vérifiées, le même établissement fictif peut ajouter ses coordonnées géographiques et ses horaires, à condition qu’ils soient affichés sur la page :
{
"@context": "https://schema.org",
"@type": "Electrician",
"@id": "https://exemple.fr/etablissements/nantes#localbusiness",
"name": "Exemple Électricité",
"url": "https://exemple.fr/etablissements/nantes",
"telephone": "+33200000000",
"address": {
"@type": "PostalAddress",
"streetAddress": "10 rue Exemple",
"postalCode": "44000",
"addressLocality": "Nantes",
"addressCountry": "FR"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 47.21837,
"longitude": -1.55362
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "12:00"
}
]
}
Cas d’un artisan sans local ouvert au public
Beaucoup d’artisans interviennent chez leurs clients et masquent leur adresse sur leur fiche Google. Google exige pourtant la propriété address et la décrit comme l’adresse physique de l’établissement, en demandant d’inclure « autant de propriétés que possible ». Sa documentation ne traite pas le cas d’une adresse masquée. Deux choix restent cohérents : ne pas publier de LocalBusiness tant que l’adresse n’est pas publique, ou limiter l’adresse à la commune, au code postal et au pays déjà visibles sur la page. Dans ce second cas, l’outil de test peut signaler la rue manquante et Google peut ne pas exploiter le balisage.
Schema.org prévoit aussi la propriété areaServed, héritée d’Organization, pour décrire la zone desservie ; Google ne la documente pas pour LocalBusiness. Exemple fictif :
{
"@context": "https://schema.org",
"@type": "Plumber",
"@id": "https://exemple.fr/#localbusiness",
"name": "Exemple Plomberie",
"url": "https://exemple.fr/",
"telephone": "+33200000000",
"address": {
"@type": "PostalAddress",
"postalCode": "35000",
"addressLocality": "Rennes",
"addressCountry": "FR"
},
"areaServed": ["Rennes", "Cesson-Sévigné", "Saint-Grégoire"]
}
Côté fiche Google, les règles de l’adresse masquée sont différentes : suivez le guide pour masquer l’adresse et définir une zone desservie réaliste.
Si le CMS produit déjà Organization, WebSite ou BreadcrumbList, reliez les objets au lieu de créer plusieurs entreprises concurrentes. Inspectez le code HTML rendu, pas seulement l’éditeur. Deux extensions peuvent générer chacune un LocalBusiness avec des noms ou adresses différents sans que l’utilisateur le voie.
6. Encodez les horaires comme des données opérationnelles
openingHoursSpecification associe un ou plusieurs jours à une heure d’ouverture et de fermeture. Utilisez un format horaire valide et regroupez les jours qui partagent exactement les mêmes plages. Pour une fermeture complète, la documentation Google montre opens et closes à 00:00. Pour un établissement ouvert toute la journée, elle documente 00:00 à 23:59. Vérifiez la convention actuelle avant chaque implémentation.
Les horaires saisonniers peuvent utiliser validFrom et validThrough. Ils conviennent à une période connue ; ils ne remplacent pas une mise à jour de dernière minute. Si les horaires visibles sur la page changent, le JSON-LD doit changer en même temps. Évitez un calendrier manuel séparé qui finit par diverger.
Une activité uniquement sur rendez-vous ne doit pas annoncer une disponibilité publique continue si ce n’est pas vrai. Expliquez le fonctionnement dans le contenu visible, puis ne balisez que ce que le vocabulaire décrit sans ambiguïté. Une donnée structurée n’est pas l’endroit pour détailler toutes les règles de réservation.
Le téléphone, les horaires et le parcours de contact influencent l’expérience réelle. Si l’équipe ne peut pas répondre en continu, organisez le rappel grâce aux méthodes de délai de réponse annoncé et de politique de rappel en équipe, sans afficher une disponibilité fictive.
7. Créez une entité distincte pour chaque établissement réel
Google demande de définir chaque emplacement comme un type LocalBusiness. Sur un réseau, chaque page établissement porte son propre @id, son adresse, son téléphone, ses horaires et son URL. La marque ou l’organisation commune peut être décrite séparément puis reliée selon le modèle choisi. Ne placez pas toutes les adresses dans un seul objet LocalBusiness comme s’il s’agissait d’un même lieu.
Un département peut utiliser la propriété department lorsqu’il possède des caractéristiques distinctes, comme des horaires ou un numéro propres. La documentation Google donne l’exemple d’une pharmacie dans un magasin et prévoit des règles de nommage. N’utilisez pas department pour transformer chaque service commercial en établissement indépendant.
Le balisage suit l’architecture, il ne la décide pas. Construisez d’abord les pages et la gouvernance avec le guide du SEO local multi-établissements. Ensuite seulement, associez une entité par page. Si un lieu ferme ou déménage, traitez l’URL et la fiche avant de mettre à jour le JSON-LD.
8. Validez la syntaxe, l’éligibilité et le rendu réellement indexable
Le test des résultats enrichis de Google indique si le balisage est reconnu pour les fonctionnalités prises en charge et signale erreurs et avertissements. Le validateur Schema.org contrôle plus largement le vocabulaire. Utilisez les deux : un code peut être valide selon Schema.org mais non exploité par une fonctionnalité Google, ou contenir une propriété supportée avec un format incorrect.
Corrigez toutes les erreurs critiques. Pour les avertissements, demandez si la propriété manque réellement ou ne s’applique pas à votre activité. N’inventez jamais une gamme de prix, une image ou des coordonnées pour obtenir un voyant vert. Contrôlez aussi la page avec l’inspection d’URL de Search Console, car un code ajouté par JavaScript peut ne pas apparaître comme prévu dans le HTML rendu.
Déployez d’abord sur une ou deux pages. Testez l’URL publiée, pas seulement un extrait collé dans l’outil. Comparez les valeurs structurées avec le contenu visible, le canonical et la fiche locale. Soumettez le sitemap existant selon le processus normal ; la présence d’un balisage ne justifie pas de demander manuellement l’indexation de toutes les pages.
9. Écartez les raccourcis qui fragilisent la confiance
Ne balisez pas une adresse invisible ou fictive, un service non proposé, un horaire théorique, un numéro de campagne périmé ou une ville simplement desservie. N’utilisez pas le champ name comme liste de mots-clés. Les données doivent représenter le contenu principal et être à jour. Google peut ignorer le balisage ou appliquer une action manuelle lorsqu’il enfreint les règles.
Soyez particulièrement prudent avec review et aggregateRating. La documentation LocalBusiness de Google précise que la note agrégée est recommandée pour les sites qui recueillent des avis sur d’autres entreprises. Les avis « auto-hébergés » par l’entreprise à propos d’elle-même ne sont pas éligibles aux étoiles de type LocalBusiness ou Organization selon les règles de snippets d’avis.
En juillet 2026, Google a encore ajouté à ces règles une consigne sur les avis faux et les avis incités non signalés. N’ajoutez pas des avis invisibles, déplacés ou provenant d’une autre agence. Pour afficher des avis sur votre propre site sans enfreindre ces règles, suivez la checklist pour publier des avis clients sur son site.
Ne confondez pas erreur de validation et problème SEO général. Une page peut ne pas recevoir de trafic malgré un JSON-LD parfait parce qu’elle ne répond pas à une demande, n’est pas maillée ou duplique une autre page. À l’inverse, une page utile peut être indexée sans données structurées. Le code clarifie ; il ne remplace pas la proposition éditoriale.
| Erreur | Risque | Correction |
|---|---|---|
| Deux objets contradictoires | Entité ambiguë | Identifier la source qui génère chaque bloc |
| Adresse non visible | Décalage avec la page | Aligner contenu public et balisage |
| Type trop large ou faux | Interprétation imprécise | Choisir le sous-type réel le plus précis |
| Horaires anciens | Information client trompeuse | Utiliser une source commune et datée |
| Notes auto-déclarées | Inéligibilité ou violation | Respecter les règles des snippets d’avis |
| Une entité par ville ciblée | Faux établissements | Une entité seulement par implantation réelle |
10. Reliez la maintenance aux événements de l’entreprise
Créez une checklist déclenchée par un changement d’adresse, de téléphone, d’horaire, de nom, de site, de catégorie ou d’établissement. La même demande met à jour le contenu visible, le JSON-LD, la fiche locale et les supports essentiels. Conservez la date, la personne qui valide et les URL testées.
Une fois par trimestre, explorez quelques pages avec le test des résultats enrichis et le validateur Schema.org. Surveillez les rapports Search Console disponibles sans conclure qu’une absence de rapport signifie une pénalité. Les fonctionnalités et propriétés reconnues évoluent ; revenez à la documentation officielle avant d’ajouter une propriété suggérée par un plugin. Si vous gérez plusieurs fiches et pages, certains outils signalent les coordonnées incohérentes d’un annuaire à l’autre : voyez notre comparatif des outils de SEO local pour TPE.
Documentez enfin la propriété du code. Le prestataire peut implémenter, mais l’entreprise doit savoir où se trouve le modèle, quelles données l’alimentent et comment le désactiver en cas de conflit. Lors d’un changement de CMS, incluez les données structurées dans le plan de migration et de recette.
Sources officielles et primaires : Google Search Central — données structurées LocalBusiness ; Google Search Central — règles générales des données structurées ; Schema.org — définition et propriétés de LocalBusiness ; Schema.org — dépréciation de ProfessionalService ; Google — test des résultats enrichis ; Schema.org — validateur officiel ; Schema.org — propriété areaServed ; Google Search Central — derniers changements de la documentation. Consultées le 3 août 2026, puis le 29 septembre 2026 pour les propriétés address, telephone et geo, le refus d’additionalType, areaServed et la consigne de juillet 2026 sur les avis. Les propriétés prises en charge et les présentations de résultats peuvent évoluer ; aucune donnée structurée ne garantit un résultat enrichi ni une position.
Questions fréquentes
LocalBusiness améliore-t-il automatiquement le classement local ?
Non. Il aide à décrire des faits dans un format structuré. Google ne garantit ni résultat enrichi, ni panneau local, ni hausse de position après l’ajout.
Où faut-il placer le JSON-LD ?
Dans un bloc application/ld+json du head ou du body, sur une page qui présente réellement l’entité. Vérifiez surtout le HTML rendu et l’absence de bloc concurrent généré par un autre outil.
Faut-il baliser toutes les pages du site ?
Pas avec un objet local complet répété sans nécessité. Placez l’entité sur la page entreprise ou établissement appropriée et reliez proprement les objets du graphe lorsque l’architecture le permet.
Comment baliser une entreprise sans adresse publique ?
Google exige une adresse et ne documente pas ce cas. Soit vous attendez d’avoir une adresse publique, soit vous limitez l’adresse à la commune, au code postal et au pays visibles sur la page, sans rue. La zone desservie peut être décrite avec areaServed, sans garantie d’usage par Google.
Peut-on baliser plusieurs villes desservies comme plusieurs établissements ?
Non. Une commune ciblée n’est pas une implantation. Chaque LocalBusiness local doit représenter un établissement réel ; les zones desservies se décrivent dans le contenu et les mécanismes adaptés.
Pourquoi le test est-il vert mais aucun résultat enrichi n’apparaît ?
La validation indique seulement que le code reconnu respecte les exigences contrôlées. L’affichage reste une décision du moteur et dépend aussi de la page, de la requête, des politiques et de la disponibilité du format.
En résumé
Un bon Schema LocalBusiness est court, exact et maintenable. Il décrit l’entité visible sur la page, choisit le type le plus précis, utilise une identité stable et traite chaque établissement réel séparément. Les validateurs contrôlent la syntaxe et l’éligibilité technique, jamais la véracité ni un gain de classement. La maintenance doit suivre chaque changement opérationnel.
Découvrez Rappli
Après un appel manqué renvoyé vers Rappli, votre client peut recevoir automatiquement un SMS, si son numéro et vos réglages le permettent. Choisissez « SMS avec formulaire » pour recueillir sa demande, ou « SMS personnalisé » pour partager votre texte et vos liens utiles.
Essayer Rappli gratuitement Jusqu’à 30 jours (30 SMS avec formulaire ou 100 SMS personnalisé), sans engagement. Moyen de paiement demandé à l’inscription. Détails de l’essai.