The short answer
A parser can read a claim without knowing whether it is true.
Schema is structured information about a page and the things it describes. JSON-LD is one format for expressing it. A successful JSON parse establishes readable syntax; it does not establish the right vocabulary, accurate business facts, or eligibility for a Google search feature.
Google says some structured-data quality requirements are difficult to test automatically. The useful workflow therefore starts with evidence: describe the actual business, connect existing identities, and review the specific feature requirements after the page facts are settled.
01 / Original observation
Twenty homepages. Twenty-five parseable blocks. Further questions remained.
On October 22, 2026, MooseRank collected public server-response HTML from five Long Island handyman providers, five Long Island HVAC providers, five Austin plumbing providers, and five Denver-area electrical providers. Fifteen linked contact pages supplied additional context. MooseRank itself was reviewed separately.
The domains were a convenience sample discovered through public searches, excluding directories and marketing publishers. They were not randomly selected or treated as the top Google results. One plumbing-domain connection failed and was replaced; the downloadable record preserves that attempt. Provider affiliations were not assessed. Collection and source-text comparisons were AI-assisted; aggregation and source hashes were checked programmatically. The sampled business owners did not verify the findings.
Direct business-node properties appeared on nine homepages for telephone, nine for hours, nine for areaServed, and seven for a street-address property. Own-business aggregate-rating markup appeared on two. These are presence counts, not requirements, quality scores, or findings of policy violations.
One homepage had microdata indicators and none had detected Schema.org RDFa indicators. These other formats were not fully parsed. A homepage without observed JSON-LD might still supply other markup or add it through JavaScript. The study did not inspect Google's rendered version, test rich-result eligibility, or measure rankings.
Inspect the 20 source records and observations
Each record identifies the collected homepage and its scope. Counts inspect direct properties on typed JSON-LD business/organization descriptions, including incomplete ones. They do not resolve linked properties, count nested contact points, or infer that each declaration is a separate company. Exact addresses, phone numbers, full graphs, and raw HTML are omitted from the public dataset.
S01 / handymanthebluewhalehandyman.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 2
- Business declarations
- 1
- Hours property
- Observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:13.809894 UTCS02 / handymananker.services ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 0
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:13.812232 UTCS03 / handymanwww.huntingtonhandyman.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 1
- Business declarations
- 1
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:13.812232 UTCS04 / handymanrhir.net ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 0
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:13.813453 UTCS05 / handymanprecisionhomerepairli.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 2
- Business declarations
- 1
- Hours property
- Observed
- Coverage property
- Observed
Server body is an application shell; agreement with rendered visible content was not determined.
Fetched 2026-10-22 05:22:13.813453 UTCS06 / HVACwww.acscoolingandheating.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 0
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:14.848459 UTCS07 / HVACwww.huntingtonairconditioning.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 2
- Business declarations
- 2
- Hours property
- Observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:15.494882 UTCS08 / HVACwww.soundviewhvac.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 1
- Business declarations
- 1
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:16.126255 UTCS09 / HVACseasonsair.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 1
- Business declarations
- 2
- Hours property
- Observed
- Coverage property
- Observed
Opening-hours scope unresolved: routine office hours and emergency availability are described differently.
Fetched 2026-10-22 05:22:16.208385 UTCS10 / HVACwww.nhross.com ↗ Huntington / Long Island, New York
- JSON-LD blocks
- 1
- Business declarations
- 3
- Hours property
- Observed
- Coverage property
- Observed
Two emitted business schedules differ; visible live-answering availability does not resolve the intended opening schedule.
Fetched 2026-10-22 05:22:16.446083 UTCS11 / plumberwww.touchstoneplumbing.com ↗ Austin, TX
- JSON-LD blocks
- 1
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:19.792967 UTCS12 / plumberwww.austinsgreatestplumbing.com ↗ Austin, TX
- JSON-LD blocks
- 1
- Business declarations
- 1
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:19.794971 UTCS13 / plumberwww.weplumbatx.com ↗ Austin, TX
- JSON-LD blocks
- 1
- Business declarations
- 2
- Hours property
- Observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:19.795968 UTCS14 / plumberwww.austinplumbing.com ↗ Austin, TX
- JSON-LD blocks
- 1
- Business declarations
- 1
- Hours property
- Observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:21.228388 UTCS15 / electricianwww.redfoxelectric.com ↗ Denver, CO
- JSON-LD blocks
- 4
- Business declarations
- 3
- Hours property
- Observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:21.734592 UTCS16 / electricianwww.welshelectricinc.com ↗ Denver, CO
- JSON-LD blocks
- 2
- Business declarations
- 1
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:21.806708 UTCS17 / electricianwww.chriselectric.com ↗ Denver, CO
- JSON-LD blocks
- 0
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:22.608691 UTCS18 / electricianwww.tegraelectric.com ↗ Denver, CO
- JSON-LD blocks
- 1
- Business declarations
- 0
- Hours property
- Not observed
- Coverage property
- Not observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:22.963751 UTCS19 / electricianunitedelectricdenver.com ↗ Denver, CO
- JSON-LD blocks
- 2
- Business declarations
- 2
- Hours property
- Observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:22:23.623105 UTCS20 / plumberrootermanofaustin.com ↗ Austin, TX
- JSON-LD blocks
- 2
- Business declarations
- 1
- Hours property
- Not observed
- Coverage property
- Observed
Selected claims reviewed against collected page text; this is not business-owner or Google validation.
Fetched 2026-10-22 05:23:04.467618 UTC
02 / What required judgment
An hours field needs a meaning, not just a time range.
In record S09, the emitted all-day schedule sat beside public text that distinguished routine weekday hours from emergency availability. That is an unresolved scope question: which kind of availability does the schedule describe? It is not proof that the business is closed when its markup says it is open.
Record S10 contained two different same-brand business schedules in the collected homepage markup. The public live-answering statement did not establish which opening schedule was intended. The internal difference was observable; the correct real-world schedule was not established.
Record S05 illustrates a different limit. Its response included parseable business markup, while the body was essentially a JavaScript application shell. Comparing that server text with the markup could not settle what users would see after rendering. We kept that comparison unresolved.
These observations explain why we did not publish an error percentage. An absent optional property, a reference to another node, a dispatch schedule, and an actual contradiction need different treatment. The useful next action is to inspect the intended meaning with the business owner and page evidence.
03 / Controlled teaching example
Both documents parse. Their claims differ.
Example Home Services is a real local-provider identity within this teaching scenario. It travels to customers in Example County, publishes weekday opening hours of 09:00–17:00, has no public street address in the supplied facts, and supplies no rating evidence. This scenario is invented; it is not a claim about a sampled provider.
Unsupported additions
Parseable JSON with claims beyond the fact set
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://example.com/#business",
"name": "Example Home Services",
"url": "https://example.com/",
"openingHours": "Mo-Su 00:00-23:59",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Example Street",
"addressLocality": "Example City"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5,
"reviewCount": 200
}
}The all-day schedule, street address, and rating count exceed the supplied evidence. Their readable syntax cannot make those claims true.
Evidence-constrained draft
Same business identity, fewer unsupported assertions
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://example.com/#business",
"name": "Example Home Services",
"url": "https://example.com/",
"areaServed": "Example County",
"openingHours": "Mo-Fr 09:00-17:00"
}This draft keeps the supported identity, coverage, and schedule. Withholding an address means Google's LocalBusiness feature requirements need separate assessment. It is not a Google-approved example.
Our strict JSON parser successfully reads both examples. That is the test performed here. We do not present either as a result from Google's Rich Results Test or the Schema.org validator.
Own-business ratings also have a separate feature restriction: Google does not make self-serving LocalBusiness or Organization review markup eligible for review stars, including reviews embedded through a third-party widget. A syntactically readable rating is not a shortcut around that rule.
04 / Our documented implementation
We removed two availability assertions from MooseRank's graph.
Before this review, MooseRank's public business node included an all-week openingHoursSpecification of 00:00–23:59 and the same all-week schedule under contactPoint.hoursAvailable. The captured homepage and contact text did not state that round-the-clock opening or contact promise.
We could establish what the markup asserted and what the reviewed text did not substantiate. We could not establish actual staff availability from those pages. Our implementation choice was to omit the two assertions pending supported public details, rather than invent a replacement schedule.
- RemovedThe two undocumented availability properties.
- RetainedThe existing LocalBusiness type, business
@id, public contact details, profile references, locality description, and service coverage. - Kept separateGoogle Business Profile settings, which were not changed; real-world availability and Google feature eligibility, which were not independently verified.
The preserved locality-only address is not presented as evidence of a complete physical-address submission for Google's LocalBusiness feature. We did not add a street address, claim a new office, or change the identity just to obtain a cleaner feature test.
The before record includes the source URL, collection time, and source-response hash. The after record contains the implemented business node. A comparison check confirms that only those two availability properties changed. This is a factual cleanup, with no measured ranking or conversion outcome attributed to it.
05 / Choose the statement first
Identity, location, and service are related, but they are different statements.
- Organization
- Describes an organization. It can be a sensible starting identity when a more specific local branch or business description is not supported.
- LocalBusiness
- Describes a particular real local business or branch. Use a genuine suitable subtype where available; keep legitimate parent and branch relationships clear.
- Service
- Describes the offer and links it to its provider. A service-area label describes coverage; it does not establish a physical branch at every place named.
A service-area business does not become an online-only organization merely because it withholds a private street address. Schema.org vocabulary and Google's feature requirements are separate. Google's LocalBusiness guidance requires a physical address for that feature; areaServed describes coverage and does not substitute for it.
Choose the actual business model before considering a search feature. For the separate question of which geographic website pages to build, use our local-page comparison in the next-reading section.
Reusing one stable business @id across pages can connect statements about the same entity. When a website already has markup from a theme, plugin, or custom layout, inspect and reconcile it before adding another business description. Multiple IDs can represent legitimate entities; check meaning and agreement before calling them a conflict.
06 / Interactive walkthrough
Build a small draft and read the reasons.
Use public facts you can support, or load the clearly fictional example. The walkthrough keeps optional claims out until you choose them, preserves an existing identity when supplied, and explains what still needs checking. It does not decide Google eligibility for you.
Interactive / runs in your browser
What can your page actually support?
Enter public facts to create a small review draft with reasons. This walkthrough does not visit your website, check business facts, or run Google's tests. Inputs are not sent to our server or saved by this tool.
- Add the business name supported by your public page.
- Use a complete http or https website URL without a query, fragment, or login details.
- Name one service the business actually provides.
- Confirm that the entered claims are supported, or that you are reviewing the labeled fictional example.
Why the draft includes—or omits—these claims
- No street address is emitted. LocalBusiness vocabulary and Google feature eligibility are separate: areaServed does not replace Google's physical-address requirement. Review eligibility separately without inventing or exposing a private address.
- No opening-hours claim is emitted. A form being available all day does not establish staff, appointment, or emergency availability.
- No rating, review count, FAQ rich-result claim, map position, or guaranteed search appearance is added.
07 / Validation in layers
Use each check for the question it can answer.
- ReadabilityParse the JSON and inspect the delivered page. This catches formatting failures, not business truth.
- Vocabulary and relationshipsUse the Schema.org validator to review supported types and properties, then inspect provider, page, and identity connections.
- Business evidenceCompare each substantive claim with current public page content and owner-confirmed operations. Resolve office, answering, appointment, and emergency scope explicitly.
- Google feature requirementsUse the Rich Results Test for supported features, then Google's URL Inspection when access is available. Passing a tool does not guarantee appearance.
Feature lists also change. Google's May 8, 2026 update states that FAQ rich results stopped appearing starting May 7. Service remains useful Schema.org vocabulary, while Google's current search gallery does not list a standalone Service rich-result feature. Useful visible FAQs and accurate service relationships can remain without a promise of extra search decoration.
Review the graph when hours, services, locations, phone routing, software, or page ownership changes. Record the source of each important claim and give one person responsibility for checking it. The goal is an accurate description that stays connected to the business.
Connect strategy to execution
A priority is only useful when the campaign can act on it.
MooseRank's technical SEO and site foundation connects accurate structured data with crawl access, useful pages, consistent identities, and a working customer path.
As a Long Island SEO company, MooseRank keeps research tied to the services, markets, and customer decisions the business actually wants to win.
Choose the next move
Turn the opportunity set into an accountable plan.
Bring the services, markets, current pages, and search evidence. MooseRank will identify what to build, improve, consolidate, support, or defer.
Straight answers
Common questions
01Must every service-area business use Organization instead of LocalBusiness?+
No. LocalBusiness describes a particular real local business or branch, and a suitable subtype can be appropriate. The separate question is whether the published facts meet Google's current feature requirements. Withholding a private street address does not justify inventing one, and areaServed is not a replacement for a physical address in Google's LocalBusiness feature guidance.
02Does repeating the same business @id on several pages create duplicate businesses?+
No. Reusing a stable identifier can connect references to the same business. Inspect whether the statements agree and whether genuinely different organizations or branches are being described. A repeated description or multiple legitimate entities is not automatically a conflict.
03Why did you count missing fields without calling them errors?+
The study measures what was directly present on selected JSON-LD business nodes. Optional fields may be omitted deliberately, represented through references or other formats, or added after JavaScript renders. Absence under this collection method is not proof that the business or its SEO has a problem.
04Will FAQ or Service markup give my business extra Google search features?+
Do not assume that a Schema.org type has a matching Google feature. Google retired FAQ rich results starting May 7, 2026. Service is useful vocabulary for describing an offer and its provider, but it is not a standalone service rich-result feature listed in Google's current gallery. Visible FAQs can still help readers.
05Does this walkthrough publish or verify my business information?+
No. It runs in the browser and creates a review draft from your inputs. It does not crawl your website, verify your identity, contact Google, or publish code. Check the facts, reconcile existing markup, and use the appropriate validation tools before implementing the draft.
Primary sources
Documentation reviewed
- Google: structured-data quality, accuracy, and testing limits
- Google: LocalBusiness feature requirements
- Google: review snippets and self-serving review restrictions
- Google: May 2026 retirement of FAQ rich results
- Google: supported structured-data search features
- Schema.org: LocalBusiness vocabulary
- Schema.org: Service vocabulary and provider relationships
- Schema.org: areaServed describes coverage
Research note: collected October 22, 2026 with AI-assisted collection and source-text review. The 20-provider convenience sample used server-response HTML, with homepage counts and selected supplementary text comparisons. It was not a random sample, rendered Google audit, ranking study, Schema.org validation, or Rich Results Test. The public method and redacted dataset document the scope. MooseRank's own implementation review was separate. Fictional examples and browser-generated drafts are labeled; no ranking lift or guaranteed feature appearance is claimed.


