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

The Villas Cafe website

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…

Location
Finsbury Park, London
Year
2025
Read the case study
The Delta Surveillance website

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…

Location
London
Year
2025
Read the case study

Before 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.

Email usGet a fixed quote

Privacy choices

This site measures which pages get read and which links get used, so we know what to write more of. It is anonymous: no advertising, no profiling, no data sold or shared, and nothing follows you to other sites.