Schema markup: o que é e como implementar passo a passo

Resposta curta: schema markup são dados estruturados escritos com o vocabulário do schema.org. Dizem aos motores de busca, num formato fixo, o que está numa página: uma empresa, um artigo, um produto, um evento. A forma mais simples é adicioná-lo como um bloco JSON-LD no código, testá-lo no Rich Results Test do Google e acompanhá-lo na Search Console. Pode tornar uma página elegível para resultados enriquecidos, como preços, estrelas de avaliação ou caminhos de navegação, mas não os garante, e o Google retira formatos de tempos a tempos.
O que é schema markup?
O Google define dados estruturados como um formato normalizado que fornece informação sobre uma página e classifica o seu conteúdo (Google Search Central). O schema.org é o vocabulário comum para isso: uma lista de tipos como Organization, Product ou Event e de propriedades como name, price ou startDate. Quando se fala de schema SEO ou de dados estruturados para SEO, é quase sempre deste vocabulário dentro do código da página.
Há três formatos: JSON-LD, Microdata e RDFa. O Google aceita os três quando são válidos, mas recomenda JSON-LD (Google Search Central). O JSON-LD fica num bloco script separado do HTML visível, por isso é mais fácil de manter e de preencher automaticamente a partir do CMS. Os nomes dos tipos e propriedades ficam sempre em inglês, porque fazem parte do vocabulário schema.org.
Porque é que os dados estruturados importam para o SEO e a pesquisa com IA?
Segundo o Google, os dados estruturados servem para duas coisas: ajudam a perceber o conteúdo da página e podem torná-la elegível para resultados enriquecidos, ou seja, resultados com informação ou elementos adicionais (Google Search Central). O Google não promete por isso uma melhor posição. Há três limites a ter em conta:
- Não há garantia. O Google diz expressamente que não garante que os dados estruturados apareçam nos resultados, mesmo com a marcação correta (Google Search Central).
- As propriedades obrigatórias decidem. Se faltarem, a página não é elegível para esse resultado enriquecido (Google Search Central).
- Só contam os formatos suportados. Os resultados enriquecidos existem apenas para as funcionalidades da galeria do Google (Google Search Central). Outros tipos schema.org são permitidos, mas não mudam o aspeto do seu resultado.
E a pesquisa com IA? Para as AI Overviews e o Modo IA, o Google afirma que não são precisos novos ficheiros legíveis por máquinas nem dados estruturados schema.org especiais. Entre as boas práticas está garantir que os dados estruturados correspondem ao texto visível da página (Google Search Central).
A nossa opinião, que não é uma regra documentada: uma marcação limpa não prejudica, porque fixa sem ambiguidade o nome, a morada, os preços e os autores. Mas o trabalho de fundo é feito pelo conteúdo visível; a marcação deve apenas confirmá-lo.
De que tipos de schema precisa uma empresa?
| Tipo | Onde fica | O que descreve |
|---|---|---|
| Organization | Página inicial ou "Quem somos" | Nome, logótipo, contactos, NIF e perfis noutros sites. Ajuda o Google a escolher o logótipo que mostra (Google). |
| LocalBusiness (ou um subtipo) | Página de cada loja ou escritório | Morada, horário, telefone e coordenadas de cada local (Google). |
| Article / BlogPosting | Blogue, guias, notícias | Título, datas, imagem e autor (Google). |
| BreadcrumbList | Páginas interiores | Onde a página está na estrutura do site (Google). |
| Product | Páginas de produto | Nome, preço, disponibilidade e avaliações (Google). |
Use sempre o tipo mais concreto: o Google recomenda os tipos e propriedades mais específicos que o schema.org define (Google Search Central). Para uma empresa de canalizações isso é Plumber em vez de LocalBusiness; para uma clínica dentária, Dentist. Num negócio local, alinhe a marcação LocalBusiness com o Perfil da Empresa no Google, como explicamos em o que é SEO local.
Como implementar schema markup com JSON-LD?
Tecnicamente, adiciona-se um bloco script type="application/ld+json" no head ou no body da página. Na prática, funciona melhor por esta ordem:
- Faça o inventário dos tipos de página: inicial, localizações, serviços, artigos, produtos.
- Atribua um tipo de schema a cada um e anote as propriedades obrigatórias na documentação do Google.
- Coloque a marcação no modelo da página para que se preencha sozinha. Muitos CMS e plugins de SEO geram os tipos básicos.
- Teste, publique e acompanhe na Search Console.
Os exemplos são de uma empresa de canalizações fictícia no Porto. Substitua cada valor pelos seus e inclua apenas dados que também estejam na página. O Google pede que a marcação fique na página que descreve (Google Search Central).
Organization
Organization não tem propriedades obrigatórias. O Google recomenda adicionar todas as que se aplicam e destaca o número de IVA (vatID) como sinal de confiança. Fica na página inicial ou numa página sobre a empresa, não em todas (Google Search Central).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Canalizações Ferreira, Lda.",
"url": "https://www.example.pt/",
"logo": "https://www.example.pt/img/logotipo.png",
"telephone": "+351 220 123 456",
"vatID": "PT123456789",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://www.facebook.com/example"
]
}
</script>LocalBusiness
São obrigatórias name e address. Recomendam-se, entre outras, o telefone com indicativo do país, o URL do local, o horário e coordenadas com pelo menos cinco casas decimais (Google Search Central). Cada local tem o seu próprio bloco na sua própria página.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Canalizações Ferreira",
"url": "https://www.example.pt/porto",
"telephone": "+351 220 123 456",
"address": {
"@type": "PostalAddress",
"streetAddress": "Rua de Santa Catarina, 120",
"addressLocality": "Porto",
"postalCode": "4000-447",
"addressCountry": "PT"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 41.14780,
"longitude": -8.60590
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}]
}
</script>Article ou BlogPosting
Não há propriedades obrigatórias. Recomendam-se título, imagem, datas de publicação e de alteração, e autor. Cada autor tem uma entrada própria com url para a sua página de perfil (Google Search Central).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Como escolher um esquentador para um T1",
"image": ["https://www.example.pt/img/guia-esquentador.jpg"],
"datePublished": "2026-10-01T09:00:00+01:00",
"dateModified": "2026-10-20T14:30:00+01:00",
"author": [{
"@type": "Person",
"name": "Inês Ferreira",
"url": "https://www.example.pt/equipa/ines-ferreira"
}]
}
</script>BreadcrumbList
A lista precisa de pelo menos dois elementos. O último pode omitir item; nesse caso o Google usa o URL da página atual (Google Search Central).
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Serviços",
"item": "https://www.example.pt/servicos"
}, {
"@type": "ListItem",
"position": 2,
"name": "Instalação de esquentadores"
}]
}
</script>Product
Um fragmento de produto precisa de name e ainda de review, aggregateRating ou offers. Para fragmentos de produto, priceCurrency é recomendado (Google Search Central). Faça com que o preço da marcação venha do mesmo dado que o preço visível.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Torneira termostática de duche",
"image": "https://www.example.pt/img/torneira-termostatica.jpg",
"description": "Torneira termostática de parede para duche, com limitador de temperatura.",
"offers": {
"@type": "Offer",
"price": "79.90",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
}
}
</script>Como testar se está a funcionar?
Use várias ferramentas, porque cada uma responde a uma pergunta diferente:
- Rich Results Test do Google: verifica se um URL ou um excerto de código é elegível para os resultados enriquecidos do Google e mostra erros e avisos nas propriedades obrigatórias e recomendadas. O Google indica-o para validar dados estruturados (Google Search Central).
- Schema Markup Validator: o validador do schema.org. Serve para tipos que o Google não usa em resultados enriquecidos e para erros de sintaxe.
- Inspeção de URL na Search Console: mostra como o Google vê a página publicada. Confirme que não está bloqueada pelo robots.txt, que não tem
noindexe que não exige início de sessão (Google Search Central). - Relatórios de resultados enriquecidos na Search Console: mostram os elementos válidos e com erros em todo o site. Uma alteração ao modelo pode estragar a marcação depois de publicada (Google Search Central).
Teste sempre o URL publicado, não só o código colado. A marcação inserida por um gestor de etiquetas ou por um framework JavaScript pode parecer certa no editor e faltar na página renderizada. Rever os dados estruturados faz parte de qualquer auditoria SEO.
Que resultados enriquecidos o Google ainda mostra?
A referência é a galeria de dados estruturados suportados pelo Google. Hoje (novembro de 2026) inclui, entre outros, Article, Breadcrumb, Event, Job posting, Local business, Organization, Product, Profile page, Recipe, Review snippet, Software app, Vacation rental e Video (Google Search Central). A própria página avisa que o aspeto real nos resultados pode ser diferente.
Tão importante como isto é o que desapareceu. O registo de alterações da documentação da Search Central diz o seguinte (Google Search Central, atualizações da documentação):
- HowTo: a 14 de setembro de 2023 o Google removeu a documentação porque este resultado enriquecido deixou de ser mostrado.
- FAQ: no mesmo dia, 14 de setembro de 2023, limitou os resultados de FAQ a sites governamentais e de saúde conhecidos e com autoridade. A 8 de maio de 2026 anunciou que a funcionalidade deixa de aparecer na Pesquisa Google a partir de 7 de maio de 2026, e a 15 de junho de 2026 removeu a documentação porque já não é mostrada.
- Outros tipos: em junho de 2025 o Google anunciou a retirada de várias funcionalidades, entre elas ações de livros, informação de cursos, salário estimado, ClaimReview, vídeos educativos, anúncios especiais e anúncios de veículos. Em setembro de 2025 removeu a documentação de várias delas e, em janeiro de 2026, a dos exercícios práticos (practice problem).
Na prática: não adicione marcação FAQPage ou HowTo à espera de ganhar espaço nos resultados. FAQPage continua a ser vocabulário schema.org válido e pode ficar onde as perguntas e respostas estão visíveis, mas não muda o seu resultado.
Erros comuns
- Marcar conteúdo invisível. O Google pede que não marque conteúdo que o visitante não vê (Google Search Central).
- Marcação que não corresponde à página. Preços antigos, outro horário ou outro nome de empresa. Os dados estruturados têm de representar fielmente o conteúdo (Google Search Central).
- Faltam propriedades obrigatórias. A página deixa de ser elegível para o resultado enriquecido (Google Search Central).
- Estrelas das próprias avaliações. Se uma empresa controla as avaliações sobre si mesma, as suas páginas com marcação LocalBusiness ou Organization não são elegíveis para as estrelas (Google Search Central). Colocar os testemunhos da página inicial em
aggregateRatingnão dá estrelas. - Imagens bloqueadas. Todos os URL de imagens na marcação têm de poder ser rastreados e indexados (Google Search Central).
- JSON partido. Uma vírgula ou umas aspas em falta invalidam o bloco inteiro. Os validadores apanham isto num instante.
Infrações repetidas podem levar a uma ação manual. Segundo o Google, a página perde então a elegibilidade para resultados enriquecidos, sem efeito na sua posição na pesquisa na Web (Google Search Central). Se quiser ajuda, o nosso serviço de SEO técnico trata dos dados estruturados juntamente com o rastreio, a indexação e a velocidade. A velocidade tem o seu próprio guia: Core Web Vitals.








