Services Results What's Included Blog FAQ
Book a Free Call
← All Articles Technical SEO

Schema Markup for Law Firms: What to Add and What to Avoid

Quick answer: a law firm needs LegalService for the firm, Attorney or Person for each lawyer, Service for each practice area, FAQPage for question content, and BreadcrumbList. Do not put aggregateRating on your own firm. That block is a Google policy violation and the most common serious error we find on legal sites.

Schema markup tells a search engine what your page means rather than leaving it to infer from prose. For a law firm that matters twice over: once for Google's results, and again for AI assistants, which have to decide whether they can confidently name your firm when someone asks for a recommendation.

Comparison of a search engine reading a page as plain text versus reading typed fields provided by schema markup

The firm itself

LegalService is the base type. Many firms use LocalBusiness, which works but is less specific. You can declare both.

{
  "@context": "https://schema.org",
  "@type": ["LegalService", "LocalBusiness"],
  "@id": "https://example.com/#firm",
  "name": "Parian Lawyers",
  "url": "https://example.com",
  "telephone": "+17707275550",
  "priceRange": "Free consultation",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "314 Bradley Street",
    "addressLocality": "Carrollton",
    "addressRegion": "GA",
    "postalCode": "30117",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "Carrollton" },
    { "@type": "City", "name": "Villa Rica" }
  ],
  "knowsAbout": ["Personal Injury", "Car Accidents", "Workers Compensation"]
}

The @id is the important detail. Give the firm a stable identifier and every other block on the site can reference it instead of describing the firm again. That is how you connect an attorney to a firm, or a practice area to a provider, without duplicating data.

Attorneys

Individual attorney pages are among the strongest trust signals a legal site has, and they are frequently unmarked.

{
  "@context": "https://schema.org",
  "@type": "Attorney",
  "@id": "https://example.com/attorneys/cade-parian#person",
  "name": "Cade Parian",
  "jobTitle": "Founding Attorney",
  "worksFor": { "@id": "https://example.com/#firm" },
  "alumniOf": "Georgia State University College of Law",
  "knowsAbout": ["Personal Injury Litigation", "Trucking Accidents"],
  "memberOf": { "@type": "Organization", "name": "State Bar of Georgia" }
}

memberOf for bar admissions and alumniOf for the law school are the credential signals. If you have a Justia, Avvo or state bar profile, add them under sameAs. Those are verified external identities and exactly what an engine uses to confirm the person is real.

Practice areas

One Service block per practice area page, each pointing back at the firm.

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Car Accident Representation",
  "serviceType": "Personal Injury Law",
  "provider": { "@id": "https://example.com/#firm" },
  "areaServed": { "@type": "City", "name": "Carrollton" }
}

A firm with a single "Practice Areas" list ranks far worse than one with a dedicated, marked-up page per area. This is the same pattern that works in every local vertical: depth per service beats a list.

The block that violates policy

"aggregateRating": {
  "@type": "AggregateRating",
  "ratingValue": "4.9",
  "reviewCount": "162"
}

Do not add this to your own LegalService. Google's structured data policy excludes self-serving reviews, meaning ratings a business publishes about itself. It does not matter that the 4.9 is genuine and came from real clients on your Google Business Profile.

Outcomes range from the rich result being silently ignored to a manual action for spammy structured data. We have found this on the majority of legal sites we audit, because it looks like an obvious win.

Keep the reviews as visible content on the page. They still persuade. Google already knows your Google Business Profile rating and will display it where appropriate, sourced directly rather than from your own assertion.

Bar advertising rules still apply

Schema is marketing, and legal marketing is regulated. Most state bars restrict claims about results, superlatives such as "best" or "top", and testimonials without disclaimers. Do not put anything in structured data you would not put in a print advert, and check your own state's rules before marking up case results.

FAQ

What schema markup does a law firm need?

LegalService for the firm, Attorney or Person for each lawyer, Service for each practice area, FAQPage for question content, and BreadcrumbList for navigation. The firm block goes site wide; the others go on their relevant pages.

Can I add my Google rating to my law firm schema?

No. aggregateRating on your own firm entity is a self-serving review under Google's structured data policy, even when the rating is real. Display reviews as page content and let Google source the rating from your Google Business Profile.

Should attorneys have their own schema?

Yes. Individual attorney markup with bar admissions, education and areas of focus is one of the strongest credibility signals available, and it helps engines connect a named lawyer to the firm.

Does schema markup help law firms rank higher?

Not directly. Schema affects how your result is displayed and how confidently engines and AI assistants can describe you. In a vertical where a single case can be worth five figures, being the firm an assistant names is worth more than a small ranking change.

How do I check my markup is working?

Google's Rich Results Test for eligibility, validator.schema.org for syntax, and a search of your page source for application/ld+json to confirm it exists and is not duplicated by your theme.


See how AI assistants currently describe your firm with the free PracticeRank score. Related: AI search and legal client acquisition and LawRank alternatives.

schema markupstructured datalegal SEOlaw firm marketingAEO
Jon Lucas PracticeRank

See How AI Search Engines Rank Your Practice

Get a free AI visibility audit across ChatGPT, Gemini, Claude, Perplexity, and Grok.

Get Your Free Audit →