The Ultimate Guide to All Schema.org Types: Complete List with JSON-LD Examples

schema-org-arial-1

Schema markup is essentially a code vocabulary that helps search engines understand your content. That is the short answer.

You put a specific format called JSON-LD into your website header and it tells bots exactly what your page is about. It stops them from guessing. If you are here to learn how to speak the language of Google and the new wave of AI search tools then you are in the right place.

I have been working with SEO for a long time. Too long maybe.

I remember the days before structured data was a big deal and we just stuffed keywords into the footer and hoped for the best. It was a mess. Things are different now. Better in some ways but definitely more complicated.

This guide is going to be long. I mean really long. We are going to cover the hierarchy of how this data works and I will give you the copy-paste code for the types you actually need.

Plus I’ve compiled a massive list of the niche types for when you have a client with a very specific business model.

The Hierarchy of Everything

It all starts with a Thing. I know that sounds like I am being lazy with my language but I am not.

In the Schema.org vocabulary the root of all data is literally called Thing. It sits at the top of the tree. Every other type of data flows down from it.

Think of it like a family tree. Thing is the great-ancestor. It has generic properties like name and description and image. Then you have the children. These are the main categories that cover 99% of what exists on the internet.

CreativeWork
This is a massive category. It covers anything that has been created. Books and movies fall under here. So do recipes and software applications.

If you write a blog post it is a CreativeWork. If you upload a music video it is a CreativeWork. It is the catch-all for intellectual property.

Event
Concerts. Webinars. Festivals. If it happens at a specific time and place it is an Event.

This one is tricky because search engines are very strict about dates and times. You mess up the time zone and your rich result disappears.

Organization
This is where businesses live. It splits into huge sub-categories. You have Corporation for the big guys and LocalBusiness for the pizza shop down the street.

It also covers schools and NGOs and sports teams. If it is a group of people working together it is an Organization.

Person
Pretty self-explanatory. This is for human beings. Alive or dead. Real or fictional. You can actually mark up a fictional character using this type which is fun. It connects people to organizations and creative works.

Place
This is for physical locations that aren’t necessarily businesses. A park. A mountain. A statue. It has coordinates. It has an address. Sometimes a Place is also a LocalBusiness which is where things get layered.

Product
If you sell something this is your bread and butter. It describes the physical item or the service. It links closely with the next one.

Offer
People confuse Product and Offer all the time. The Product is the shoe. The Offer is the price tag on the shoe.

The Offer includes the price and the currency and the availability. You usually nest an Offer inside a Product.

Action
This one is a bit more abstract. It describes a verb. A potential action. Like SearchAction or OrderAction. It tells the search engine that a user can do something on this page.

Why AI and LLMs Crave This Data

We need to talk about AI. I know everyone talks about AI and it gets tiring. But this is actually important.

Large Language Models like the ones powering ChatGPT or Google’s new search features don’t read like humans. They process relationships between entities.

When you use plain text you are leaving room for ambiguity. If I write “Jaguar” on a page am I talking about the car or the cat or the operating system or the football team? A human figures it out from context. A machine might guess wrong.

Schema removes the guessing. It is explicit. You are telling the machine “This entity is a Car and the brand is Jaguar.”

This is crucial for GEO (Generative Engine Optimization). As search moves from ten blue links to a direct answer provided by an AI the AI needs to be confident in its facts.

If your site provides structured data in clear JSON-LD format the AI is more likely to trust your information and use it to construct its answer. You are basically feeding the robot with a silver spoon.

It is about control. You are controlling how your brand is understood by the most powerful systems on the internet. Why wouldn’t you do that?

The Must-Haves with Code Examples

Okay. Enough theory. You want the code. I have compiled the top 20 types that actually move the needle.

These are the ones that get you rich snippets like stars in search results or those fancy video carousels. I use these on almost every site I audit.

1. Organization
Every website needs this. It establishes your brand identity. Put this on your homepage.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "My Awesome Company",
  "url": "https://www.example.com",
  "logo": "https://www.example.com/logo.png",
  "sameAs": [
    "https://www.facebook.com/myawesomecompany",
    "https://twitter.com/myawesomecompany",
    "https://www.instagram.com/myawesomecompany"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-401-555-1212",
    "contactType": "Customer service"
  }
}
</script>

2. LocalBusiness
If you have a physical door people can walk through use this. It helps with Google Maps rankings. Be precise with your coordinates.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Joe's Pizza",
  "image": "https://example.com/pizza.jpg",
  "@id": "",
  "url": "https://example.com",
  "telephone": "+12125551234",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "New York",
    "addressRegion": "NY",
    "postalCode": "10001",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.712776,
    "longitude": -74.005974
  },
  "openingHoursSpecification": {
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": [
      "Monday",
      "Tuesday",
      "Wednesday",
      "Thursday",
      "Friday"
    ],
    "opens": "11:00",
    "closes": "23:00"
  },
  "priceRange": "$$"
}
</script>

3. Article
For blog posts and news. This helps you get into the Top Stories carousel if you are a news publisher. Even for regular blogs it helps Google understand the headline and author.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://google.com/article"
  },
  "headline": "Article Headline Goes Here",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "datePublished": "2024-01-05T08:00:00+08:00",
  "dateModified": "2024-02-05T09:20:00+08:00",
  "author": {
    "@type": "Person",
    "name": "John Doe",
    "url": "https://example.com/author/john-doe"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Google",
    "logo": {
      "@type": "ImageObject",
      "url": "https://google.com/logo.jpg"
    }
  }
}
</script>

4. Product
Essential for e-commerce. This drives the rich snippets that show price and stock status directly in the search results. It increases click-through rates massively.


<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Executive Anvil",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "description": "Sleek anvil for the modern executive.",
  "sku": "0446310786",
  "mpn": "925872",
  "brand": {
    "@type": "Brand",
    "name": "Acme"
  },
  "review": {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "4",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "Fred Benson"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.4",
    "reviewCount": "89"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/anvil",
    "priceCurrency": "USD",
    "price": "119.99",
    "priceValidUntil": "2024-11-20",
    "itemCondition": "https://schema.org/UsedCondition",
    "availability": "https://schema.org/InStock"
  }
}
</script>

5. FAQPage
This used to be the golden ticket for taking up space in the SERPs. Google has dialed it back recently but it is still valuable for voice search and general understanding.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "What is the return policy?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Most items can be returned within 30 days of delivery."
    }
  }, {
    "@type": "Question",
    "name": "Do you ship internationally?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes we ship to over 100 countries worldwide."
    }
  }]
}
</script>

6. Review
You can mark up individual reviews. This is great for review sites or testimonials. Do not mark up reviews of your own business on your own site though. Google hates that.


<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Restaurant",
    "image": "https://example.com/seafood-restaurant.jpg",
    "name": "Legal Seafood"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4"
  },
  "name": "A good seafood place.",
  "author": {
    "@type": "Person",
    "name": "Bob Smith"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Washington Times"
  }
}
</script>

7. VideoObject
Video is huge. If you host videos on your site this schema helps them appear in the Google Video tab with a thumbnail and duration. It is non-negotiable for media sites.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to tie a tie",
  "description": "A step by step guide to tying a Windsor knot.",
  "thumbnailUrl": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
   ],
  "uploadDate": "2024-03-31T08:00:00+08:00",
  "duration": "PT1M54S",
  "contentUrl": "https://www.example.com/video/123/file.mp4",
  "embedUrl": "https://www.example.com/embed/123",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": { "@type": "WatchAction" },
    "userInteractionCount": 5647018
  }
}
</script>

8. BreadcrumbList
This changes the URL display in search results to a nice neat path. It helps users understand where they are in your site structure.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
    "@type": "ListItem",
    "position": 1,
    "name": "Books",
    "item": "https://example.com/books"
  },{
    "@type": "ListItem",
    "position": 2,
    "name": "Science Fiction",
    "item": "https://example.com/books/science-fiction"
  },{
    "@type": "ListItem",
    "position": 3,
    "name": "Award Winners"
  }]
}
</script>

9. Recipe
If you are a food blogger you live and die by this. It adds the photo and cooking time and calorie count to the search result. Without it you are invisible.


<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Recipe",
  "name": "Non-Alcoholic Pina Colada",
  "image": [
    "https://example.com/photos/1x1/photo.jpg",
    "https://example.com/photos/4x3/photo.jpg",
    "https://example.com/photos/16x9/photo.jpg"
  ],
  "author": {
    "@type": "Person",
    "name": "Mary Stone"
  },
  "datePublished": "2024-03-10",
  "description": "This non-alcoholic pina colada is a crowd pleaser.",
  "prepTime": "PT15M",
  "cookTime": "PT5M",
  "totalTime": "PT20M",
  "keywords": "non-alcoholic",
  "recipeYield": "4 servings",
  "recipeCategory": "Drink",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "120 calories"
  }
}
</script>

10. Event
Crucial for ticketing sites or local venues. It puts your event in the calendar view on Google.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Janelle Monae Concert",
  "startDate": "2024-07-21T19:00-05:00",
  "endDate": "2024-07-21T23:00-05:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Soldier Field",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1410 Museum Campus Dr",
      "addressLocality": "Chicago",
      "postalCode": "60605",
      "addressRegion": "IL",
      "addressCountry": "US"
    }
  }
}
</script>

11. JobPosting
This pushes your job listing into the Google Jobs widget. It is free visibility for recruitment.


<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Software Engineer",
  "description": "<p>Google is looking for a software engineer...</p>",
  "identifier": {
    "@type": "PropertyValue",
    "name": "Google",
    "value": "1234567"
  },
  "datePosted": "2024-01-18",
  "validThrough": "2024-03-18",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Google",
    "sameAs": "http://www.google.com",
    "logo": "http://www.google.com/images/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1600 Amphitheatre Pkwy",
      "addressLocality": "Mountain View",
      "addressRegion": "CA",
      "postalCode": "94043",
      "addressCountry": "US"
    }
  }
}
</script>

12. Person
I use this for author bios. It helps establish E-E-A-T (Experience Expertise Authoritativeness Trustworthiness).


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "William Shakespeare",
  "url": "http://www.shakespeare.org",
  "sameAs": [
    "http://www.facebook.com/williamshakespeare",
    "http://www.twitter.com/williamshakespeare"
  ],
  "jobTitle": "Playwright",
  "worksFor": {
    "@type": "Organization",
    "name": "The Globe Theatre"
  }
}
</script>

13. HowTo
Similar to recipes but for non-food instructions. “How to tile a bathroom” or “How to tie a knot”.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to tile a kitchen backsplash",
  "step": [
    {
      "@type": "HowToStep",
      "text": "Prepare the surface by cleaning it thoroughly."
    },
    {
      "@type": "HowToStep",
      "text": "Apply the adhesive to the wall."
    }
  ]
}
</script>

14. Course
If you sell online courses this is vital. It displays the course title and provider in a specific rich card.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Introduction to Computer Science",
  "description": "Introductory CS course",
  "provider": {
    "@type": "Organization",
    "name": "University of Technology",
    "sameAs": "https://www.example.com"
  }
}
</script>

15. Dataset
For scientific or statistical data. It helps your tables get indexed in Google Dataset Search.


<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Dataset",
  "name": "NCDC Storm Events Database",
  "description": "Storm Data is provided by the National Weather Service...",
  "url": "https://ncdc.noaa.gov/stormevents/",
  "keywords": [
    "ATMOSPHERE > ATMOSPHERIC PHENOMENA > CYCLONES",
    "ATMOSPHERE > ATMOSPHERIC PHENOMENA > DROUGHT",
    "ATMOSPHERE > ATMOSPHERIC PHENOMENA > FOG"
  ]
}
</script>

16. SoftwareApplication
Great for SaaS companies or app developers. It shows star ratings and price for the app.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Angry Birds",
  "operatingSystem": "ANDROID",
  "applicationCategory": "GameApplication",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.6",
    "ratingCount": "8864"
  },
  "offers": {
    "@type": "Offer",
    "price": "1.00",
    "priceCurrency": "USD"
  }
}
</script>

17. Service
For service-based businesses like plumbers or consultants. It is less visual than Product but still helps with entity understanding.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "Weekly Home Cleaning",
  "provider": {
    "@type": "LocalBusiness",
    "name": "ACME Cleaning"
  },
  "areaServed": {
    "@type": "State",
    "name": "Massachusetts"
  }
}
</script>

18. SitelinksSearchbox
This enables the little search bar to appear within your search result on Google. Very cool for large sites.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "url": "https://www.example.com/",
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://www.example.com/search?q={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}
</script>

19. ProfilePage
A newer type designed for social media profiles or creator pages. It helps Google understand that a page represents a specific person’s profile.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ProfilePage",
  "dateCreated": "2024-01-23T12:34:00-05:00",
  "mainEntity": {
    "@type": "Person",
    "name": "Jane Doe",
    "description": "Content creator and artist"
  }
}
</script>

20. QAPage
Different from FAQ. This is for forums where users submit answers. Think Stack Overflow or Quora.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How do I untie a knot?",
    "text": "I have a knot in my shoe...",
    "answerCount": 3,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Use a fork!",
      "upvoteCount": 5
    }
  }
}
</script>

The Complete Reference of Niche Types

So you have the basics. But Schema.org is massive. There are over 800 types and they keep adding more.

I once had to find schema for a volcano. Yes there is a type for that. It is under Place. I am going to organize these by their parent categories so you can scan them easily.

I cannot list every single one of the 800 types or this page would crash your browser but I have listed the most useful ones that you might actually encounter in the wild.

These are grouped logically. Use this as a reference when you have a client in a weird niche.

CreativeWork Types

This is the biggest category by far. If it is content it goes here.

Text Based Article, NewsArticle, Report, ScholarlyArticle, SocialMediaPosting, BlogPosting, Comment, Review, Book, TechArticle Visual & Audio ImageObject, VideoObject, AudioObject, MusicRecording, MusicAlbum, MusicPlaylist, Photograph, Map, Painting, Sculpture Web Content WebPage, AboutPage, CheckoutPage, CollectionPage, ContactPage, ItemPage, MedicalWebPage, ProfilePage, SearchResultsPage Instructional Recipe, HowTo, Course, ExercisePlan, Diet, Menu, MenuSection Code & Data SoftwareApplication, MobileApplication, WebApplication, VideoGame, Dataset, DataCatalog

Organization Types

You would be surprised how specific these get. I once used WorkersUnion for a client. It worked perfectly.

Business (General) Corporation, LocalBusiness, Project, Consortium, FundingScheme EducationEducationalOrganization, CollegeOrUniversity, ElementarySchool, HighSchool, MiddleSchool, Preschool, School Medical MedicalOrganization, Dentist, Hospital, Pharmacy, Physician, DiagnosticLab, VeterinaryCare Civic & Groups GovernmentOrganization, NGO, WorkersUnion, SportsTeam, PerformingGroup, LibrarySystem

LocalBusiness Sub-Types

This is where the money is for local SEO. Be as specific as possible. Don’t just use LocalBusiness if you are a Dentist.

Food & Drink FoodEstablishment, Bakery, BarOrPub, Brewery, CafeOrCoffeeShop, Distillery, FastFoodRestaurant, IceCreamShop, Restaurant, Winery Automotive AutomotiveBusiness, AutoBodyShop, AutoDealer, AutoPartsStore, AutoRental, AutoRepair, AutoWash, GasStation, MotorcycleDealer, MotorcycleRepair Health & BeautyHealthAndBeautyBusiness, BeautySalon, DaySpa, HairSalon, NailSalon, TattooParlor Professional ServicesLegalService, Attorney, Notary, AccountingService, AutomatedTeller, Bank, InsuranceAgency, RealEstateAgent Home & Construction HomeAndConstructionBusiness, Electrician, GeneralContractor, HVACBusiness, HousePainter, Locksmith, MovingCompany, Plumber, RoofingContractor Sports & Entertainment EntertainmentBusiness, AmusementPark, ArtGallery, Casino, ComedyClub, MovieTheater, NightClub, StadiumOrArena Stores Store, BikeStore, BookStore, ClothingStore, ComputerStore, ConvenienceStore, DepartmentStore, ElectronicsStore, Florist, FurnitureStore, GardenStore, GroceryStore, HardwareStore, HobbyShop, JewelryStore, LiquorStore, MensClothingStore, MobilePhoneStore, MusicStore, OfficeEquipmentStore, OutletStore, PawnShop, PetStore, ShoeStore, SportingGoodsStore, TireShop, ToyStore, WholesaleStore Travel LodgingBusiness, BedAndBreakfast, Campground, Hostel, Hotel, Motel, Resort

Place Types

Places that are not businesses. This is useful for tourism sites.

Natural Landform, BodyOfWater, Continent, Mountain, Volcano, Beach Civic Structures CivicStructure, Airport, Aquarium, Bridge, BusStation, Cemetery, Crematorium, EventVenue, FireStation, GovernmentBuilding, Hospital, Museum, MusicVenue, Park, ParkingFacility, Playground, PoliceStation, RVPark, SubwayStation, TaxiStand, TrainStation, Zoo Residences Accommodation, Apartment, House, Room, Suite

Event Sub-Types

If you run a ticketing platform you need these.

Performance ComedyEvent, DanceEvent, MusicEvent, TheaterEvent, VisualArtsEvent Business BusinessEvent, ExhibitionEvent, SaleEvent, Hackathon Social ChildrensEvent, Festival, FoodEvent, SocialEvent, SportsEvent Education CourseInstance, EducationEvent, LiteraryEvent

Medical Entity Types

This is a huge extension of Schema.org tailored for the health industry. It is very complex.

Conditions MedicalCondition, InfectiousDisease, SignOrSymptom Treatments MedicalTherapy, Drug, DietarySupplement, RadiationTherapy, PhysicalTherapy Procedures MedicalProcedure, SurgicalProcedure, DiagnosticProcedure Studies MedicalStudy, MedicalTrial, MedicalObservationalStudy

Financial Product Types

Banks and fintech companies use these to describe their offerings.

Accounts BankAccount, DepositAccount, InvestmentOrDeposit Loans LoanOrCredit, CreditCard, MortgageLoan Services FinancialService, CurrencyConversionService

How to Implement Without Crying

I have seen grown men weep over a missing comma in a JSON-LD file. It is frustrating.

You write the code and you think it is perfect and then the validator throws a red error and you spend an hour staring at the screen. Here is the process I use to keep my sanity intact.

1. Write it in a text editor first
Do not try to write JSON-LD directly into your WordPress header or GTM container. Use VS Code or Sublime Text. Use a linter. It highlights syntax errors before you even try to validate it.

2. Use the Rich Results Test
This is Google’s official tool. It tells you if your code is eligible for rich snippets. This is the only opinion that matters if you care about SEO. If it passes here you are good.

3. The Schema Validator
This is the tool from Schema.org. It is more permissive than Google. It checks for theoretical correctness rather than Google’s specific requirements. Use this for debugging logic errors.

4. Watch out for invisible content
There is a rule in schema. You should not mark up content that is not visible to the user.

If you add a review in your JSON-LD but that review does not appear in the text on the page Google might hit you with a manual penalty. It is called “spammy structured data” and it is a pain to fix.

5. Dynamic Implementation
If you have a site with 1000 pages do not write this by hand. You will die of old age.

Use a plugin or write a script that pulls the data from your database and populates the JSON-LD fields automatically. For WordPress I usually reccomend a solid SEO plugin that handles the basics but for custom stuff you might need to hire a developer.

Advanced Properties You Should Know

We have covered the types but the magic is in the properties. Properties are the connections. They are the glue.

sameAs
This is the most underrated property. It tells Google that your entity is the same as an entity on another site. You use it to link your website to your Wikipedia page or your Crunchbase profile or your social media. It is the primary way to build a Knowledge Graph entry.

hasPart / isPartOf
These are inverse properties. They define hierarchy. A WebPage is isPartOf a WebSite. A MusicAlbum has a MusicRecording as a part. This helps bots understand the structure of your content.

mentions
You can use this in an Article. It says “This article mentions Person X”. It creates a semantic link between your content and that person. It is very powerful for entity SEO.

additionalType
Sometimes one type is not enough. Maybe you have a business that is both a BookStore and a CafeOrCoffeeShop. You can use additionalType to give it a second category. It allows for multi-faceted definitions.

Common Mistakes That Will Ruin Your Day

I have made all these mistakes. Hopefully you won’t have to.

Syntax Errors
JSON is strict. You cannot have a trailing comma after the last item in a list. If you do the whole script breaks. It is unforgiving.

Copy-Paste Failures
People copy code from tutorials and forget to change the values. I once audited a site that had “My Awesome Company” as their organization name for three years. They never checked.

Mixing Formats
Stick to JSON-LD. Do not mix it with Microdata or RDFa unless you have a very good reason. It confuses the parsers and makes maintenence a nightmare. JSON-LD is cleaner. It keeps the data separate from the HTML.

Ignoring Warnings
Google Search Console will give you warnings. “Missing field: price”. You might think “Oh it is just a warning” but those warnings often prevent the rich result from showing up. Fix them.

Over-tagging
Don’t mark up every single noun on your page. It is not necessary. Focus on the main entities. The main product. The main organization. The main article. Quality over quantity.

There was a time when an error occured on a client site because of a smart quote. You know the curly ones? JSON hates them. Always use straight quotes.

The Bottom Line

Schema is not a silver bullet. It won’t fix bad content. It won’t make a slow site fast. But it is the bridge between your human content and the machine mind.

I think of it as politeness. You are being polite to the search engine. You are handing them the data on a platter. And in return they usually treat you better.

They give you more space on the screen. They understand what you are doing.

As AI continues to eat the web this layer of semantic data is only going to get more important. It is the difference between being a string of text and being a known entity. So take the time. Validate your code. And for the love of god check your commas.

Share or Summarize with AI

Alexander has been a driving force in the SEO world since 2010. At Breakline, he’s the one leading the charge on all things strategy. His expertise and innovative approach have been key to pushing the boundaries of what’s possible in SEO, guiding our team and clients towards new heights in search.