BlogFindings
Schema markup types: 88 of the 939 schema.org defines reached 626 home pages, and the top three name the page
Lantad asked all 1,419 hostnames in this repository's two committed corpus seed files for robots.txt on 16 October 2026, then read every permitted home page as LantadBot with no JavaScript executed. 1,085 answered a 2xx with HTML, 631 carried at least one JSON-LD block and 626 held one that parsed. Across the 2,181 typed nodes those pages declared, 88 distinct type strings appeared, against the 939 classes schema.org release 30.1 defines. WebSite, Organization and WebPage accounted for 1,029 of the 2,227 type declarations, and five of the 88 strings are not types schema.org defines at all.
On 16 October 2026 Lantad requested /robots.txt from all 1,419 hostnames in this repository's two committed corpus seed files as LantadBot, evaluated the site root for that token with the scanner's own matcher, and requested the home page of every host the file left open. 1,085 delivered an HTML document on a 2xx status. 631 of those carried at least one application/ld+json block and 626 held at least one block that parsed, yielding 2,185 nodes of which 2,181 carried a type. Those nodes used 88 distinct type strings between them. The concentration is the finding: the three most common types account for 46.2 percent of every type declaration in the corpus, and all three of them describe the page or the site rather than the thing the site is about. That is a different failure from missing structured data, and it is less visible, because a validator reports a page like that as correct.
In short
- The schema markup types in real use are a fraction of the vocabulary: across 626 corpus home pages carrying parseable JSON-LD on 16 October 2026, Lantad counted 88 distinct type strings, which is 9.4 percent of the 939 classes schema.org release 30.1 defines.
- Three types carried nearly half the corpus. WebSite, Organization and WebPage supplied 1,029 of the 2,227 type declarations Lantad read on 16 October 2026, and the top ten supplied 1,802 of them.
- Five of the 88 strings are not schema.org types in release 30.1, dated 2026-09-16: Website on five hosts, organization on two, and webPage, NonprofitOrganization and MassageTherapist on one each. None of the eight hosts that mis-cased a core type also declared the correctly cased one, so the declaration is lost rather than duplicated.
- The platform picks the vocabulary more than the industry does. 53 of the 54 readable Wix and Squarespace home pages carried JSON-LD on 16 October 2026 using 14 distinct types, while 8 of 31 documentation sites and 28 of 87 government sites carried any at all.
- Lantad's own scanner under-credits this corpus. 164 of the 626 sites carry no type its SCHEMA_REQUIREMENTS table recognises, and 65 of those 164 declared an Organization subclass that schema.org does define, because the alias table in core/src/schema.ts names only LocalBusiness and Corporation.
Flow: 1,419 corpus hostnames (12 refused) to 1,367 left the root open; 1,367 left the root open (250 not HTML) to 1,085 delivered HTML; 1,085 delivered HTML (454 no JSON-LD) to 626 parsed JSON-LD; 626 parsed JSON-LD to 2,181 typed nodes; 2,181 typed nodes (of 939 defined) to 88 distinct types.
How many corpus home pages declared any markup at all
The denominator decides what every rate below means, so it is worth setting out in full. 1,105 of the 1,419 hostnames answered the robots.txt request with HTTP 200. 162 answered 403 and 51 answered 404, which this scanner treats as imposing no restriction, following the robots exclusion standard rather than guessing at intent. Seven answered 202, four answered 429, two answered 401 and one each answered 406, 418 and 498, all read the same way. 40 answered 503, which the same code reads as closing the site until it recovers, so those hosts were not requested again. 45 requests failed in the client before any status arrived.
Twelve hostnames ran a file that refused LantadBot at the site root: coralvilleanimalhospital.com, botcity.dev, amsterdam.nl, wa.gov, helsinki.fi, sciencedirect.com, scielo.org, eluniversal.com.mx, theregister.com, sap.com, gmarket.co.kr and instacart.com. That left 1,367 hostnames with no prohibition on the root. 32 home page requests then failed in the client and 250 answered with something other than HTML: 218 answered 403, 14 answered 503, seven answered 429, five answered 404, two answered 406 and one each answered 400, 401, 498 and 500. The rules the scanner applies at each of those steps are written up in how this scanner decides what it may read.
1,085 delivered an HTML document, 1,077 of them on HTTP 200 and eight on 202. 454 of those 1,085 carried no application/ld+json block whatsoever, which is 41.8 percent of the readable corpus and sits close to what an earlier and smaller pass found when 141 of 382 home pages carried no JSON-LD in the raw HTML. 631 carried at least one block, 1,179 blocks between them, and 1,167 of those blocks parsed as JSON. The 12 that did not were spread across 12 hosts, and on five of them no block on the page parsed at all: trinityschoolofmedicine.org, unrivaledsportsco.com, bokksu.com, langhamhotels.com and danskebank.dk. That is the same failure mode measured when 117 of 612 pages carried a schema defect, and it leaves 626 sites as the population for everything that follows.
Two limits, stated rather than buried. This run read home pages only, so a site that declares its richest markup on a product, article or contact page counts here by what its home page says. And it counts nodes at the top level of a block or inside an @graph, which is the traversal the shipped scorer uses, not nodes nested inside another node's property value. Both choices make every count below a floor rather than an estimate.
What schema markup types are actually in use?
Eighty eight of them, and the distribution is steeper than the count suggests. The 2,181 typed nodes carried 2,227 type declarations, because 39 nodes declared more than one type. WebSite accounted for 434 of those declarations on 420 hosts, Organization for 399 on 379 hosts and WebPage for 196 on 188 hosts. Those three alone are 1,029 of the 2,227, or 46.2 percent. Add BreadcrumbList at 129 and ImageObject at 150 and the top five reach 60.0 percent. The top ten reach 80.9 percent and the top twenty reach 91.9 percent, which leaves 68 type strings sharing the remaining 181 declarations.
The tail is as thin as that arithmetic implies. 37 of the 88 strings appeared on exactly one host and 52 appeared on two or fewer. The median site declared two distinct types, 200 of the 626 declared exactly one, and the widest vocabulary on any single home page was eleven. Two outliers are worth naming because they distort node counts without widening vocabulary: eltiempo.com declared 157 ReportageNewsArticle nodes on its home page, which is the only appearance of that type anywhere in the corpus, and 133 SiteNavigationElement nodes came from six hosts. A type can be the most numerous thing on a page and still be used by almost nobody.
Against the vocabulary, 88 of 939 is 9.4 percent. That ratio is not itself a defect, because most of the 939 classes describe subjects no ordinary home page has reason to mention, and nobody should declare a BusTrip or a MolecularEntity to be polite. It is a useful figure for a different reason: it tells you that the working vocabulary of the web is small enough to learn in an afternoon, and that an answer engine building entities from pages is reading the same two dozen words over and over. A study of 10 million domains reached a similar shape when only 16 schema.org types reached ten million domains, from a far larger sample and by a different method.
One thing the corpus does not show is drift toward retired vocabulary. Release 30.1 marks 17 of its classes superseded, and not one of those 17 appeared anywhere in the 2,227 declarations. Sites are not using old types. They are using few types. The format is settled too: this run read JSON-LD only, and an earlier pass established that JSON-LD rather than microdata is where essentially all of this corpus puts its markup, so the vocabulary measured here is close to the whole of what these sites declare.
| Type | Hosts | Nodes | Describes |
|---|---|---|---|
| WebSite | 420 | 434 | The site |
| Organization | 379 | 399 | The business |
| WebPage | 188 | 196 | The page |
| BreadcrumbList | 129 | 129 | The navigation |
| ImageObject | 68 | 150 | A file |
| LocalBusiness | 60 | 72 | The business |
| SoftwareApplication | 57 | 77 | A product |
| FAQPage | 50 | 51 | The page |
| Corporation | 29 | 30 | The business |
| VideoObject | 22 | 43 | A file |
| NewsMediaOrganization | 20 | 21 | The business |
| Person | 16 | 18 | A human |
| ItemList | 15 | 55 | A list |
| Service | 13 | 27 | An offering |
| CollectionPage | 12 | 12 | The page |
| GovernmentOrganization | 12 | 12 | The business |
| Article | 11 | 11 | Content |
| MedicalOrganization | 11 | 11 | The business |
| Product | 8 | 11 | A product |
| Place | 8 | 8 | A location |
The three most declared types describe the page, not the business
WebSite, WebPage and BreadcrumbList are the three cheapest declarations on the web, and between them they appeared on 420, 188 and 129 hosts. None of them carries a fact about the organisation behind the site. WebSite names a site and usually a URL. WebPage names the page the reader is already on. BreadcrumbList restates the navigation path that the markup sits inside. A machine that reads all three learns the address of a thing it has already fetched.
The scoring side of this product has treated that distinction as load bearing for a while, and the comment above the relevant function in core/src/schema.ts says so in plain terms: the unrecognised types, WebPage and WebSite among them, are the ones a page can carry while conveying no business fact the scanner can validate. The corpus now puts a number on it. 496 of the 626 sites named some organisation family type somewhere on the home page, which is the encouraging half of the result. The other 130 declared markup that describes documents and nothing that describes a company.
Where the two kinds coexist, they frequently fail to connect, which is its own measured problem: 158 of 338 sites declared both a WebSite and an organisation node and joined neither to the other. The same pattern of volume without substance shows up inside the file types. ImageObject is the fifth most declared type here, 150 nodes on 68 hosts, and an earlier run found 685 of 943 ImageObject nodes carrying nothing but a URL and a size. Declaring the type is not the same as saying something with it.
Property emptiness in this run points the same way. Of the 2,181 typed nodes, 18 carried no property at all beyond the @ keys: 14 ImageObject nodes on rijksoverheid.nl, two Organization nodes on sendbird.com, one WebPage on aalto.fi and one BreadcrumbList on scripps.org. A further 225 carried exactly one property and 503 carried two or fewer, so 23.1 percent of every typed node in the corpus declares a type and then says at most two things about it. For a reader trying to raise entity confidence, a node like that is close to free to publish and close to worthless to consume. The exception worth crediting is BreadcrumbList, which earns its place when the trail is real: 201 of 936 interior pages declared a trail and the useful ones carried more than one item.
-
WebSite, 420 hostsNo business fact Names the site and usually its URL. The crawler already had both. -
Organization, 379 hostsBusiness fact The one type in the top three that names the company rather than the document. -
WebPage, 188 hostsNo business fact Describes the page being read. 32 of the 164 under-credited sites declared it. -
BreadcrumbList, 129 hostsNavigation only Restates the path the markup sits in. Useful when the trail has more than one item. -
ImageObject, 68 hostsFile metadata 150 nodes. 14 of the 18 wholly empty nodes in this corpus were this type, all on one host. -
Nodes with two properties or fewer503 of 2,181 23.1 percent declare a type and then say almost nothing with it.
Five of the 88 strings are not schema.org types
A type string is either in the vocabulary or it is not, and that is checkable rather than arguable. Every one of the 88 strings was compared against the class list in schema.org's own machine readable vocabulary file, pulled on 16 October 2026 from the release 30.1 URL and confirmed byte identical to the file served at the version 30.1 path. 83 matched a class the release defines. Five did not, and they are instructive in different ways.
Three are capitalisation errors on the most common types in the corpus. Website appeared on five hosts, gldn.com, japantimes.co.jp, webnames.ca, ssense.com and kayak.com, where the defined type is WebSite with a capital S. organization appeared on misa.vn and plaid.com, where the defined type is Organization. webPage appeared on germany.travel, where the defined type is WebPage. Type names in this vocabulary are case sensitive, so each of those strings resolves to nothing. The detail that makes it more than a typo is that none of those eight hosts also declared the correctly cased type anywhere on the page. The node is not a duplicate of a good one. It is the site's only attempt at that declaration, and it does not land.
The other two are plausible inventions, which is the harder mistake to catch because the string reads like real vocabulary. plannedparenthood.org declared NonprofitOrganization. schema.org has no such class: it offers NGO, and a nonprofitStatus property with national enumerations behind it, neither of which is spelled that way. pressmodernmassage.com declared MassageTherapist, which is absent from release 30.1 entirely, including its pending and health extensions, both of which this check covered. Someone in each case reasoned from the shape of the vocabulary to a name that ought to exist, and in neither case does it.
Ten nodes in 2,227 declarations is a small share, and it should be said plainly that this is not the corpus's main problem. It is worth reporting because of what it reveals about verification habits: a JSON-LD block with an undefined type is valid JSON, renders nothing visible, breaks no page, and passes any check that only asks whether the markup parses. Google's own gallery of structured data features is organised by feature rather than by type name, so a site reading it for guidance never sees the class list the string has to match. The failure is silent at every stage, which is the same reason 313 of 615 pages gave no schema node an @id and nothing told them. Anyone publishing structured data can rule this one out in a minute by checking that the type string resolves to a page on schema.org.
| String declared | Hosts | Defined type it resembles | Also declared the real type |
|---|---|---|---|
| Website | 5 | WebSite | No, on none of the five |
| organization | 2 | Organization | No, on neither |
| webPage | 1 | WebPage | No |
| NonprofitOrganization | 1 | NGO, or nonprofitStatus | No |
| MassageTherapist | 1 | Nothing in release 30.1 | No |
| Superseded classes | 0 | 17 exist in release 30.1 | None in use |
The platform picks the vocabulary more than the industry does
Splitting the 1,085 readable home pages by the corpus strata separates two things that look alike from the outside: whether a site has markup, and whether anybody chose it. The Wix and Squarespace stratum is the clearest case. 53 of its 54 readable home pages carried parseable JSON-LD, the highest rate in the corpus by a wide margin, and all 53 declared WebSite. 38 declared LocalBusiness and 19 declared Organization. The whole stratum used 14 distinct types. That profile is a template emitting the same two or three nodes per site, and it is a genuinely good outcome for the small businesses on it, several of which would otherwise have published nothing. It is also not a decision any of them made.
The documentation stratum sits at the other end and is the result that should worry a technical writer. Eight of its 31 readable home pages carried parseable JSON-LD, using six types between them. Government is nearly as thin at 28 of 87, and education at 30 of 101, both of them categories where the publisher is usually an institution with a stable name, a real address and every reason to be identified correctly. News behaves differently again: 53 of 61 carried markup, and the vocabulary leans to publishing types, with NewsMediaOrganization on 17 hosts and CollectionPage on nine.
The SaaS stratum had both the widest vocabulary and the most self description, 27 distinct types across 93 sites with markup, which fits a sector that writes its own templates and knows what SoftwareApplication nodes are for. Finance reached 24 types across 54 sites. Against those, the four strata with the narrowest vocabularies are the ones most dependent on a builder: bubble and no code at ten types, Shopify at ten, SaaS marketing at ten and static documentation at six.
The practical reading is that a site on a managed platform usually gets a floor and rarely gets more than the floor, and a site on its own stack gets whatever somebody wrote, which is sometimes nothing. Neither group gets the thing a buyer actually wants from an answer engine, which is the specific fact: the price, the hours, the person, the service. LocalBusiness opening hours were on two of 172 home pages that declared the type in an earlier run. If you want to see which of these shapes your own site is in, what a crawler sees reads the page the same way this run did.
| Stratum | HTML pages | With parseable JSON-LD | Distinct types |
|---|---|---|---|
| Wix and Squarespace | 54 | 53 | 14 |
| News | 61 | 53 | 16 |
| Local media | 30 | 28 | 14 |
| SaaS | 117 | 93 | 27 |
| WordPress | 40 | 35 | 23 |
| Finance | 96 | 54 | 24 |
| Healthcare | 94 | 46 | 20 |
| Travel | 79 | 38 | 21 |
| Ecommerce | 65 | 38 | 19 |
| Single page apps | 44 | 29 | 11 |
| Education | 101 | 30 | 13 |
| Government | 87 | 28 | 11 |
| Bubble and no code | 42 | 12 | 10 |
| Static documentation | 31 | 8 | 6 |
What this measurement says about Lantad's own scoring
The inconvenient part of this run is about the scanner rather than the corpus. The schema sub-score recognises a business type by looking it up in SCHEMA_REQUIREMENTS in core/src/schema.ts, which names Organization, Product, Article, FAQPage and BreadcrumbList, with SCHEMA_TYPE_ALIASES mapping six subtypes onto those parents: NewsArticle, BlogPosting, TechArticle and ScholarlyArticle onto Article, and LocalBusiness and Corporation onto Organization. Measured against the corpus, 462 of the 626 sites carry at least one type that table recognises. 164 do not.
Those 164 are where the gap shows. 65 of them declared a type that schema.org defines as a subclass of Organization, transitively, in release 30.1: NewsMediaOrganization on 15 hosts, GovernmentOrganization on 11, MedicalOrganization on ten, CollegeOrUniversity on five, ResearchOrganization on three, Airline on three, BankOrCreditUnion on three, OnlineStore on three, Electrician on three, and NGO, Hospital, EducationalOrganization, MedicalClinic, FinancialService, Plumber, HVACBusiness, VeterinaryCare, GovernmentOffice and ProfessionalService on one or two each. Every one of those sites named itself as an organisation in vocabulary the standard defines. The alias table does not list them, so the scorer treats the declaration as conveying no business fact.
Counted across the whole population rather than just the shortfall, 32 of the 88 type strings in this corpus are Organization subclasses, and 107 of the 626 sites declared one from outside the alias table. The honest description of the current behaviour is that the schema sub-score is calibrated for the common cases and under-credits a hospital, a university, a public body or a newsroom that marked itself up correctly using the precise type for what it is. That is a real scoring gap, not a presentation quibble, and it sits in a named constant that this post has now put a number against. It is not fixed by this post: no code changed in this run, and the figure above is what the shipped behaviour does today.
Two further limits belong next to it. Being recognised is not the same as being right, because this run checked whether a type string exists in the vocabulary and whether properties are present, never whether a value is true, so nothing here can tell an accurate organisation name from an invented one. And a correct type with empty properties still scores better than a precise type the table omits, which is the wrong way round. An earlier run found 103 of 385 pages with JSON-LD named no organization at all, and another found that 107 of 163 topic statements named the site rather than a subject. Those two and this one describe one problem from three sides: the markup is present, parseable, and mostly about the document. The method behind all three, and what each of them did not measure, is set out in the crawlability study.
| Declared type | Hosts | Organization subclass in 30.1 | Recognised by the alias table |
|---|---|---|---|
| NewsMediaOrganization | 15 | Yes | No |
| GovernmentOrganization | 11 | Yes | No |
| MedicalOrganization | 10 | Yes | No |
| CollegeOrUniversity | 5 | Yes | No |
| ResearchOrganization | 3 | Yes | No |
| Airline | 3 | Yes | No |
| BankOrCreditUnion | 3 | Yes | No |
| LocalBusiness | 60 | Yes | Yes |
| Corporation | 29 | Yes | Yes |
| WebSite | 420 | No | No |
Lantad
Published .
A person asking an assistant who makes a thing, what it costs or who to call is asking for a fact about a business. JSON-LD is the channel built for handing a machine that fact directly, and schema.org's vocabulary is large enough to describe almost any claim a site might want to make: release 30.1, dated 2026-09-16, defines 939 classes. The question this post answers is narrower and more useful than how much markup exists. It is which of those 939 types sites actually reach for, and whether the ones they reach for say anything about the business at all.
Common questions
How many schema markup types are there?
schema.org release 30.1, dated 2026-09-16, defines 939 classes, and 17 of those are marked superseded. Only a fraction are in use on ordinary pages: across 626 corpus home pages carrying parseable JSON-LD, Lantad counted 88 distinct type strings on 16 October 2026, which is 9.4 percent of the vocabulary.
Which schema markup types do sites actually declare most?
WebSite, Organization and WebPage, in that order. On 16 October 2026 they accounted for 1,029 of the 2,227 type declarations Lantad read across 626 corpus home pages, with WebSite on 420 hosts, Organization on 379 and WebPage on 188. BreadcrumbList and ImageObject complete the top five.
Does declaring WebSite or WebPage help an AI answer engine name my business?
Not on its own. Both types describe the document rather than the organisation behind it, so a machine reading only those learns the address of a page it has already fetched. 130 of the 626 sites Lantad measured on 16 October 2026 declared document types and nothing that named a company.
How do I check that a schema type name is real?
Confirm the string resolves to a page on schema.org, and check the capitalisation, because type names are case sensitive. Five of the 88 strings in this corpus are not defined in release 30.1, three of them capitalisation errors such as Website for WebSite, and none of the eight hosts affected also declared the correctly cased type.
See what AI can read on your site
Run a free scan and get a graded report of exactly what AI crawlers can and cannot read, with ranked fixes.