Entity optimization is making a brand, product, person or concept clear, unambiguous and consistently described, so search engines and AI systems identify it correctly. An entity is a distinct thing with attributes and relationships, while a keyword is a string of text that people type.
Google described this idea as "things, not strings" when it launched the Knowledge Graph in May 2012. Google's 2012 Knowledge Graph announcement said, "It currently contains more than 500 million objects, as well as more than 3.5 billion facts about and relationships between these different objects."
Entity Optimization vs Keyword SEO
Keyword SEO matches pages to the words people search, while entity optimization makes sure machines know which real-world thing those words refer to. Keywords map demand, and entities map meaning.
| Dimension | Keyword SEO | Entity Optimization |
|---|---|---|
| Focus | Matching the words people search | Identifying the thing a page describes |
| Unit of optimization | A query string, such as "product analytics tool" | An entity, such as one specific company or product |
| Main signals | Titles, headings, body copy and anchor text | Entity home, structured data, sameAs links and consistent facts across the web |
| Failure mode | The page doesn't match the query wording | A machine confuses you with a namesake or stores outdated facts |
| How you verify | Rank tracking and Search Console query data | Extracting what machines read about the entity and comparing it to a ground-truth record |
The two approaches work together: keywords help a page get found, and entity signals help machines credit the right company or product. Because the goal is correct identification, you verify entity optimization by checking what machines extract, not by rereading your own page.
How Search Engines and AI Systems Use Entities
Search and AI systems typically process entities in four stages: detect names, link each name to a known ID, weigh its importance and store relationships.
The last stage follows how knowledge graphs work: each entity is a node, and each relationship connects two nodes.
Recognition and Linking: From Words to IDs
Recognition finds entity names in text, and linking connects each name to one specific record in a knowledge base. The recognition step is called named entity recognition (NER), and it labels spans of text as people, organizations, places, products or other types.
Entity linking then decides which "Apple" a page means: the fruit or the company. It assigns an ID, such as a Knowledge Graph MID or a Wikidata QID (an item ID that starts with "Q").
Google's Cloud Natural Language API exposes this output. Google's Cloud Natural Language API documentation says that for most entity types it returns a Wikipedia URL and a Knowledge Graph MID "if they are available." An empty metadata field usually means the name was recognized but not tied to a known record.
Name collisions make linking harder. The word "Mercury" can refer to a planet, a chemical element or a company. A brand that shares a common word needs more context on its pages, such as its category and product names, so linking resolves to the right ID.
Salience: How Central an Entity Is to a Page
Salience is a score from 0 to 1.0 that measures how central an entity is to one document. The Cloud Natural Language API's Entity reference describes the field as "The salience score associated with the entity in the [0, 1.0] range."
Salience is a diagnostic, not a documented Google Search ranking factor. No Google Search documentation says Search uses the score.
Use salience to check that a page is about its target entity. On your About page, your organization should have the highest salience of any entity. The v1 Entity reference documents the salience field, so confirm which fields your API version returns before you build on it.
The Knowledge Graph: Where Entity Facts Live
The Knowledge Graph is Google's store of entity facts, drawn from content across the web plus open source and licensed databases. Google says Wikipedia is "a commonly-cited source, but it's not the only one."
As of 2020, Google's explainer on knowledge panels said, "It has amassed over 500 billion facts about five billion entities." A knowledge panel is the information box Google shows for an entity in search results.
Most facts about your entity therefore live off your site, in profiles, directories, docs and articles. Those pages can change without your involvement, which is why Step 4 of the audit covers monitoring.
The Core Signals of Entity Optimization
Entity optimization relies on four signal types you can inspect and fix. They are the page you control, the markup that declares identity, the links that connect identity and the consistency of facts across the web.
Entity Home: One Canonical Page per Entity
An entity home is the one page that acts as the authoritative source for an entity. For a brand entity, it is usually the About page, and for a product, it is the product page.
Give each core entity exactly one entity home, so machines and people have a single reference point. Align the page title, H1, opening paragraph and markup to the same canonical name.
Mismatched names send mixed signals. If the H1 says "Example Analytics" and the title says "ExAn Inc.", the page presents two competing names. A strong opening sentence states the name and category together: "Example Analytics is a product analytics platform for mobile apps."
Structured Data: Organization Schema, JSON-LD and @id
Structured data is machine-readable code that states what a page describes, and Google's structured data documentation recommends JSON-LD for it. JSON-LD (JavaScript Object Notation for Linked Data) sits in a script tag and declares an entity's type and properties.
Google's Organization structured data guidance says, "Adding organization structured data to your home page can help Google better understand your organization's administrative details and disambiguate your organization in search results." Google lists no required properties, but name, url, logo and sameAs cover the basics of identity.
The @id property gives the entity a stable identifier, usually your homepage URL plus a fragment such as #organization. Other pages can then point to the same @id through about or mainEntityOfPage without redefining the company.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example Analytics",
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example-analytics",
"https://github.com/example-analytics",
"https://www.crunchbase.com/organization/example-analytics"
]
}Many sites already publish some form of structured data. In a Common Crawl sample (Oct 2024), the Web Data Commons 2024 corpus reported, "we found structured data within 1.3 billion HTML pages out of the 2.4 billion pages in the crawl (51.25%)." That figure counts pages with any structured data format, not only schema.org JSON-LD.
Mark up only what readers can see. Google's general structured data guidelines say, "Don't mark up content that is not visible to readers of the page." If your JSON-LD lists a founder, the page should name that founder too.
sameAs and Disambiguation
sameAs is a schema.org property that disambiguates an entity by linking it to other pages about the same thing. Disambiguation means separating your entity from others with the same name.
The schema.org vocabulary defines sameAs as "URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website." Google's Organization documentation uses a social media or review profile as its example.
Point sameAs at profiles that genuinely describe your entity, such as official social accounts, Crunchbase, GitHub and a Wikidata item if one exists. Few sites link to Wikidata today: HTTP Archive's Web Almanac 2024 found sameAs links to Wikidata on about 0.17% of mobile pages.
sameAs declares identity, but it does not prove it. If a target profile shows a different name, logo or category, your markup and that profile disagree. Fix the profile, or remove the link until it matches.
Consistent Facts and Explicit Relationships
Consistent facts mean your entity's core details read the same on your site, docs, profiles and directories. Machines then have one version of each fact instead of several to choose from.
- Name: Use one canonical name everywhere, and list real alternates, such as a former brand name, as
alternateName. - Description: Keep one sentence that states your category, and reuse it on every profile you control.
- Founders: Name the same people with the same titles on your site and on third-party profiles.
- Category: Pick one category phrase, such as "product analytics platform", and avoid rotating labels.
- Product names: Use exact product names, and retire old names on pages you control.
Wrong facts can also come from stale third-party profiles. A directory listing that still shows a previous product name or founder will contradict your entity home until someone updates it.
Relationship sentences connect entities directly, in the pattern entity → action → object. "Example Analytics builds an SDK that tracks events in iOS and Android apps" states a relationship, while a list of loose terms does not.
Internal links work the same way. A link from a product page to the entity home, with the company name as anchor text, connects the product to its maker. Groups of linked pages on one subject are often discussed as topical authority, a broader topic than entity identity.
How to Audit Entity Signals Programmatically
You audit entity signals by extracting what a machine extracts from your pages and profiles, then comparing it to a ground-truth record. Reading your own page shows what you meant, not what a crawler received.
This four-step workflow finds mismatches. It does not measure ranking impact.
Step 1: Define Your Entity Ground Truth
Write one source-of-truth record for the entity and store it as JSON. Every later check compares extracted data against this record.
{
"canonical_name": "Example Analytics",
"alternate_names": ["ExampleAnalytics"],
"url": "https://www.example.com/",
"logo": "https://www.example.com/logo.png",
"founders": ["Jane Doe", "Sam Lee"],
"category": "product analytics platform",
"products": ["Example Analytics SDK"],
"same_as": [
"https://www.linkedin.com/company/example-analytics",
"https://github.com/example-analytics"
]
}Keep the file in version control. A rebrand or launch then updates the record first, and every check inherits the change.
Step 2: Extract What Machines See on Your Pages
Crawl your site, render each page and extract JSON-LD and on-page facts into the same shape as your ground truth. Rendering matters because some sites inject JSON-LD with JavaScript, and a crawler that reads only raw HTML can miss it.
Olostep's /v1/crawls endpoint discovers pages from a start_url, filtered by include_urls patterns and capped by max_pages. Olostep's /v1/scrapes endpoint renders a page and, given an llm_extract schema, returns JSON shaped by that schema. Batches run the same extraction across large URL lists.
Audit your own site and public profiles, and follow each site's terms, robots directives and rate limits. The script extracts entity signals from one page and compares them to the Step 1 record.
import json
import os
import requests
OLOSTEP_API_KEY = os.environ["OLOSTEP_API_KEY"]
ENTITY_SCHEMA = {
"type": "object",
"properties": {
"organization_name": {
"type": "string",
"description": "Organization name stated on the page or in its JSON-LD",
},
"json_ld_types": {
"type": "array",
"items": {"type": "string"},
"description": "Every @type declared in JSON-LD on the page",
},
"same_as": {
"type": "array",
"items": {"type": "string"},
"description": "Every sameAs URL declared for the organization",
},
"description": {
"type": "string",
"description": "The organization's one-sentence description",
},
},
"required": ["organization_name", "json_ld_types", "same_as", "description"],
}
def extract_entity_signals(url: str) -> dict:
payload = {
"url_to_scrape": url,
"formats": ["json"],
"llm_extract": {"schema": ENTITY_SCHEMA},
}
response = requests.post(
"https://api.olostep.com/v1/scrapes",
headers={"Authorization": f"Bearer {OLOSTEP_API_KEY}"},
json=payload,
timeout=120,
)
response.raise_for_status()
result = response.json()
return json.loads(result["result"]["json_content"])
def compare_to_ground_truth(signals: dict, truth: dict) -> list[str]:
issues = []
known_names = {truth["canonical_name"], *truth["alternate_names"]}
if signals["organization_name"] not in known_names:
issues.append(f"Name mismatch: {signals['organization_name']}")
if "Organization" not in signals["json_ld_types"]:
issues.append("No Organization markup found")
for url in sorted(set(truth["same_as"]) - set(signals["same_as"])):
issues.append(f"Missing sameAs: {url}")
return issues
with open("entity_ground_truth.json") as f:
truth = json.load(f)
signals = extract_entity_signals("https://www.example.com/about")
for issue in compare_to_ground_truth(signals, truth):
print(issue)Illustrative sample response (the parsed json_content for a hypothetical page, not real API output):
{
"organization_name": "Example Analytics",
"json_ld_types": ["Organization", "WebSite"],
"same_as": [
"https://www.linkedin.com/company/example-analytics"
],
"description": "Example Analytics is a product analytics platform for mobile apps."
}With the Step 1 record, this sample prints Missing sameAs: https://github.com/example-analytics. The step succeeded when every audited URL returns all four fields, even if some are empty.
LLM extraction suits page types whose layouts vary. For fixed fields across many pages built on one template, parsers that return stable JSON give deterministic output, so run-to-run diffs reflect real changes. For exact JSON-LD values, also request the html format and parse the script tags directly.
Step 3: Check How Search and AI Systems Resolve the Entity
Query each system with your entity's name and compare what it returns to your ground truth. Each check shows a different view of how machines have resolved your entity.
- Knowledge Graph: Look up your name with the Knowledge Graph Search API and check the returned entity, type and description.
- Brand SERP: Record your knowledge panel, People Also Ask questions and top results through scheduled SERP snapshots.
- AI answers: Ask "What is Example Analytics?" and store the answer with its cited sources. Olostep's
/v1/answersendpoint returns an answer plus asourcesarray.
The AI-answer check is worth repeating on a schedule, and tracking brand visibility in AI search covers that workflow in more depth.
Flag a wrong category, a namesake merged with your entity or an outdated product name. Then trace each mismatch to its likely source, such as a stale profile, a vague category phrase or a missing sameAs link.
Step 4: Monitor for Entity Drift
Entity drift is when facts about your entity change on pages you don't control. A directory might rewrite your description, or a profile might still show an old logo after a rebrand.
Monitor your sameAs targets, directory listings and docs pages for changes to name, description, category and logo. The Olostep Monitors API watches pages over time and reports changes, so you can alert on the fields that matter.
Re-run the full audit after a rebrand, a product launch or a leadership change. Update the ground-truth record first, then repeat Steps 2 and 3.
Entity Audit Checklist
Each row pairs one check with the data to compare and the condition that counts as a pass.
| Check | What to compare | Pass condition |
|---|---|---|
| Name match | Name in markup, title, H1 and profiles vs. canonical_name | Every source uses the canonical name or a listed alternate |
Stable @id | @id on every page that references the organization | The same @id value appears on every page |
| sameAs targets | Each sameAs URL vs. the ground-truth record | Each URL resolves and shows the same name, logo and description |
| Markup vs. visible text | JSON-LD properties vs. rendered page text | Every marked-up fact appears on the page |
| Salience on entity home | Cloud Natural Language API scores for the entity home text | The target entity has the highest salience |
| Knowledge Graph resolution | Knowledge Graph Search API result for your name | The result is your entity, with the correct type and description |
| AI answers | Answer text and sources vs. the ground-truth record | Category, products and founders match, and sources include current pages |
What Entity Optimization Can and Cannot Do
Entity optimization can help machines identify and disambiguate your entity, but it cannot promise rankings, knowledge panels or AI citations. Google's introduction to structured data describes it as a way of "providing explicit clues about the meaning of a page."
For AI Overviews and AI Mode, Google's documentation on AI features says, "There's also no special schema.org structured data that you need to add." Google says pages need to be indexed and eligible to show a snippet.
Some generative engine optimization (GEO) vendors claim that schema drives AI citations. We found no controlled study showing that entity markup causes more citations, so treat that claim as unproven.
Markup also cannot add facts that a page lacks. Google's guidelines say structured data should match visible content, so markup works only as a label for what is already on the page.
Being understood still matters when nobody clicks. SparkToro reported in June 2026 that 68.01% of US Google searches in January–April 2026 ended without a click, based on Similarweb panel data. That compares with 60.45% that SparkToro reported for 2024 from a different panel. When an answer appears without a click, its facts may be the only description of your brand a searcher sees.
Frequently Asked Questions
What Is the Difference Between Entity SEO and Semantic SEO?
Entity SEO, another name for entity optimization, focuses on making specific things such as your brand and products identifiable. Semantic SEO is broader and covers how content expresses meaning and topic relationships, so entity SEO is one part of it.
Does Schema Markup Help Entity Optimization?
Yes, as explicit clues: Google says Organization markup can help it understand and disambiguate your organization. Markup does not by itself produce a knowledge panel, rich result or AI citation.
Do I Need a Wikipedia or Wikidata Page?
No. Google says Wikipedia is a commonly cited source but not the only one, and schema.org lists an official website as a valid sameAs reference.
How Long Does Entity Optimization Take to Show Results?
Google does not publish a timeline for entity changes, so no fixed answer exists. Re-run your audit after each fix and record when the Knowledge Graph result, knowledge panel and AI answers reflect it.
Is Entity Optimization Relevant for SaaS and Developer-Tool Companies?
Yes, especially when a product name is a common word or matches another company or open-source project. Developer-tool facts also spread across docs, GitHub and package registries, which gives them more places to drift.
Can I Measure Entity Salience for Free?
Yes, within limits: as of October 2026, Google Cloud's pricing page lists the first 5,000 entity analysis units per month as free. Each unit covers up to 1,000 characters, so one long page can use several units.
s units per month as free. Each unit covers up to 1,000 characters, so one long page can use several units.
