Blog

Local Schema Markup: 4 Types Específicos Para Aparecer No Mapa

Notebook MacBook com código HTML no editor em tela, em ambiente escuro

Para aparecer no mapa do Google e no Local Pack, sua empresa precisa de quatro tipos específicos de schema markup. São eles: LocalBusiness, PostalAddress, GeoCoordinates e OpeningHoursSpecification. Juntos, eles dizem ao buscador quem você é, onde fica, em quais coordenadas e quando atende.

Esses códigos transformam dados ambíguos em sinais que a máquina entende. Eles alimentam o Google Maps, o Local Pack e as respostas de IA. É essa estrutura que decide se você aparece no mapa ou não.

Usar só o LocalBusiness genérico entrega ao Google metade da informação. Os três tipos complementares são o que falta para gerar confiança de localização. Aqui você vê cada um com código real, validação e exemplos.

O que é local schema markup

Local Schema Markup é um conjunto de dados estruturados do vocabulário Schema.org. Ele descreve um negócio local de um jeito que algoritmos leem sem ambiguidade. O objetivo é eliminar qualquer dúvida sobre onde você está.

Um texto na página diz "Atendemos na Avenida Paulista". O schema diz "streetAddress": "Avenida Paulista, 1000" dentro de um objeto tipado. Essa diferença separa um site invisível de um negócio que aparece no Local Pack.

O schema não é um fator de ranqueamento isolado. Ele é o mecanismo de desambiguação que liga sua entidade às buscas com localização. O Google favorece quem tem sinais explícitos e validáveis.

A diferença entre schema markup e Google Business Profile

Existe uma confusão comum que precisa ser resolvida aqui. O Google Business Profile é o perfil cadastrado na plataforma do Google. O Local Schema Markup é o código que vive no seu próprio site.

Os dois não competem. Quando os dados do site batem com os do Business Profile, o Google ganha confiança cruzada na sua entidade. Essa consistência é um dos sinais mais subestimados do SEO local.

A tabela abaixo separa os papéis.

Elemento Onde vive Função principal Controle
Google Business Profile Plataforma do Google Exibe ficha no Maps e Local Pack Cadastro manual
Local Schema Markup Código do seu site Desambigua a entidade para o crawler Total, no seu HTML
NAP (Name, Address, Phone) Site, perfis, diretórios Consistência de citação Exige auditoria

A regra de ouro é a consistência NAP. Nome, endereço e telefone do schema têm que ser idênticos aos do Business Profile e das citações externas. Uma diferença entre "Av." e "Avenida" já dilui a confiança da entidade.

Por que quatro tipos e não apenas um

A pergunta é direta. Se existe o LocalBusiness, por que ele não basta? A resposta está na arquitetura aninhada do Schema.org.

O LocalBusiness é o objeto-pai. Ele depende de propriedades tipadas para carregar os dados que importam para o mapa. Sem elas, a entidade fica incompleta.

Endereço não é uma string solta, é um objeto PostalAddress. Coordenadas não são texto, são um objeto GeoCoordinates. Horário não é uma frase, é um objeto OpeningHoursSpecification.

Cada tipo responde a uma pergunta do framework 5W2H aplicado à localização. O LocalBusiness responde quem é o negócio. O PostalAddress responde onde ele fica.

O GeoCoordinates responde a posição exata em latitude e longitude. O OpeningHoursSpecification responde quando o negócio atende. Sem os quatro juntos, o Google recebe uma entidade incompleta.

Entidade incompleta gera baixa confiança de localização. Isso vira menos aparições no Local Pack e posições piores no Maps. Por isso os quatro formam um sistema, não uma escolha.

LocalBusiness schema: o tipo 1 e a base de tudo

O LocalBusiness é o objeto-pai do seu markup local. Ele declara que aquela página representa um negócio físico que atende em um local. Todos os outros três tipos ficam aninhados dentro dele.

O grande erro aqui é usar LocalBusiness puro quando existe um tipo mais específico. O Schema.org tem subtipos como Restaurant, Dentist, Plumber e HVACBusiness. Quanto mais específico o tipo, mais clara fica a entidade para o Google.

A escolha do @type certo é um sinal de relevância. Um dentista que usa "@type": "Dentist" entrega contexto que LocalBusiness genérico não entrega. Essa precisão ajuda o Google a casar você com buscas da sua categoria.

Propriedades obrigatórias do LocalBusiness

Três propriedades formam o núcleo inegociável. São name, address e telephone. Sem elas, o markup não cumpre sua função local.

O name é o nome exato do negócio. O address recebe o objeto PostalAddress. O telephone usa o formato internacional, com código do país.

Além delas, url, image e priceRange fortalecem a ficha. O image deve apontar para uma URL de imagem real. O priceRange aceita faixas como "$$" ou valores em reais.

Exemplo de LocalBusiness em JSON-LD

O JSON-LD é o formato recomendado pelo Google. Ele fica isolado num bloco <script> e não se mistura ao HTML visível. Isso facilita manutenção e reduz erros de implementação.

HTML
<script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Plumber",
        "name": "Hidráulica Floripa Express",
        "image": "https://hidraulicafloripa.com.br/logo.jpg",
        "url": "https://hidraulicafloripa.com.br",
        "telephone": "+554833334444",
        "priceRange": "R$ 150 - R$ 800",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "Rua das Palmeiras, 250",
          "addressLocality": "Florianópolis",
          "addressRegion": "SC",
          "postalCode": "88010-000",
          "addressCountry": "BR"
        }
      }
      </script>

Repare que o address não é texto. Ele abre um objeto PostalAddress completo. É esse aninhamento que o Google espera ver.

PostalAddress schema: o tipo 2 e o endereço que a máquina entende

O PostalAddress quebra o endereço em campos separados. Em vez de uma linha única, cada parte ganha sua própria propriedade. Isso elimina a ambiguidade que trava o ranqueamento local.

Um endereço escrito como "Rua das Palmeiras 250 Floripa SC" obriga o Google a adivinhar onde termina a rua e começa a cidade. O PostalAddress entrega tudo mastigado. A máquina não precisa interpretar nada.

As cinco propriedades essenciais

O endereço completo se divide em cinco campos principais. Cada um responde a uma camada da localização. Juntos, eles formam um endereço sem brechas.

Propriedade O que representa Exemplo
streetAddress Rua e número Rua das Palmeiras, 250
addressLocality Cidade Florianópolis
addressRegion Estado ou UF SC
postalCode CEP 88010-000
addressCountry País em código ISO BR

O addressCountry usa o padrão ISO 3166-1. Para o Brasil, é BR, não "Brasil". Esse detalhe técnico evita erros de validação.

O erro de consistência que derruba o markup

O PostalAddress precisa bater com o NAP do site inteiro. Se o rodapé diz "Av. das Palmeiras" e o schema diz "Avenida das Palmeiras", o Google percebe o conflito. Essa divergência reduz a confiança na entidade.

A solução é padronizar o endereço em uma única forma. Defina a versão oficial e replique em todos os lugares. Site, schema, Business Profile e diretórios precisam falar a mesma língua.

Um cenário real ilustra o impacto. Uma clínica em Florianópolis tinha o CEP errado no schema e o correto no Google. O conflito segurou a ficha fora do Local Pack até a correção, que levou cerca de duas semanas para refletir.

PostalAddress aninhado no LocalBusiness

O PostalAddress raramente vive sozinho. Ele entra como valor da propriedade address dentro do LocalBusiness. Essa é a estrutura correta que o Google documenta.

JSONschema.org
"address": {
        "@type": "PostalAddress",
        "streetAddress": "Rua das Palmeiras, 250",
        "addressLocality": "Florianópolis",
        "addressRegion": "SC",
        "postalCode": "88010-000",
        "addressCountry": "BR"
      }

Note que o objeto sempre declara seu próprio @type. Isso vale para todos os tipos aninhados. Sem o @type, o validador não reconhece o objeto.

GeoCoordinates schema: o tipo 3 e a posição exata no mapa

O GeoCoordinates entrega ao Google a posição geográfica precisa do negócio. Ele usa latitude e longitude, não palavras. É a diferença entre dizer "perto da praça" e cravar um ponto exato no mapa.

O PostalAddress diz o endereço, mas o Google ainda precisa convertê-lo em coordenadas. Esse processo se chama geocodificação. O GeoCoordinates pula essa etapa e entrega o ponto pronto.

Isso importa muito em buscas do tipo "perto de mim". O Google calcula proximidade usando coordenadas. Quanto mais exato o seu ponto, mais confiável fica o cálculo de distância até o usuário.

As duas propriedades centrais

O GeoCoordinates tem dois campos essenciais. São latitude e longitude. Ambos usam o formato decimal, não graus e minutos.

A latitude varia de -90 a 90. A longitude varia de -180 a 180. No Brasil, a maioria dos valores é negativa nas duas pontas.

Use pelo menos seis casas decimais. Cada casa decimal a mais aumenta a precisão em metros. Coordenadas curtas demais apontam para o quarteirão errado.

Como pegar as coordenadas corretas

O jeito mais simples é abrir o Google Maps. Clique com o botão direito sobre a porta exata do negócio. O primeiro número que aparece é a latitude, o segundo é a longitude.

Cuidado com o ponto e a vírgula. No JSON-LD, o separador decimal é sempre o ponto. Usar vírgula quebra a validação.

JSONschema.org
"geo": {
        "@type": "GeoCoordinates",
        "latitude": -27.595377,
        "longitude": -48.548050
      }

Esse objeto entra na propriedade geo do LocalBusiness. Assim como o endereço, ele declara o próprio @type. A estrutura aninhada se repete em todos os tipos.

O erro de coordenada que joga você para outra cidade

Trocar latitude por longitude é o erro mais comum. O resultado coloca o negócio no meio do oceano ou em outro país. O Google ignora ou desprioriza fichas com coordenadas impossíveis.

Um caso real mostra o estrago. Uma loja em Florianópolis inverteu os dois valores no schema. A ficha passou a sinalizar uma posição perto da África, e o negócio sumiu do Local Pack local por semanas.

A correção é simples mas exige conferência. Sempre teste a coordenada colando-a de volta no Google Maps. Se o pino não cair na sua porta, o valor está errado.

OpeningHoursSpecification schema: o tipo 4 e o quando do negócio

O OpeningHoursSpecification declara os horários de funcionamento de forma estruturada. Ele alimenta o selo "Aberto agora" no Maps. Esse selo influencia diretamente o clique do usuário.

Horário em texto solto não serve. O Google precisa saber, por dia, quando você abre e fecha. O OpeningHoursSpecification entrega isso em campos que a máquina lê na hora.

Esse tipo também responde a buscas com intenção temporal. Consultas como "aberto agora perto de mim" filtram por horário. Sem o markup, você fica de fora desse filtro.

As propriedades de horário

Três campos formam a base. São dayOfWeek, opens e closes. Cada bloco de horário vira um objeto separado.

Propriedade O que representa Exemplo
dayOfWeek Dia ou dias da semana Monday
opens Horário de abertura 08:00
closes Horário de fechamento 18:00

Os dias usam nomes em inglês. O horário usa o formato 24 horas. Sempre com dois dígitos, como 08:00 e não 8:00.

Como lidar com horários diferentes por dia

Um negócio raramente tem o mesmo horário todos os dias. A solução é criar vários objetos OpeningHoursSpecification. Cada bloco agrupa os dias que compartilham o mesmo horário.

O intervalo de almoço também tem regra. Se você fecha do meio-dia às 14h, crie dois blocos para o mesmo dia. Um da manhã e outro da tarde.

JSONschema.org
"openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
          "opens": "08:00",
          "closes": "18:00"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": "Saturday",
          "opens": "08:00",
          "closes": "12:00"
        }
      ]

Esse array entra na propriedade openingHoursSpecification do LocalBusiness. Os colchetes indicam que são vários objetos. O domingo, ausente do exemplo, é entendido como fechado.

O detalhe que mantém o selo "aberto agora" correto

Horário errado no schema gera frustração e penalidade indireta. O usuário chega achando que está aberto e encontra a porta fechada. Isso gera avaliações negativas e desconfiança.

Atualize o schema sempre que mudar o horário. Feriados e datas especiais pedem o campo extra validFrom e validThrough. Assim o Google sabe que aquele horário é temporário.

A consistência também vale aqui. O horário do schema precisa bater com o do Business Profile. Divergência entre os dois confunde o Google e enfraquece a ficha.

Como implementar os 4 tipos em um único bloco JSON-LD

Os quatro tipos não vivem separados. Eles se unem em um único bloco <script> dentro do LocalBusiness. Esse bloco é a entidade local completa que o Google espera ler.

O PostalAddress entra em address. O GeoCoordinates entra em geo. O OpeningHoursSpecification entra em openingHoursSpecification.

Coloque o bloco no <head> ou perto do fim do <body>. Use uma única instância por página de negócio. Duplicar o markup gera conflito de entidade.

HTML
<script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Plumber",
        "name": "Hidráulica Floripa Express",
        "image": "https://hidraulicafloripa.com.br/logo.jpg",
        "url": "https://hidraulicafloripa.com.br",
        "telephone": "+554833334444",
        "priceRange": "R$ 150 - R$ 800",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "Rua das Palmeiras, 250",
          "addressLocality": "Florianópolis",
          "addressRegion": "SC",
          "postalCode": "88010-000",
          "addressCountry": "BR"
        },
        "geo": {
          "@type": "GeoCoordinates",
          "latitude": -27.595377,
          "longitude": -48.548050
        },
        "openingHoursSpecification": [
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
            "opens": "08:00",
            "closes": "18:00"
          },
          {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": "Saturday",
            "opens": "08:00",
            "closes": "12:00"
          }
        ]
      }
      </script>

Esse é o markup final unificado. Ele responde quem, onde, em que ponto e quando. É a estrutura que sustenta sua presença no Local Pack e no Maps.

Como validar e testar o markup

Markup sem validação é aposta cega. Duas ferramentas resolvem isso. Elas mostram erros antes que o Google os encontre.

A primeira é o Schema Markup Validator do Schema.org. Ela confere se a sintaxe e os tipos estão corretos. A segunda é o Rich Results Test do Google.

O Rich Results Test mostra se o markup é elegível para recursos visuais. Cole a URL ou o código e rode o teste. Erros aparecem em vermelho, avisos em amarelo.

Depois da publicação, acompanhe no Google Search Console. O relatório de dados estruturados lista erros em escala. Ele revela problemas que só aparecem com o site indexado.

Erros comuns ao implementar local schema

A maioria das falhas se repete. Conhecer os erros economiza semanas de retrabalho. A tabela abaixo reúne os mais frequentes.

Erro Impacto Correção
Inverter latitude e longitude Negócio aparece em outra cidade ou país Testar o pino no Google Maps
NAP divergente entre site e schema Perda de confiança na entidade Padronizar nome, endereço e telefone
Vírgula como separador decimal Falha de validação do JSON Usar sempre ponto
Usar LocalBusiness genérico Menos contexto de categoria Escolher o subtipo específico
Markup duplicado na página Conflito de entidade Manter uma única instância
Horário desatualizado Selo "Aberto agora" errado Sincronizar com o Business Profile

Outro erro silencioso é o schema sem correspondência visual. O Google exige que o dado do markup também apareça na página. Marcar um endereço que não está visível viola as diretrizes.

Como o local schema conversa com AI Overviews e LLMs

Dados estruturados não servem só ao ranqueamento clássico. Eles facilitam a leitura por modelos de linguagem. Uma entidade bem marcada é mais fácil de citar e resumir.

O AI Overviews e assistentes de busca preferem fontes claras. Quando seus dados de localização são explícitos, a chance de citação aumenta. O schema reduz a ambiguidade que confunde a máquina.

Isso transforma o markup em ativo de autoridade. Você não otimiza só para a página de resultados. Você prepara sua entidade para a busca conversacional.

Perguntas frequentes

O que é local schema markup?

É um conjunto de dados estruturados do Schema.org que descreve um negócio local. Ele informa nome, endereço, coordenadas e horário de forma legível por máquina. O objetivo é aparecer no Maps e no Local Pack.

Quais são os 4 tipos para aparecer no mapa?

São LocalBusiness, PostalAddress, GeoCoordinates e OpeningHoursSpecification. O primeiro é o objeto-pai. Os outros três ficam aninhados dentro dele.

Schema markup melhora o ranqueamento local de fato?

Ele não é um fator de ranqueamento direto isolado. Mas é o mecanismo que desambigua sua entidade para o Google. Essa clareza aumenta a confiança e a frequência de aparição local.

JSON-LD ou microdata: qual usar?

O Google recomenda o JSON-LD. Ele fica isolado em um bloco de script e não se mistura ao HTML visível. Isso reduz erros e facilita a manutenção.

Preciso do Google Business Profile mesmo usando schema?

Sim, os dois são complementares. O Business Profile gera a ficha no Maps. O schema reforça os mesmos dados a partir do seu site.

Como pego as coordenadas corretas?

Abra o Google Maps e clique com o botão direito sobre a porta do negócio. O primeiro número é a latitude, o segundo é a longitude. Use pelo menos seis casas decimais.

O schema funciona para negócio com vários endereços?

Sim, cada local recebe sua própria página e seu próprio markup. Você cria um LocalBusiness por unidade. Nunca junte vários endereços no mesmo bloco.

Com que frequência devo atualizar o markup?

Atualize sempre que mudar endereço, telefone ou horário. Feriados pedem campos temporários de validade. Markup desatualizado prejudica a experiência e a confiança.

Posicionamento final: local schema como vantagem competitiva

A maioria dos concorrentes para no LocalBusiness genérico. Implementar os quatro tipos completos é o que separa quem aparece de quem fica invisível. A diferença está no detalhe técnico que poucos executam.

O schema bem feito alinha site, Business Profile e citações em uma só verdade. Essa consistência constrói confiança de entidade ao longo do tempo. É um ativo que compõe, não uma tarefa única.

Quem domina LocalBusiness, PostalAddress, GeoCoordinates e OpeningHoursSpecification controla os sinais que definem a presença no mapa. O próximo passo é validar seu markup atual e corrigir o que estiver faltando. A vantagem fica com quem trata dados estruturados como estratégia, não como detalhe.

Marcelo Menezes é consultor de SEO Local em Florianópolis e região, especializado em posicionamento orgânico no Google, SEO técnico e estratégias de busca local para empresas de Santa Catarina. Atua com internet desde 1996 e possui formação em Tecnologia em Processamento de Dados pela UNESA, concluída em 1998, acumulando décadas de experiência prática no mercado digital.

Também é um dos fundadores da PMTurbo, agência especializada em SEO e presença digital. Ao longo da trajetória profissional, participou de projetos de otimização para empresas de diferentes segmentos, desenvolvendo estratégias voltadas para aumento de visibilidade no Google, autoridade digital, tráfego qualificado e geração de oportunidades através da busca orgânica.