Schema markup for law firms is more layered than most verticals. You have two distinct structured data targets — the firm as a legal service entity and individual attorneys as professional persons — and getting both right, and linking them to each other, is what separates a complete implementation from a thin one. Most law firm sites address one or neither. This guide covers both, plus the supporting types that round out a full legal site schema strategy.
Before going further: schema markup is not a direct ranking factor. It helps machines understand your entities precisely, which supports Knowledge Panel accuracy, local pack eligibility, and rich result eligibility. That is a real return. It just is not a magic ranking lever, and any consultant who tells you otherwise is selling you a shortcut that does not exist.
What Is Schema Markup for Law Firms?
Schema markup for law firms is structured data, written in JSON-LD format and embedded in your site’s <head>, that tells Google (and other search engines and AI systems) exactly what your firm is, who works there, where you are located, and what practice areas you cover. The primary type is LegalService, a schema.org subtype of LocalBusiness. When implemented with the right properties, it feeds the data that populates your Knowledge Panel, supports Maps visibility, and makes your FAQ sections eligible for rich results.
The entities that matter most for a law firm site: LegalService, Person (for attorneys), FAQPage, BreadcrumbList, and optionally Review and AggregateRating. Each one lives on a different page type and serves a different purpose. Structured data does not replace good content — it annotates it so machines can trust what they read.
LegalService and LocalBusiness: The Firm Entity
LegalService is the schema.org type for law firms and legal practices. It inherits from LocalBusiness and signals to Google that you are a professional service entity, not a generic business listing. Use it on your homepage and any location pages. Core properties include name, address, telephone, areaServed, openingHoursSpecification, priceRange (optional but useful), geo with GeoCoordinates, and sameAs pointing to your Avvo, Martindale, or Super Lawyers profiles.
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'LegalService',
'name': 'Harmon & Wade Law Group',
'url': 'https://harmonwadelaw.com',
'telephone': '+1-602-555-0177',
'areaServed': 'Phoenix, AZ',
'address': {
'@type': 'PostalAddress',
'streetAddress': '2400 N Central Ave, Suite 300',
'addressLocality': 'Phoenix',
'addressRegion': 'AZ',
'postalCode': '85004',
'addressCountry': 'US'
},
'geo': {
'@type': 'GeoCoordinates',
'latitude': '33.4734',
'longitude': '-112.0740'
},
'openingHoursSpecification': [
{
'@type': 'OpeningHoursSpecification',
'dayOfWeek': ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
'opens': '08:30',
'closes': '17:30'
}
],
'sameAs': [
'https://www.avvo.com/law-firms/harmon-wade',
'https://www.martindale.com/law-firms/harmon-wade'
]
}
</script>
The areaServed property accepts a city, region, or a nested GeoCircle for radius-based service areas. For firms serving a metro area across multiple counties, listing the primary metro and the specific counties the firm covers is more accurate than a single city string.
Attorney Profiles as Person Entities
Individual attorney bio pages should carry a Person entity that links back to the firm via the worksFor property. This builds an entity relationship Google can resolve: the person belongs to the organization, the organization is a LegalService. That relationship reinforces E-E-A-T signals for practice area content written under that attorney’s name — which matters more than ever with AI Overviews evaluating expertise signals before surfacing a source.
Properties to include on attorney pages: name, jobTitle, telephone, email (if publicly listed), url, sameAs with bar association profile URLs and LinkedIn, and alumniOf for law school credentials. The knowsAbout property is underused and worth adding — list the practice areas that attorney actually covers. It is one of the cleaner ways to build topical authority at the entity level.
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'Person',
'name': 'Sarah Harmon',
'jobTitle': 'Managing Partner',
'url': 'https://harmonwadelaw.com/attorneys/sarah-harmon',
'worksFor': {
'@type': 'LegalService',
'name': 'Harmon & Wade Law Group'
},
'alumniOf': {
'@type': 'CollegeOrUniversity',
'name': 'University of Arizona James E. Rogers College of Law'
},
'knowsAbout': ['Family Law', 'Divorce Litigation', 'Child Custody'],
'sameAs': [
'https://www.linkedin.com/in/sarah-harmon-attorney',
'https://www.azbar.org/attorneys/sarah-harmon'
]
}
</script>
FAQPage Schema for Practice Area Pages
Practice area pages that include a frequently asked questions section are solid candidates for FAQPage schema. Family law, personal injury, and immigration pages almost always have FAQ content. When implemented correctly, FAQPage markup makes those questions eligible to appear directly in search results as expandable rich snippets — visible below the main listing, adding height to your organic result without buying an ad.
Structure the markup with FAQPage as the top-level @type and nest each question-answer pair as a Question entity with an acceptedAnswer. Keep answers factual and match exactly what is visible on the page. Google will pull the FAQ rich result only when the content is genuinely helpful and the schema reflects what is rendered — not content buried in an accordion that Google cannot crawl. If your FAQ section is JavaScript-driven, test the rendered output, not the source HTML, to confirm Google can read the answers.
BreadcrumbList, Review, and Supporting Types
A BreadcrumbList on every inner page is table stakes for a multi-section law firm site. It communicates site hierarchy to Google, reinforces internal linking structure, and can produce breadcrumb rich results in organic listings. For reviews: only include AggregateRating or Review data from sources you have the right to use. Do not aggregate third-party ratings from Avvo, Google, or Yelp and embed them in your schema unless the platform explicitly permits it — Google has flagged this pattern consistently and will ignore or demote the markup.
If you run seminars, webinars, or community legal clinics, Event schema is another underused type in this vertical. Multi-location firms should create a separate LegalService entity for each physical location, each with its own accurate address, phone number, and hours. A single consolidated block covering all offices does not give Google the location-specific signals it needs for local pack eligibility at each address.
How to Test and Validate Law Firm Schema
Two tools to use every time you add or change structured data. First: Google Rich Results Test — paste the URL or code directly and it will tell you which types are detected, which rich results you are eligible for, and what errors or warnings exist. Second: Schema Markup Validator — this validates against schema.org vocabulary and catches property mismatches the Rich Results Test does not surface.
Common errors on law firm sites: wrong @type (using LocalBusiness instead of LegalService), missing geo coordinates, sameAs pointing to 404 pages on bar association directories, and FAQPage markup on pages where the questions are behind a JavaScript accordion Google cannot render. Fix those first and re-test before worrying about anything else. For ongoing coverage, Google Search Console Enhancements will surface structured data errors as they appear across indexed pages.
Schema Markup and AI Search for Legal Sites
AI Overviews and LLMs use structured data as a trusted shortcut for entity resolution. When Google’s AI systems encounter your firm name, they check structured data — and the knowledge graph it feeds — to confirm what the entity is, who is associated with it, and what it is authoritative on. A properly linked LegalService and Person graph with consistent sameAs values across your site and third-party profiles is the clearest signal you can send. This matters more than it did two years ago, and the gap between firms with complete entity graphs and those without is only going to widen.
For related implementation patterns and how schema fits into a broader technical SEO approach, see how to add schema markup, schema markup best practices, and how to test schema markup. For a related vertical with similar local entity needs, see schema markup for real estate websites. If you want a professional to audit and implement your firm’s structured data, the schema markup audit is the right starting point, and schema markup consulting covers done-for-you implementation for legal practices of all sizes.