← Back to home
8 min read

Schema.org for businesses: LocalBusiness, Organization and the markup AI reads

Schema.org markup in JSON-LD is the data layer that lets ChatGPT, Perplexity or Gemini know what your firm is, what it does and where. This guide sets out which types to use (and which to avoid), which properties carry the most signal, and leaves a complete example ready to adapt.

Short answer. For a law firm, the recommended type is LegalService; for a tax or accountancy practice, AccountingService; for a general consultancy, Organization or LocalBusiness with Service nodes. The generic ProfessionalService is deprecated in Schema.org for general use. The properties that carry the most signal to generative engines are knowsAbout, sameAs, address (consistent NAP), founder/Person with worksFor, and a FAQPage block. All of it in JSON-LD, inside a <script> in the <head>.

Why this markup matters more than ever

A website is written twice: once for people and once for machines. The human layer is the design and the copy; the machine layer is the structured markup. For years that second layer only fed Google's rich snippets. Today it is the raw material generative engines use to decide whether your firm exists as an entity and whether they can recommend it with confidence.

Across our diagnostics, most law firm websites — including some that are excellent for humans — are mute to a machine: no markup at all, or generic markup that declares neither speciality nor location. We measured the result in the Madrid Bar Test, run on the Spanish market: AI recommends the few firms it can read.

Which type to choose, case by case

Type of firmRecommended Schema typeNote
Law firmLegalServiceInherits from LocalBusiness; there is also Attorney for individual profiles
Tax / accountancy practiceAccountingServiceSpecific and unambiguous
General consultancy / B2B boutiqueOrganization or LocalBusinessWith Service nodes per service line
Any professional serviceProfessionalService⚠️ Deprecated for general use — see below

The ProfessionalService case: deprecated, with nuance

Schema.org marks ProfessionalService as deprecated for ambiguity, and recommends the specific types in the table. Using it does not 'break' anything — validators accept it and plenty of sites carry it — but the specific types give the engine more semantic clarity. Where compatibility matters, a robust practice is to declare the type as an array: "@type": ["LegalService", "Organization"] — the engine takes the specific type and keeps the generic base that Google recommends for administrative data.

The properties that carry the most signal

A complete example (ready to adapt)

A single block in the <head> of the home page, with a connected graph:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": ["LegalService", "Organization"],
      "@id": "https://www.yourfirm.co.uk/#organization",
      "name": "Firm Name",
      "url": "https://www.yourfirm.co.uk",
      "logo": "https://www.yourfirm.co.uk/logo.png",
      "description": "Firm specialising in corporate law and M&A in London.",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "Example Street 1",
        "addressLocality": "London",
        "postalCode": "EC4M 7LS",
        "addressCountry": "GB"
      },
      "telephone": "+44 20 7000 0000",
      "email": "contact@yourfirm.co.uk",
      "areaServed": { "@type": "Country", "name": "United Kingdom" },
      "knowsAbout": ["Corporate Law", "M&A", "Compliance"],
      "sameAs": [
        "https://www.linkedin.com/company/yourfirm/"
      ],
      "founder": [{
        "@type": "Person",
        "name": "Partner Name",
        "jobTitle": "Managing Partner",
        "worksFor": { "@id": "https://www.yourfirm.co.uk/#organization" },
        "sameAs": ["https://www.linkedin.com/in/partner/"]
      }]
    },
    {
      "@type": "Service",
      "name": "M&A advisory",
      "provider": { "@id": "https://www.yourfirm.co.uk/#organization" },
      "serviceType": "Mergers and acquisitions",
      "areaServed": "GB"
    }
  ]
}

Always validate at validator.schema.org before publishing. A JSON-LD block with a syntax error is invisible in full, not in part.

Mistakes we see every week in diagnostics

A note on honesty: Schema.org is a necessary condition, not a sufficient one. It makes your website legible, but engines also need to corroborate the entity in external sources (directories, mentions, profiles). A firm with perfect markup and no external authority will still not appear in competitive queries. The technical side is fixed in weeks; authority is built over months — we documented it in our own dogfooding audit.

How it fits into a full GEO strategy

Markup is the technical legibility phase of Generative Engine Optimization: it comes after the diagnostic (measuring whether AI sees you) and before the authority work (getting other sources to corroborate you). The full discipline, with phases, prices and criteria for choosing a provider, is in the guide GEO consulting for law firms; the measurement method is in the algorithmic visibility audit.

Frequently asked questions

Which Schema.org type should a law firm use?

For a law firm, the recommended type is LegalService (which inherits from LocalBusiness), complemented by Service nodes for each practice area, Person for each partner linked through worksFor, and FAQPage on the pages that answer questions. For a general consultancy or accountancy practice, the recommended base is Organization or LocalBusiness with Service nodes. All of it in JSON-LD format.

Is ProfessionalService deprecated?

Yes. Schema.org marks ProfessionalService as deprecated for general use because it is ambiguous, and recommends more specific types: LegalService for law firms, AccountingService for tax and accountancy practices, or Organization/LocalBusiness as a generic base. Using it does not break anything on its own, but the specific types give more semantic clarity. A robust practice is to declare the specific type alongside Organization in an array.

Which Schema.org properties matter most for visibility in AI?

The ones most often missing and carrying the most signal: knowsAbout (explicit specialities), sameAs (verifiable profiles that build the entity graph), a complete address consistent with the rest of your online presence (NAP), founder/Person with worksFor, and FAQPage (its question-answer pairs already come in the format engines extract).

Is Schema.org enough for AI to recommend my firm?

No. Markup makes the website legible to the machine, which is a necessary but not a sufficient condition. Engines also need to corroborate the entity in external sources (directories, mentions, verifiable profiles). A firm with perfect Schema and no external authority will still not appear in competitive queries. The technical side is fixed in weeks; authority is built over months.

Update (July 2026): the markup in practice

Schema is the layer we release, not the one we build: it makes legible to the engine what the firm already is. We tested it on our own website — impeccable markup from day one — and in two months we went from no engine recognising us to Gemini including us among the consultancies it recommends, in Spanish-language queries. Schema was the necessary condition; authority was the slow work that came after. How it looked, here.

Want to know whether your markup is legible to AI?

The GEO audit covers a full technical scan of your website (Schema, NAP, robots, indexing), the twenty-query Bar Test across the five engines and a 30/60/90-day implementation plan. From €1,500.

Request a diagnostic