Structured data, done properly
Structured data is how you tell search engines and AI assistants what your pages mean rather than leaving them to guess. We build one linked JSON-LD graph per page covering your business, services, hours, menu, FAQs and reviews, validated against both the Schema.org vocabulary and Google before it ships.
- One linked graph per page, not a pile of unconnected snippets
- The specific business type, not a generic LocalBusiness
- Validated against Schema.org and Google before launch
- Included in every build we do, or retrofitted to a site you already have
PriceQuotedFull pricing
We measured how rare this is
We audited 190 US restaurant websites across eight cities and 94% carry no menu markup at all - not on the homepage, not on the menu page. 91% never declare that they are a restaurant. That is the gap this work closes, and it is measured rather than asserted.
What it is, without the mystique
Structured data is a block of JSON in the page that says, in a vocabulary machines already agree on, what the page is about. That this is a restaurant. That it opens at nine. That this dish costs $14.50. That these four questions have these four answers.
Without it, a search engine is inferring all of that from prose, and an assistant answering a question about you is guessing.
One graph, properly linked
The common failure is not missing markup - it is markup that contradicts itself. Five pages each
declaring a fresh LocalBusiness with no identifier have told search engines there are five
businesses.
We build one graph per page where each real-world thing has a stable @id and everything else
references it. The business is declared once; the service pages point at it; the menu is defined
on the menu page and referenced elsewhere. The schema mistakes
guide works through the seven we see most.
The specific type, always
AutoRepair, not LocalBusiness. CafeOrCoffeeShop, not Restaurant. LodgingBusiness, not
Organization. The specific types inherit everything the generic ones have and add meaning on
top, so there is no cost to precision and a real cost to vagueness.
Across our builds that has meant Restaurant, Menu, MenuItem, OrderAction,
ReserveAction, LodgingBusiness, HotelRoom, BedDetails, CafeOrCoffeeShop, AutoRepair,
Service, FAQPage, AggregateRating and BreadcrumbList.
Two things we will not do
We will not promise rich results. Markup makes a page eligible and Google decides the rest.
We will not mark up a rating you do not have. Fabricated AggregateRating is a spam policy
violation, it attracts a manual action, and the penalty lands on the whole domain rather than the
one page.
Where this is running

Cafe
Villas Cafe
Most cafe sites publish the menu as a picture or a PDF, which means no search engine can read a single dish or a single price…
Read the case study
CCTV and security installation
Delta Surveillance
Security installation is a considered purchase made by people who do not know the vocabulary. They search for the problem rather…
Read the case studyBefore you enquire
What this is not.
Every service page should say where it stops. If one of these is what you need, we are the wrong call and would rather you knew now.
- Guaranteeing rich results. Markup makes a page eligible; Google decides what to show, and anybody promising otherwise is overselling.
- Inventing reviews or ratings. We will not mark up a rating you do not have, because that is a spam policy violation that risks a manual penalty.
Questions we get asked
Will this get me rich results in Google?
It makes you eligible, which is the only honest claim available. Google decides what to show based on the query, the page and its own confidence, and correct markup never guarantees a result. What it reliably does is make your content readable, which matters more every year as assistants answer questions directly.
Can you retrofit this to my existing site?
Usually yes, and it is one of the better-value things to do to a site that is otherwise fine. The work is mostly in getting the entities and their relationships right rather than in writing JSON, so it does not depend much on what the site is built with.
How do I know it is correct?
We validate against the Schema.org validator and Google’s Rich Results Test before launch, and they check different things - one tells you the vocabulary is right, the other tells you Google can use it. You get both results, and you can re-run them yourself whenever you like.
Tell us what you need built.
A short call, a straight answer on scope and cost, and a fixed quote. No retainer, no monthly fee, no commission on your orders.