Schema.org JSON-LD: dados estruturados para a Pesquisa do Google
Como escolher, gerar e validar dados estruturados que correspondam ao conteúdo visível e continuem elegíveis a resultados avançados, sem garantir a exibição deles.
Os dados estruturados do Schema.org são um vocabulário que os mecanismos de busca usam para entender o conteúdo da página. Implementados corretamente, eles transformam um snippet comum em um resultado avançado — com estrelas de avaliação, preços de produtos, horário de funcionamento ou fotos exibidos diretamente nos resultados de pesquisa do Google.
Este artigo cobre o sistema completo: da escolha do formato e da priorização dos schemas até o código JSON-LD concreto para Organization, Product, AggregateRating, Review e ImageObject — com atenção especial aos subtipos que costumam passar despercebidos.
<script> → o Google interpreta a estrutura → snippet avançado com estrelas de avaliação e preço direto na SERP.O que é o Schema.org e por que usar dados estruturados
O Schema.org é um projeto conjunto do Google, Bing, Yahoo e Yandex, lançado em 2011. O vocabulário tem mais de 900 tipos de dados e milhares de propriedades. Todos os tipos herdam do Thing, a raiz, e se ramificam em Person, Organization, Product, Event, CreativeWork, Action e outros.
Corresponder à página
A marcação deve descrever informações que o leitor pode ver e verificar.
Seguir as regras do recurso
Use um tipo suportado e atenda às diretrizes de conteúdo e técnicas dele.
Testar o grafo
Verifique a sintaxe e os requisitos de política e depois inspecione a página renderizada.
Sem promessa de exibição
Passar em um teste não garante que o resultado avançado será exibido.
A marcação do Schema.org resolve três problemas de uma vez. Para os mecanismos de busca — identifica entidades sem ambiguidade: isto é uma organização, e não apenas um texto com nome de empresa; isto é um preço de produto, e não apenas um número. Para o usuário — os resultados avançados na SERP tornam o snippet mais informativo antes do clique. Para o negócio — mais CTR e presença no Knowledge Graph.
Formatos: JSON-LD, Microdata, RDFa
Os dados estruturados do Schema.org podem ser adicionados de três formas. Para projetos novos, a escolha é clara: JSON-LD. As outras são suportadas, mas mais difíceis de manter.
| Formato | Onde fica | Acoplamento com o HTML | Recomendação do Google |
|---|---|---|---|
| JSON-LD | Tag <script type="application/ld+json"> | Separado do HTML | Preferido |
| Microdata | Atributos itemscope, itemtype, itemprop | Incorporado em elementos HTML | Suportado |
| RDFa | Atributos vocab, typeof, property | Incorporado em elementos HTML | Suportado |
O template base do JSON-LD é o mesmo para qualquer página: uma tag <script> com type application/ld+json, contendo um objeto JSON com os campos obrigatórios @context e @type. A tag pode ficar no <head> ou no fim do <body>. Vários schemas — vários blocos <script> separados.
<!-- Base JSON-LD template -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Site Name",
"url": "https://example.com"
}
</script>
<!-- Multiple schemas — multiple <script> blocks -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Company",
"url": "https://example.com"
}
</script>Prioridade dos schemas: o que gera resultados avançados no Google
Nem todo tipo do Schema.org gera um resultado avançado. O Google suporta um conjunto limitado de tipos que trazem melhorias visuais na SERP. Os outros ajudam o Google a entender o conteúdo, mas não mudam a aparência do snippet.
Empresas e organizações
LocalBusiness, Restaurant, Store — horário de funcionamento, endereço, telefone e avaliações no painel de conhecimento. Prioridade máxima para negócios locais.
Produtos e preços
Product + Offer — preço, disponibilidade e avaliações direto no snippet. Google Shopping e rich snippets. Essencial para e-commerce.
Conteúdo e FAQ
Article e outros tipos suportados devem representar com precisão o conteúdo visível. O conteúdo de FAQ continua útil para o leitor, mas não garante a expansão do resultado de pesquisa.
Avaliações
AggregateRating + Review — estrelas de avaliação no snippet. É o elemento visualmente mais destacado. Funciona para Product, LocalBusiness, Recipe, Course.
| Tipo de schema | Resultado avançado no Google | Prioridade |
|---|---|---|
| Product + Offer | Preço, disponibilidade e avaliações no snippet; cards do Shopping | Crítico para e-commerce |
| LocalBusiness + AggregateRating | Painel de conhecimento, Map Pack, estrelas | Crítico para negócio local |
| Article / NewsArticle | Carrossel Top Stories, data de publicação | Alta para mídia e blogs |
| BreadcrumbList | Breadcrumbs no lugar da URL no snippet | Alta para qualquer site |
| Event | Card de evento com data e local | Média para páginas de eventos |
| Recipe | Card de receita com foto, tempo e calorias | Média para sites de culinária |
| Organization (non-Local) | Knowledge Graph e logo nos resultados | Base para todos os sites |
Organization — schema base e todos os subtipos
Organization é o tipo base para qualquer empresa, organização ou marca. A hierarquia de subtipos é ampla — cada subtipo acrescenta campos específicos. Escolher o subtipo certo importa: o Google usa essa informação para definir o contexto do negócio e o que exibir no painel de conhecimento.
| Tipo | Para quem | Campos adicionais principais |
|---|---|---|
| Organization | Qualquer empresa, ONG ou marca sem endereço físico | name, url, logo, sameAs |
| LocalBusiness | Qualquer negócio com endereço físico | address, telephone, openingHours, geo |
| Store | Loja de varejo | currenciesAccepted, paymentAccepted |
| FoodEstablishment | Café, restaurante (tipo base) | servesCuisine, menu, hasMap |
| Restaurant | Restaurante | servesCuisine, menu, acceptsReservations |
| CafeOrCoffeeShop | Cafeteria | servesCuisine |
| FastFoodRestaurant | Fast food | servesCuisine |
| MedicalOrganization | Instituição médica (base) | medicalSpecialty |
| Hospital | Hospital | availableService, medicalSpecialty |
| MedicalClinic | Clínica | medicalSpecialty, availableService |
| Dentist | Consultório odontológico | availableService |
| LegalService | Escritório de advocacia | — |
| Lawyer | Advogado(a) | — |
| AccountingService | Escritório de contabilidade / auditoria | — |
| FinancialService | Banco, seguradora, empresa de investimentos | — |
| RealEstateAgent | Imobiliária | — |
| AutomotiveBusiness | Revenda de veículos, oficina (base) | — |
| AutoDealer | Concessionária | — |
| AutoRepair | Oficina mecânica | — |
| Hotel | Hotel | amenityFeature, checkinTime, checkoutTime |
| SportsActivityLocation | Local esportivo (base) | availableService |
| GymOrHealthClub | Academia / clube de fitness | — |
| GovernmentOrganization | Órgão governamental | — |
| EducationalOrganization | Instituição de ensino (base) | — |
| CollegeOrUniversity | Universidade / faculdade | — |
| School | Escola | — |
| Corporation | Grande corporação | tickerSymbol, legalName |
Organization básico
O schema Organization básico é adicionado à página inicial de qualquer site. Ele ajuda o Google a identificar a marca e a relacioná-la a perfis externos por meio de sameAs. O campo @id com um identificador único permite que outros schemas façam referência a essa organização sem duplicar dados.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "Company Name",
"legalName": "Example LLC",
"url": "https://example.com",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png",
"width": 200,
"height": 60
},
"description": "Brief company description for Knowledge Graph.",
"foundingDate": "2015",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-800-123-4567",
"contactType": "customer service",
"availableLanguage": "English"
},
"sameAs": [
"https://www.linkedin.com/company/yourcompany",
"https://twitter.com/yourcompany",
"https://www.facebook.com/yourcompany"
]
}LocalBusiness — negócio físico com endereço
LocalBusiness é o subtipo mais importante para empresas com localização física. Um schema bem preenchido aumenta as chances de aparecer no Google Map Pack (o bloco de mapa no topo da SERP) e no painel de conhecimento com o horário de funcionamento. Campos principais: address, geo, openingHoursSpecification, telephone, priceRange.
{
"@context": "https://schema.org",
"@type": "Restaurant",
"@id": "https://example.com/#business",
"name": "The Birch Restaurant",
"url": "https://example.com",
"telephone": "+1-212-555-0100",
"email": "info@example.com",
"servesCuisine": ["American", "European"],
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 40.7128,
"longitude": -74.0060
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "12:00",
"closes": "23:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "12:00",
"closes": "00:00"
}
],
"image": "https://example.com/photos/restaurant.jpg",
"hasMap": "https://maps.google.com/?cid=XXXXXX"
}sameAs — links para perfis externos
O campo sameAs informa ao Google que a sua organização é a mesma dos perfis em plataformas externas. Esse é o campo-chave para construir o Knowledge Graph — o banco de entidades do Google. Quanto mais fontes confiáveis confirmarem a existência de uma organização, maior a chance de ela aparecer em um painel de conhecimento.
- Wikidata (a mais confiável): https://www.wikidata.org/wiki/Q...
- Wikipedia: https://en.wikipedia.org/wiki/...
- LinkedIn, Twitter/X, Facebook, Instagram
- Canal da organização no YouTube
- Perfil da empresa no Google (para negócios locais)
- Diretórios do setor — registros médicos, ordens de advogados etc.
Product — schema de produto e todos os subtipos
Product é o schema base para qualquer produto ou item. Ele funciona junto com Offer (preço e disponibilidade) e AggregateRating (avaliação). Um schema Product bem implementado gera um resultado avançado no Google: preço, status de disponibilidade e estrelas de avaliação direto no snippet.
| Tipo | Caso de uso | Observações |
|---|---|---|
| Product | Schema base para qualquer produto | name, image, description obrigatórios |
| Offer | Oferta específica: preço + disponibilidade | price, priceCurrency, availability obrigatórios |
| AggregateOffer | Faixa de preço (várias ofertas) | lowPrice, highPrice, offerCount |
| ProductGroup | Grupo de produtos com variantes | variesBy, hasVariant |
| IndividualProduct | Variante específica dentro de um ProductGroup | isVariantOf → ProductGroup |
| Brand | Marca do produto (aninhada em Product) | name obrigatório |
Product básico com Offer
O Google exige um conjunto mínimo de campos para um resultado avançado: name, image, description e um Offer aninhado com priceCurrency, price e availability. Sem pelo menos um desses itens, o snippet do produto não será enriquecido.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"description": "Lightweight running shoes with foam sole for road running. Weight 230g, drop 10mm.",
"sku": "AIRX-001-BLK",
"mpn": "AIRX001",
"gtin13": "0123456789012",
"brand": {
"@type": "Brand",
"name": "RunMax"
},
"image": [
"https://example.com/photos/airx-front.jpg",
"https://example.com/photos/airx-side.jpg",
"https://example.com/photos/airx-back.jpg"
],
"offers": {
"@type": "Offer",
"url": "https://example.com/products/air-x-pro",
"priceCurrency": "USD",
"price": "89.99",
"priceValidUntil": "2026-12-31",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "RunMax Store"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
}
}AggregateOffer — faixa de preço
Se um produto é oferecido por vários vendedores ou vem em variantes com preços diferentes, use AggregateOffer. Ele mostra uma faixa de preço (lowPrice–highPrice) em vez de um preço único.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Galaxy S25 Smartphone",
"brand": { "@type": "Brand", "name": "Samsung" },
"image": "https://example.com/galaxy-s25.jpg",
"offers": {
"@type": "AggregateOffer",
"priceCurrency": "USD",
"lowPrice": "799",
"highPrice": "1099",
"offerCount": "3",
"offers": [
{
"@type": "Offer",
"name": "128 GB / Black",
"price": "799",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "256 GB / White",
"price": "899",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "512 GB / Violet",
"price": "1099",
"priceCurrency": "USD",
"availability": "https://schema.org/PreOrder"
}
]
}
}ProductGroup — produtos com variantes
ProductGroup é um grupo de produtos relacionados que diferem por parâmetros (tamanho, cor, material). Usado em páginas de produto com variantes. Cada variante específica é um Product aninhado, com isVariantOf apontando para o ProductGroup pai.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Air X Pro Running Shoes",
"description": "Road running shoes available in multiple colours and sizes.",
"url": "https://example.com/products/air-x-pro",
"brand": { "@type": "Brand", "name": "RunMax" },
"productGroupID": "AIRX-PRO",
"variesBy": ["https://schema.org/color", "https://schema.org/size"],
"hasVariant": [
{
"@type": "Product",
"name": "Air X Pro — Black, US 9",
"sku": "AIRX-BLK-9",
"color": "Black",
"size": "US 9",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
},
{
"@type": "Product",
"name": "Air X Pro — Blue, US 11",
"sku": "AIRX-BLU-11",
"color": "Blue",
"size": "US 11",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/OutOfStock"
}
}
]
}AggregateRating e Review — avaliações e resenhas
As estrelas de avaliação nos resultados de pesquisa são o elemento visual mais destacado do snippet. Elas são implementadas por dois tipos relacionados: AggregateRating (a pontuação combinada de todas as avaliações) e Review (uma avaliação individual em texto). Os dois sempre ficam aninhados em um schema pai: Product, LocalBusiness, Recipe, Course, Book etc.
AggregateRating — pontuação combinada
AggregateRating representa a pontuação agregada: valor médio e número de votos. O Google a exibe como estrelas no snippet. Campos obrigatórios: ratingValue (média) e reviewCount ou ratingCount.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"reviewCount": "128",
"ratingCount": "215"
}
}Review — avaliações individuais
Review é o schema de uma avaliação individual em texto. Ele fica aninhado no objeto pai pela propriedade review. Cada Review contém um autor, uma nota e o texto da avaliação. O Google pode exibir um trecho do texto da avaliação no resultado avançado.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128"
},
"review": [
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5"
},
"name": "Great shoes for daily runs",
"reviewBody": "Been running in them for 3 months — sole holds up well, feet don't tire. Recommend for road running.",
"datePublished": "2026-03-15",
"author": {
"@type": "Person",
"name": "Alex K."
}
},
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"reviewBody": "Good cushioning, but runs a little small. Order half a size up.",
"datePublished": "2026-04-01",
"author": {
"@type": "Person",
"name": "Maria S."
}
}
]
}ImageObject — fotos nos dados estruturados
As imagens no Schema.org podem ser especificadas de duas formas: como uma string com a URL ("image": "https://example.com/photo.jpg") ou como um ImageObject com metadados. Uma string basta para a maioria dos schemas, mas, para Article, Recipe e HowTo, o Google recomenda o ImageObject — ele permite informar dimensões, legenda e formato.
| Tipo de schema | Requisitos de imagem | Largura mínima |
|---|---|---|
| Product | Pelo menos uma imagem do produto; fundo branco de preferência | 800 px recomendado |
| Article / NewsArticle | Pelo menos 3 imagens: 16:9, 4:3, 1:1 | 1.200 px |
| Recipe | Imagem do prato pronto é obrigatória | Qualquer; 1.200×628 é o ideal |
| LocalBusiness | Fotos da entrada, do interior e da fachada | Qualquer |
| Organization (logo) | Retangular, com fundo branco ou transparente | 112×112 mín., proporção de até 1×10 |
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"image": [
{
"@type": "ImageObject",
"url": "https://example.com/airx-front.jpg",
"width": 1200,
"height": 1200,
"caption": "Air X Pro — front view"
},
{
"@type": "ImageObject",
"url": "https://example.com/airx-side.jpg",
"width": 1200,
"height": 1200,
"caption": "Air X Pro — side view"
}
],
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}Combinando schemas em uma página
Vários schemas em uma mesma página são adicionados como blocos <script> separados. Veja a marcação completa de uma página de produto: a organização vendedora, as breadcrumbs, o produto com preço, a avaliação e a Review.
<!-- Schema 1: Selling organisation (on all site pages) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "RunMax Store",
"url": "https://example.com",
"logo": "https://example.com/logo.png"
}
</script>
<!-- Schema 2: Breadcrumbs -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com" },
{ "@type": "ListItem", "position": 2, "name": "Footwear", "item": "https://example.com/shoes" },
{ "@type": "ListItem", "position": 3, "name": "Air X Pro" }
]
}
</script>
<!-- Schema 3: Product with price, rating and review (on product page) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Air X Pro Running Shoes",
"description": "Road running shoes.",
"sku": "AIRX-001",
"brand": { "@type": "Brand", "name": "RunMax" },
"image": "https://example.com/airx.jpg",
"offers": {
"@type": "Offer",
"price": "89.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31",
"seller": { "@id": "https://example.com/#organization" }
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "128",
"bestRating": "5"
},
"review": {
"@type": "Review",
"reviewRating": { "@type": "Rating", "ratingValue": "5" },
"author": { "@type": "Person", "name": "Alex K." },
"reviewBody": "Excellent shoes, run in them every day.",
"datePublished": "2026-04-10"
}
}
</script>Validação de dados estruturados
Depois da implementação, valide sempre a marcação. O Google oferece duas ferramentas oficiais, e o Search Console mostra o quadro real do que o rastreador vê nas páginas indexadas.
Abra search.google.com/test/rich-results e informe uma URL ou HTML. A ferramenta mostra quais resultados avançados estão disponíveis para o schema, quais campos são obrigatórios e o que foi preenchido de forma incorreta. É o único lugar para confirmar se a marcação vai de fato gerar melhorias visuais na SERP.
Abra validator.schema.org para a validação completa contra o padrão do Schema.org (e não só os tipos que o Google suporta). Ela verifica as propriedades obrigatórias de cada tipo e alerta sobre combinações incompatíveis — útil para schemas aninhados complexos.
Search Console → Aprimoramentos → selecione o tipo de schema. Essa seção mostra erros reais em páginas indexadas. Os erros aqui são o que de fato bloqueia os resultados avançados agora, em URLs ativas — o sinal mais útil para agir.
Checklist de dados estruturados
Implementação base do JSON-LD
- Tag <script type="application/ld+json"> adicionada no <head> ou no fim do <body>
- Cada bloco contém @context: "https://schema.org" e @type
- Todas as entidades principais têm um @id único no formato URL com fragmento (#nome)
- JSON válido — sem vírgulas sobrando e com todas as aspas fechadas
- A marcação está na resposta HTML do servidor (não apenas via JavaScript)
Organization / LocalBusiness
- Subtipo correto escolhido (Restaurant, Dentist, AutoDealer etc.), em vez de Organization genérico
- Preenchidos: name, url, telephone, address (para LocalBusiness)
- geo adicionado com coordenadas precisas (latitude, longitude)
- openingHoursSpecification preenchido com nomes de dias em inglês e horários HH:MM
- sameAs com pelo menos perfis em redes sociais e Wikidata (se houver)
Product
- Preenchidos: name, description, image (pelo menos uma imagem)
- Offer aninhado com: price, priceCurrency, availability, priceValidUntil
- availability usando a URL completa: https://schema.org/InStock
- sku e/ou gtin13 informados para o Google Shopping
- AggregateRating aninhado se a página tiver avaliações de usuários
Avaliações e resenhas
- AggregateRating contém ratingValue, reviewCount, bestRating, worstRating
- Os valores de AggregateRating correspondem aos dados reais do site
- Review está aninhado dentro do objeto pai (Product / LocalBusiness), e não isolado
- Cada Review tem author (Person), reviewRating, datePublished, reviewBody
- As avaliações na marcação são avaliações reais de usuários reais
FAQ
A marcação do Schema.org influencia diretamente os rankings do Google?
Dá para adicionar dados estruturados pelo Google Tag Manager?
Quantas avaliações devo incluir na marcação de Review?
Por que os resultados avançados não aparecem, mesmo com a marcação aprovada na validação?
Como informar o preço para uma loja internacional?
Check it with SpiderHead
Free and local: run the audit on your own machine.



