Guía completa de datos estructurados con Schema.org (JSON-LD)
Los datos estructurados son la forma más directa de explicarle a Google, Bing y motores IA qué es cada página de tu web. Bien implementados, desbloquean rich results, mejoran el CTR orgánico y multiplican la probabilidad de aparecer en AI Overviews y respuestas de ChatGPT. En esta guía cubrimos todo lo que un desarrollador o SEO técnico necesita saber, con ejemplos JSON-LD listos para copiar.
¿Qué es Schema.org?
Schema.org es un vocabulario colaborativo creado en 2011 por Google, Bing, Yahoo y Yandex. Define un conjunto de tipos (Article, Product,Recipe, etc.) y propiedades (name, price,ratingValue, etc.) para anotar contenido web de forma que los buscadores lo entiendan sin ambigüedad.
Por ejemplo, en una página de producto puedes declarar explícitamente el precio, la disponibilidad, la valoración y el fabricante. Con eso Google puede mostrar estrellas, precio y stock directamente en las SERPs, aumentando el CTR.
JSON-LD, Microdata y RDFa
Schema.org se puede implementar en tres formatos. Google recomienda oficialmente JSON-LD desde 2015:
JSON-LD (recomendado)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Ejemplo",
"author": { "@type": "Person", "name": "Carlos" }
}
</script>Separado del HTML, fácil de generar y mantener. Se inyecta en el <head> o al final del <body>.
Microdata (legacy)
<article itemscope itemtype="https://schema.org/Article">
<h1 itemprop="headline">Ejemplo</h1>
</article>RDFa (legacy)
<article vocab="https://schema.org/" typeof="Article">
<h1 property="headline">Ejemplo</h1>
</article>Usa JSON-LD siempre que puedas. Es más limpio, más fácil de debuggear, no contamina el HTML y permite generarlo dinámicamente en runtime.
¿Para qué sirven? Rich results + AI Overviews
Los datos estructurados desbloquean dos cosas muy valiosas:
- Rich Results (fragmentos enriquecidos) en Google: estrellas de productos, FAQs expandibles, pasos de recetas, breadcrumbs visibles en la URL, eventos, videos, empleos, podcasts, etc. El CTR sube típicamente entre un 15% y un 40%.
- Google AI Overviews, ChatGPT Search, Perplexity: los motores IA priorizan contenido con datos estructurados validados porque es factualmente más fiable. Schema es probablemente el factor GEO más subestimado en 2026.
Schemas prioritarios según tipo de web
| Tipo de web | Schemas obligatorios |
|---|---|
| Corporativa / Servicios | Organization, WebSite, Service, BreadcrumbList, FAQPage |
| Blog / Media | Article, Person (autor), BreadcrumbList, FAQPage |
| E-commerce | Product, Offer, AggregateRating, Review, BreadcrumbList |
| Negocio local | LocalBusiness + subtipo (Restaurant, Dentist...), Review, OpeningHoursSpecification |
| SaaS / Software | SoftwareApplication, AggregateRating, Offer, FAQPage |
| Portfolio / Creativo | Person, CreativeWork, ImageObject |
Ejemplos JSON-LD reales y copiables
1. Organization (base de cualquier web)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Think! Madrid",
"legalName": "Think! Madrid",
"url": "https://www.thinkmadrid.com",
"logo": "https://www.thinkmadrid.com/logo.png",
"email": "hola@thinkmadrid.com",
"telephone": "+34676807053",
"address": {
"@type": "PostalAddress",
"addressLocality": "Madrid",
"addressRegion": "Madrid",
"addressCountry": "ES"
},
"sameAs": [
"https://www.linkedin.com/company/thinkmadrid",
"https://www.instagram.com/thinkmadrid"
]
}2. WebSite (habilita el sitelinks searchbox en SERPs)
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Think! Madrid",
"url": "https://www.thinkmadrid.com",
"inLanguage": "es-ES",
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.thinkmadrid.com/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
}3. Article (blog / news)
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Título del artículo",
"description": "Descripción breve del contenido.",
"image": "https://www.thinkmadrid.com/blog/slug/hero.jpg",
"datePublished": "2026-01-25",
"dateModified": "2026-01-25",
"author": {
"@type": "Organization",
"name": "Think! Madrid",
"url": "https://www.thinkmadrid.com"
},
"publisher": {
"@type": "Organization",
"name": "Think! Madrid",
"logo": {
"@type": "ImageObject",
"url": "https://www.thinkmadrid.com/logo.png"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "https://www.thinkmadrid.com/blog/slug"
},
"inLanguage": "es-ES"
}4. BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Inicio", "item": "https://www.thinkmadrid.com/" },
{ "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.thinkmadrid.com/blog" },
{ "@type": "ListItem", "position": 3, "name": "Título", "item": "https://www.thinkmadrid.com/blog/slug" }
]
}5. FAQPage (activa el bloque expandible en SERPs y AI Overviews)
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "¿Qué es X?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Respuesta clara y directa, 2-3 frases máximo."
}
},
{
"@type": "Question",
"name": "¿Cuánto cuesta Y?",
"acceptedAnswer": { "@type": "Answer", "text": "Depende de..." }
}
]
}6. Product + Offer + AggregateRating (e-commerce)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Cámara Sony A7 IV",
"image": "https://example.com/camara.jpg",
"description": "Cámara full-frame 33 megapíxeles...",
"brand": { "@type": "Brand", "name": "Sony" },
"sku": "A7IV",
"gtin13": "4548736138988",
"offers": {
"@type": "Offer",
"price": "2399.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"url": "https://example.com/producto"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "247"
}
}7. LocalBusiness (negocio físico)
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Restaurante Ejemplo",
"image": "https://example.com/foto.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "C/ Gran Vía, 10",
"addressLocality": "Madrid",
"postalCode": "28013",
"addressCountry": "ES"
},
"geo": { "@type": "GeoCoordinates", "latitude": 40.4200, "longitude": -3.7025 },
"telephone": "+34911234567",
"priceRange": "€€",
"servesCuisine": "Mediterránea",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
"opens": "13:00",
"closes": "23:30"
}
]
}8. Service
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Desarrollo web a medida",
"description": "Diseño y desarrollo de webs y aplicaciones con Next.js, React y TypeScript.",
"provider": {
"@type": "Organization",
"name": "Think! Madrid",
"url": "https://www.thinkmadrid.com"
},
"areaServed": { "@type": "Country", "name": "España" },
"serviceType": "Web Development"
}Implementación: helper reutilizable
En vez de escribir cada schema a mano, centraliza en un archivo helper:
type FAQItem = { question: string; answer: string };
export function faqLd(items: FAQItem[]) {
return {
"@context": "https://schema.org",
"@type": "FAQPage",
mainEntity: items.map((it) => ({
"@type": "Question",
name: it.question,
acceptedAnswer: { "@type": "Answer", text: it.answer },
})),
};
}
export function breadcrumbLd(items: { name: string; url: string }[]) {
return {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: items.map((it, i) => ({
"@type": "ListItem",
position: i + 1,
name: it.name,
item: it.url,
})),
};
}Y lo usas así en cada página:
import { faqLd, breadcrumbLd } from "@/lib/schema";
export default function Article() {
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify([
breadcrumbLd([
{ name: "Inicio", url: "https://example.com/" },
{ name: "Blog", url: "https://example.com/blog" },
]),
faqLd([{ question: "¿X?", answer: "Y." }]),
]),
}}
/>
<article>...</article>
</>
);
}Cómo validar schemas
Nunca despliegues sin validar. Tres herramientas imprescindibles:
- Rich Results Test (Google) — valida si un schema generará rich results y en qué tipo.
- validator.schema.org — validación estricta del vocabulario (sin opiniones de Google).
- Google Search Console → Mejoras: muestra errores y advertencias en los schemas detectados en tu web ya indexada.
Por línea de comandos (CI / pre-deploy) puedes usar structured-data-testing-tool:
npm install -g structured-data-testing-tool
# Validar una URL
sdtt --url https://www.thinkmadrid.com/blog/guia-seo-nextjs
# Validar un archivo HTML local
sdtt --file ./dist/index.htmlErrores frecuentes y cómo evitarlos
- Schema duplicado: declarar
Organizationen layout y otra vez en página. Usa@idpara referenciar en vez de duplicar. - Contenido visible ≠ schema: declarar un precio distinto al mostrado es una violación de las políticas de Google.
- FAQPage con datos no presentes en la página: las preguntas del schema deben existir visualmente.
- Fechas sin zona horaria: usa formato ISO 8601 (
2026-01-25T10:00:00+01:00) paradatePublished. - Imágenes rotas: las URLs del schema deben responder 200 y ser accesibles públicamente.
Schema y GEO (motores IA)
FAQPage, HowTo, Article y Organization son los schemas que los motores IA (ChatGPT Search, Perplexity, Gemini, AI Overviews) usan más intensivamente. Los LLMs extraen las respuestas directamente del acceptedAnswer de un FAQ o del headline + description de un Article.
Buena práctica: en cada página importante, incluir FAQPage con 3-5 preguntas reales + BreadcrumbList. Esto triplica tu probabilidad de aparecer en AI Overviews. Para más detalle consulta nuestra guía de SEO técnico.
Checklist de datos estructurados
Conclusión
Implementar Schema.org bien es una de las palancas SEO con mayor ROI: poco código, poco mantenimiento y beneficios compuestos en CTR, rich results y presencia en motores IA. Si empiezas con Organization, WebSite, Article,BreadcrumbList y FAQPage, ya cubres el 80% del valor.
Si estás trabajando en Next.js, nuestra guía SEO para Next.js tiene ejemplos directos para aplicar estos schemas en tu proyecto. Y si quieres delegar la implementación, en Think! Madrid hacemos auditorías SEO técnicas incluyendo schemas. Escríbenos.
Preguntas frecuentes
¿Qué es Schema.org?
Schema.org es un vocabulario estándar de datos estructurados creado conjuntamente por Google, Bing, Yahoo y Yandex para que los buscadores entiendan mejor el contenido de las páginas web. Se implementa típicamente en JSON-LD.
¿JSON-LD, Microdata o RDFa?
JSON-LD es el formato oficialmente recomendado por Google desde 2015. Se coloca en un <script type='application/ld+json'> en el head o body de la página. Microdata y RDFa aún funcionan pero son más difíciles de mantener.
¿Los datos estructurados mejoran el ranking?
No directamente, pero habilitan rich results (fragmentos enriquecidos), que aumentan el CTR significativamente. Además son fundamentales para aparecer en Google AI Overviews, ChatGPT Search y Perplexity.
¿Qué schemas son prioritarios en 2026?
Organization + WebSite para toda la web; Article + FAQPage para blog; Product + Offer + Review para e-commerce; LocalBusiness para negocio local; BreadcrumbList para cualquier página interna.
¿Tienes un proyecto en mente?
Cuéntanos qué necesitas y te proponemos la mejor solución sin compromiso.
Hablar con el equipo →