BlogFindings

Service schema markup: 20 of 616 home pages declared it, and 46 of 89 nodes carried no property the type defines

Lantad asked all 1,419 hostnames in this repository's two committed corpus seed files for robots.txt on 7 October 2026, then read every permitted home page as LantadBot with no JavaScript executed. 1,078 answered HTTP 200 with HTML and 616 of those carried at least one JSON-LD block that parsed. 20 of the 616 declared a Service node, 89 nodes between them, and 46 of the 89 carried none of the 22 properties schema.org defines on the Service type itself.

18 min read Lantad

On 7 October 2026 Lantad requested https://host/robots.txt once for each of the 1,419 hostnames in this repository's two committed corpus seed files, as LantadBot, redirects followed, from one network location, then requested the home page of every host whose own file left the root open, with no JavaScript executed and no stylesheet fetched. 1,078 answered HTTP 200 with an HTML content type. 622 of those carried at least one script element typed application/ld+json, 1,173 blocks between them, and 616 pages held at least one block that parsed as JSON. 20 of the 616 declared a Service node. That is the first number, and it is small enough that the more useful question is what the 89 nodes on those 20 sites actually say, which is where this run spent its effort and where 141 of 382 home pages carrying no structured data at all is the backdrop to read it against.

In short

  • Service schema markup appeared on 20 of the 616 home pages Lantad found carrying parseable JSON-LD on 7 October 2026, which puts the type thirtieth of the 147 distinct schema.org types declared across those pages, behind Organization on 411 sites and LocalBusiness on 60.
  • 46 of the 89 Service nodes Lantad read on 7 October 2026 carried none of the 22 properties schema.org defines on Service itself, declaring only some combination of name, url and description, which are inherited from Thing and distinguish a service from nothing.
  • 32 of the 89 service names Lantad read on 7 October 2026 appeared nowhere in the text the crawler was served, across 10 of the 20 sites, against the instruction in Google's structured data general guidelines, last updated 10 July 2026, not to mark up content that is not visible to readers of the page.
  • Service is absent from the 25 features listed in Google's gallery of supported structured data on 15 June 2026, and Google's introduction to structured data, last updated 10 December 2025, says of attributes it does not require that they may be useful for other search engines, services, tools, and platforms.
  • 53 of the 89 Service nodes sat inside an Offer as the value of itemOffered rather than standing as an entity of their own, and all 36 nodes that declared a provider resolved it to an organization typed node on the same page, 35 of them by an @id reference.
StageCountWhat happened
Hostnames asked1,419392 in ten platform strata, 1,027 in eight industry strata
Refused by their own robots.txt12The file closed the root to LantadBot, so no page was requested
Never returned a status3422 failed in the client, 11 hit the timeout, one terminated
Answered HTTP 403216Refused this crawler the page
Answered HTTP 50353Served nothing to this client
Answered another status268 of 202, 7 of 429, 5 of 404, 2 of 406, and one each of 401, 451, 498 and 500
Answered HTTP 200 with HTML1,078Every 200 in this run carried an HTML content type
Carried a JSON-LD block6221,173 blocks in total, of which 14 failed to parse
Held a block that parsed616The denominator for every rate below
Declared a Service node2089 nodes between them
One GET of https://<host>/robots.txt and then one of https://<host>/ per hostname as LantadBot/1.0 (+https://lantad.co/bot), redirects followed, 20 second timeout, no JavaScript executed, from one network location. Measured by Lantad on 7 October 2026 across the 1,419 hostnames in this repository's two committed corpus seed files.

What does service schema markup actually declare?

Schema.org's Service type, on a page whose footer dates the vocabulary release to version 30.1 of 16 September 2026, defines it in one sentence: a service provided by an organization, e.g. delivery service, print services, etc. Underneath that definition sit 22 properties the vocabulary attaches to Service itself, among them provider, areaServed, serviceType, offers, hasOfferCatalog, hoursAvailable, audience, availableChannel, termsOfService, serviceOutput and providerMobility. Seven more specific types inherit from it: BroadcastService, CableOrSatelliteService, FinancialProduct, FoodService, GovernmentService, TaxiService and WebAPI.

The division between those 22 properties and the rest matters more than it looks, and it is the measurement this post turns on. Name, description, url, image and sameAs are not Service properties. They are inherited from Thing, the root of the whole vocabulary, and every one of the 147 types this run saw carries them. A node that declares a type of Service and then fills in only name and url has said that something exists and has a web address. It has not said who performs the work, where, for whom, on what terms, or at what price. Those are exactly the questions the 22 own properties exist to answer, and they are the ones an engine assembling an answer about a local trade or a professional practice would need.

So a Service node can be read on two levels, and this run read both. The first is whether it is there at all. The second is whether it carries any of the vocabulary that makes the type worth choosing over a bare Thing, which is also the level at which entity confidence is decided: a typed node with no distinguishing properties leaves a reader no more certain about the business than the page's prose already did. One scoping note before the counts. Only JSON-LD was parsed. Microdata was checked separately and 93 of the 1,078 pages carried a schema.org itemtype attribute, but not one of those 93 named Service, so nothing was missed by reading JSON-LD alone on this corpus, which was not a safe assumption before it was tested and is the same split measured directly when 22 of 385 pages carried microdata.

PropertyNodesDefined on
name89Thing
url55Thing
provider36Service
serviceType35Service
description32Thing
areaServed24Service
hasOfferCatalog4Service
image3Thing
audience2Service
category2Service
offers2Service
alternateName, additionalType, additionalProperty, mainEntityOfPage1 eachThing
Every property declared on the 89 Service nodes Lantad read on 7 October 2026, with whether schema.org defines it on Service itself or inherits it from Thing. Properties with no occurrences are omitted. Definitions read from schema.org/Service on 7 October 2026.

How many home pages declared a Service, and where the type ranks

20 of the 616 pages with parseable JSON-LD declared at least one Service node. Ranked by how many sites declared each type, that puts Service thirtieth of the 147 distinct types this run saw, in a tail that falls away quickly: Organization on 411 sites, WebSite on 410, ImageObject on 253, SearchAction on 223, PostalAddress on 197, WebPage on 192, ContactPoint on 165, BreadcrumbList on 135, Person on 87, LocalBusiness on 60 and Offer on 60. Sites in this corpus describe who they are twenty times more often than they describe what they do, which is consistent with the gap found when 103 of 385 pages named no organization at all and with how rarely the organisation nodes that do exist get filled in, as when two of 172 LocalBusiness nodes carried opening hours.

The 89 nodes are not spread evenly. Five sites account for 43 of them: seota.com with 11, thewireguyelectric.com with nine, and povio.com, gardencityplumbing.com and fly.io with eight, seven and seven. Nine of the 20 sites declared exactly one. By stratum the type lands where its definition predicts: five of the 20 sites are in this corpus's Webflow stratum and three in its WordPress small business stratum, both heavy in trades and professional practices, three are in the SaaS stratum, two in finance, and one each in healthcare, ecommerce, Framer, Wix and Squarespace, no code, single page app startups and local media. The trades read exactly as the vocabulary's own examples do, with an electrician declaring nine services and a plumbing and heating firm eight.

Three sites also declared a Service subtype, and all three chose the same one: FinancialProduct, five nodes across hdfcbank.com, paypal.com and statefarm.com. None of the other six subtypes appeared anywhere in the corpus, so GovernmentService went undeclared by all 129 government hostnames in the industry seed file, the one stratum whose entire subject that type names. Twenty of anything is a small number, and it is worth saying that these counts sit in the same range as other types this blog has measured at corpus scale, where 19 of 1,419 sites declared an Event and 17 of 605 declared an ItemList. Rarity is the normal condition of a schema type that earns no rich result.

  • Organization 411 sites Who the site is
  • WebSite 410 sites The site as a whole
  • ImageObject 253 sites Usually a logo or a hero image
  • SearchAction 223 sites An on-site search endpoint
  • PostalAddress 197 sites Where the business is
  • ContactPoint 165 sites How to reach it
  • Person 87 sites A named human
  • LocalBusiness 60 sites A place of business
  • Offer 60 sites A price or an availability
  • SoftwareApplication 58 sites A product that is software
  • Service 20 sites What the business does
  • FinancialProduct 3 sites The only Service subtype seen
Number of the 616 pages with parseable JSON-LD that declared each type, measured by Lantad on 7 October 2026. Counted once per site however many nodes of that type the page carried. 147 distinct types appeared in total.

Why 46 of the 89 nodes said nothing that a Service says

46 of the 89 Service nodes, on nine of the 20 sites, carried none of the 22 properties schema.org defines on Service. Every one of those 46 declared a type, a name, and in most cases a url or a description, and then stopped. Swap Thing for Service in any of them and nothing is lost, because nothing in the node depends on the type being Service. That is not a syntax error and no validator will flag it: it is a node that costs a site nothing and tells a reader nothing, which is the harder failure to notice and the reason a defect count like 117 of 612 pages carrying a schema defect is not the whole picture of markup quality.

Where the nodes sit explains most of it. 53 of the 89 are not top level objects at all. They appear as the value of itemOffered inside an Offer, which is the construct schema.org provides for saying that a price or an availability applies to a thing. In that position the Service is a label for what the Offer is about, so the Offer carries the commercial detail and the Service often carries a name and nothing else. Twenty nodes sat in an @graph array, nine inside the mentions property of a WebPage, and seven stood at the top level of a block on their own. Read that way, the commonest use of the type in this corpus is not describing a service; it is naming the thing a price attaches to, which is the same pattern that makes 42 of 50 product pages declaring Product a different kind of result to this one.

The nodes that did reach for the type's own vocabulary did it carefully, and this is the part of the finding that runs against the direction of the rest. 36 nodes declared a provider, the property that names who performs the work. Every single one resolved: 35 pointed at a node on the same page by @id, every reference matching an organization typed node declared in the same markup, with targets including Organization, Corporation, NGO, MedicalOrganization, ProfessionalService and AccountingService, and the thirty sixth inlined the provider with a name. None dangled. That is a higher standard of internal referencing than the corpus manages generally, where 313 of 615 pages gave no node an @id at all, and 28 of these 89 nodes carried an @id of their own. 35 declared serviceType, though on nine of those the serviceType string repeated the name exactly, and 24 declared areaServed, 13 as a plain string such as Worldwide or US, eight as an array, and three as a typed Country object.

Where the 89 Service nodes Lantad read on 7 October 2026 sat in the JSON-LD, and how many carried at least one of the 22 properties schema.org defines on Service. Counts measured across the 616 pages with parseable JSON-LD.

32 of the 89 service names appeared nowhere in the page text

Every one of the 89 nodes carried a name, which is the one thing they all got right. 32 of those names, across 10 of the 20 sites, did not appear anywhere in the text the crawler was served. The comparison was made after stripping script, style, noscript and template content and all tags from the delivered HTML, decoding character entities on both sides, lowercasing, normalising whitespace, and normalising curly quotes and the dash characters, so a name was counted as present if its text appeared anywhere in the page at all, in any element, visible or hidden. The threshold is deliberately generous and the 32 still failed it.

This is the one place the run meets a published rule rather than a definition. Google's structured data general guidelines, last updated 10 July 2026, state plainly: do not mark up content that is not visible to readers of the page, and give as the example that if the JSON-LD describes a performer, the HTML body must describe that same performer. The same page lists, among the reasons structured data may not be used, that the content referred to by the structured data is hidden from the user. Nine services declared by an electrician in Mesa, Arizona, seven by a plumbing and heating firm in Missoula, Montana, and eight by a marketing agency in Frisco, Texas sat entirely inside the markup. Each of those names was confirmed by hand to exist in the raw bytes only inside a JSON-LD script element, in most cases as the itemOffered of an Offer.

One case is worth separating from the rest because it is a different failure wearing the same clothes. sammylabs.com declared a Service with a serviceType of Computational Law Engine, a resolving provider and an @id, on a home page that served this crawler 15 words of text in total. The markup is the only description of the business that reached the crawler, so the name being absent from the page is a consequence of there being almost no page, which is the condition measured head on when 11 of 271 pages returned no words at all. The pattern itself is not new to this corpus. It is the same shape as 70 of 146 structured data values sitting off the page, as 27 of 165 Article headlines that the page's own h1 did not contain, and as 298 of 1,277 FAQ answers that were not on the page. Markup drifts from prose in the same direction every time, because the markup is generated and the prose is written.

SiteNodesOff pageWords of text served
seota.com1182,547
gardencityplumbing.com87856
thewireguyelectric.com96530
ama.com.au731,296
roberthalltaxes.com621,468
strabo.app221,220
sammylabs.com1115
povio.com81881
iheald.com115,136
tiki.vn112,083
The 10 sites whose Service names did not all appear in the delivered text, measured by Lantad on 7 October 2026. Nodes is every Service node on the home page; off page is how many of their names were absent from the page text after entity decoding and whitespace normalisation.

Does any engine document reading it?

No engine documents a result built from Service, and the honest version of that sentence is longer than the sentence. Google's gallery of supported structured data features, carrying a last updated date of 15 June 2026, lists 25 features: Article, Breadcrumb, Carousel, Course list, Dataset, Discussion forum, Education Q&A, Employer aggregate rating, Event, Image metadata, Job posting, Local business, Math solver, Movie, Organization, Product, Profile page, Q&A, Recipe, Review snippet, Software app, Speakable, Subscription and paywalled content, Vacation rental and Video. Service is not among them, and the word does not appear on the page.

What Google does not say is that it ignores the type. Its introduction to structured data, last updated 10 December 2025, says the opposite twice over: that there are more attributes and objects on schema.org that are not required by Google Search, that those may be useful for other search engines, services, tools, and platforms, and that Google can make general use of the sameAs property and other schema.org structured data, some of which may be used to enable future Search features if they are deemed useful. So the position a site owner is actually in is that Service earns no documented result today, may be read by something, and is governed in the meantime by the one rule Google does state about all markup, which is the visibility rule the previous section measured against.

That is a weaker claim than either side of this argument usually makes, and it is the claim the evidence supports. A rich result is not the only reason to write markup, and this blog has published the case for writing it anyway: the FAQ entries on this page emit FAQPage data for an answer engine rather than for a snippet, long after Google withdrew the FAQ rich result while the type kept being scored. But the case for markup with no documented consumer rests entirely on the markup being accurate, which is what makes 46 empty nodes and 32 off page names the relevant findings rather than the raw adoption count. It also sets the ceiling on what any of this buys: in a citation audit this blog covered, structured data came third behind other factors, and anyone sizing the work should read generative engine optimisation with that ordering in mind.

  • schema.org/Service Defined A service provided by an organization, with 22 own properties and seven subtypes, vocabulary release 30.1 of 16 September 2026
  • Google search gallery Absent 25 features listed on 15 June 2026 and Service is not one of them, nor does the word appear on the page
  • Google intro to structured data Not excluded Says undocumented attributes may be useful for other search engines, services, tools, and platforms, and may enable future features
  • Google general guidelines Constrained Do not mark up content that is not visible to readers of the page, last updated 10 July 2026
What the primary documentation says about Service, read at source on 7 October 2026. Reported from published documentation, not measured by Lantad.

What this run did not measure

No engine was observed. Every request in this run came from this scanner, identified as LantadBot from one network location, so nothing here is evidence that Google, OpenAI, Anthropic or anyone else read, used or ignored a Service node. The statements about what the documentation says are quotations from pages opened at source on 7 October 2026, and the statements about what engines do with the type are absent because this run cannot support any.

One page was read per hostname, the home page. A trades business that declares its services on a dedicated services page and not on the front page is invisible to this count, and that is the single likeliest reason 20 is an undercount rather than a rate. No JavaScript was executed, so a Service node injected by a client side script was not seen, and that gap has a measured size on this corpus: 27 of 404 pages with no JSON-LD in the HTML gained some once a browser ran them. Only JSON-LD was parsed, though the microdata check above found no Service in the 93 pages carrying an itemtype attribute, so on this corpus that limit cost nothing. Fourteen blocks across six sites failed to parse as JSON and their contents are unknown; if any held a Service node it is missing from all of these figures.

The 341 hostnames that served no page are absent from every rate, and they are not a random sample of the web: 216 of them refused this crawler with HTTP 403, which selects for sites that have opinions about crawler access. The corpus itself is an editorial sampling frame assembled for platform and industry coverage, not a random draw, so every figure here describes these 1,419 hostnames on one date and nothing wider, as the methodology sets out. One last point about this scanner rather than the corpus: Lantad does not validate Service either. The requirements table in core/src/schema.ts names five types, Organization, Product, Article, FAQPage and BreadcrumbList, with six subtype aliases beside them, and anything outside that list is treated as an unrecognised type carrying no business fact the scanner can check. So a site could declare 11 Service nodes with every name absent from the page and read nothing about it in a Lantad report. That is a gap in our own coverage and it is named here for the same reason the counts are. Readers who want to see what their own page hands a crawler before any of this applies can start with what GPTBot sees.

  • One home page per hostname 1,078 pages read; a dedicated services page was never requested, so 20 sites is a floor
  • JSON-LD parsed 1,173 blocks, 14 of which failed to parse as JSON across six sites
  • Microdata checked 93 of 1,078 pages carried a schema.org itemtype and none of them named Service
  • JavaScript executed A client injected Service node was not seen; 27 of 404 pages gained JSON-LD from a browser in an earlier run
  • Any engine observed Every request was sent by LantadBot from one network location
  • Service scored by this scanner Lantad's schema scoring reads identity nodes, so an empty Service node is invisible in a Lantad report
What this run covered and what it did not, recorded on 7 October 2026 so the figures are read with their limits attached.

Written by

Lantad

Published .

Almost every schema type this blog has counted exists to describe a thing: a person, an article, an event, a product. Service is the one that describes an activity, and for a large part of the economy it is the only type that fits. A plumber, a tax practice, a clinic and a cloud platform all sell work rather than objects, and the schema.org vocabulary gives them one type to say what that work is. So the question a reader doing structured data for an answer engine actually wants settled is narrow: do sites use it, and when they do, does the markup carry anything an engine could lift into an answer.

Common questions

What is service schema markup?

Service schema markup is JSON-LD or microdata declaring a node of the schema.org type Service, which that vocabulary defines as a service provided by an organization, e.g. delivery service, print services, etc. The type carries 22 properties of its own, including provider, areaServed, serviceType, offers and hasOfferCatalog, and inherits name, description and url from Thing. Seven more specific types inherit from it, among them FinancialProduct, GovernmentService and TaxiService.

Does Service schema produce a rich result in Google?

No. Google's gallery of supported structured data features listed 25 features on 15 June 2026 and Service is not one of them. Google does not say it ignores the type: its introduction to structured data, last updated 10 December 2025, says attributes it does not require may be useful for other search engines, services, tools, and platforms, and that some may enable future Search features. So the type earns no documented result today and is not documented as discarded either.

How common is Service schema markup on home pages?

Uncommon. Of the 616 home pages Lantad found carrying parseable JSON-LD on 7 October 2026, 20 declared a Service node, which ranks the type thirtieth of 147 distinct types in that set. Organization appeared on 411 of the same pages and LocalBusiness on 60. Five of the 20 sites were in this corpus's Webflow stratum and three in its WordPress small business stratum, both heavy in trades and professional practices.

Does the service name have to appear on the page?

Google's structured data general guidelines, last updated 10 July 2026, say not to mark up content that is not visible to readers of the page, and list content hidden from the user among the reasons structured data may not be used. On 7 October 2026 Lantad found 32 of 89 service names, across 10 of 20 sites, appearing nowhere in the text the crawler was served, usually because the name existed only as the itemOffered of an Offer inside a JSON-LD block.

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.