Law Firm Schema Markup for AI Search: LegalService and Attorney Profiles
Your website says "law firm" to people, not to machines
A visitor landing on a firm website knows within a second that it is a law firm. The logo, the photos of attorneys in suits and the words "free consultation" make that obvious. A crawler sees none of that context. It sees text, and unless the site declares otherwise, it has to guess what kind of entity it is reading, where it operates and what it does.
Structured data, usually written as JSON-LD in the page head, removes the guessing. It is the most direct way to tell search engines and AI systems that this website belongs to a legal practice, which areas of law it handles, where it serves clients and which attorneys work there. It is also easy to overlook, because nothing on the visible page changes when it is missing. Plenty of firm sites have no structured data at all, or only a generic Organization block that never mentions law.
The firm: LegalService
The schema.org type for a law firm is LegalService. It is a kind of LocalBusiness, so it supports everything a local business needs: name, address, phone, hours, service area and links to your profiles elsewhere. You may see the older Attorney type in plugins and tutorials; schema.org marks it as superseded by LegalService, so use LegalService for the firm.
A solid LegalService block looks like this:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LegalService",
"@id": "https://www.examplelaw.com/#firm",
"name": "Example Law Group",
"url": "https://www.examplelaw.com/",
"logo": "https://www.examplelaw.com/images/logo.png",
"telephone": "+1-555-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Main Street, Suite 200",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78701",
"addressCountry": "US"
},
"areaServed": [
{ "@type": "City", "name": "Austin" },
{ "@type": "AdministrativeArea", "name": "Travis County" }
],
"knowsAbout": ["Estate planning", "Probate", "Trust administration"],
"sameAs": [
"https://www.linkedin.com/company/example-law-group",
"https://www.example-bar-directory.org/firms/example-law-group"
]
}
</script>
Three properties do most of the work for AI visibility:
- areaServed names the places you take clients from. Be specific. "Austin" and "Travis County" are useful. "Texas and beyond" is not.
- knowsAbout lists your practice areas in plain words, the same words clients use.
- sameAs links your site to the same firm on other sites, so a model can connect scattered mentions into one confident picture. Our guide to Organization schema explains why this property matters more than it looks.
The @id gives the firm a stable identifier that other blocks on your site can point to, which is how attorney profiles connect back to the firm below.
The attorneys: Person
AI systems weigh authorship and expertise when deciding which sources to trust. On a law firm site, the expertise lives in the attorneys, so each attorney profile page should describe that attorney as a Person:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Jordan Lee",
"jobTitle": "Partner, Estate Planning Attorney",
"worksFor": { "@id": "https://www.examplelaw.com/#firm" },
"url": "https://www.examplelaw.com/attorneys/jordan-lee/",
"image": "https://www.examplelaw.com/images/jordan-lee.jpg",
"alumniOf": "Example University School of Law",
"memberOf": { "@type": "Organization", "name": "State Bar of Texas" },
"knowsAbout": ["Estate planning", "Probate"],
"sameAs": [
"https://www.linkedin.com/in/example-jordan-lee",
"https://www.example-bar-directory.org/attorneys/jordan-lee"
]
}
</script>
The worksFor reference uses the firm's @id, which ties the attorney to the firm without repeating the firm's details. Then attribute practice-area pages and articles to the attorney who wrote or reviewed them, both in visible bylines and in the page's Article markup. The reasoning is covered in why author bios and bylines matter more than ever.
Practice pages: FAQPage
Practice-area pages that end with a short set of real client questions can mark that section up as FAQPage. The question-and-answer format maps directly onto how people ask AI tools for legal guidance. Keep the visible questions and the markup identical. Declaring questions in schema that never appear on the page is treated as manipulation, and it undermines trust in the rest of your markup. We cover the details in FAQ schema: the easiest win for AI citations and the common pitfalls in schema markup mistakes that hurt AI visibility.
Common mistakes on firm websites
- Two conflicting firm blocks. A theme and an SEO plugin both output organization markup with different names or addresses. Check the page source and keep exactly one.
- Address and phone that do not match the visible page. If the footer and the markup disagree, the markup loses credibility.
- Attorney pages with no Person markup. The most valuable expertise on the site is invisible to machines.
- Reviews in markup that are not on the page. Self-serving review markup on your own site is a known source of problems with search engines. Leave reviews to the platforms where clients actually post them.
- Copy in markup that has not been reviewed for advertising rules. Structured data is published content too. Apply the same state bar review you would apply to visible copy.
Checking your work
Run each page through a structured data validator to confirm the JSON parses and required properties are present. A validator will not tell you whether the markup is accurate or whether it matches the visible page, so read it against the page yourself.
A DidItIndex scan checks structured data on every page you submit, recognizes LegalService and the other legal-practice types, and pairs that with crawler access tests, authorship signals and what AI tools currently say about your firm. See how the audit applies to legal practices on our AI visibility audit for law firms page.
Frequently asked questions
What schema type should a law firm use?
LegalService, which is the schema.org type for a business that provides legal services. It is a type of LocalBusiness, so it carries your name, address, phone, hours and service area. The older Attorney type is marked on schema.org as superseded by LegalService.
How should individual attorneys be marked up?
As Person entities with name, jobTitle, the firm they work for, education, bar or association memberships, the topics they practice, and sameAs links to their bar listing and professional profiles.
Where does law firm schema go on the website?
LegalService belongs on the homepage and contact page at minimum, and can be included site-wide through a shared template. Each attorney profile page carries that attorney's Person markup. Practice-area pages can add FAQPage markup for their question sections.
Can schema markup alone get my firm recommended by AI?
No. Structured data removes ambiguity about who you are and what you do, but it does not replace crawler access, substantive practice-area content, named attorneys or mentions on other sites. It is one of several signals, and one of the quickest to fix.
Check your own AI visibility
Scan any URL across 5 AI visibility modules in minutes. Free credits on signup.
Scan Your Site Free