entities
Query the entity map of a stored audit
Every audit builds an entity map: the JSON-LD your pages declare, collapsed across the whole site into one graph. Two pages that both describe the same Organization become one entity with two declaring pages, and a publisher reference that points at an @id nothing declares becomes a dangling edge.
The entities command queries that map without re-crawling anything.
Usage
squirrel entities [query] [options]Arguments
| Argument | Description |
|---|---|
query | An entity @id, key or name (optional, defaults to a summary) |
Options
| Option | Alias | Description | Default |
|---|---|---|---|
--list | -l | List stored audits and their entity counts | false |
--crawl | Crawl ID (or 8-character prefix) to read | latest | |
--type | Only entities of these @type values (repeatable or comma-separated) | all | |
--page | Only entities declared on a page whose URL contains this text (repeatable) | all | |
--problem | Only entities with these problems: no-id, conflict, dangling, single-page, split-identity | all | |
--format | -f | Output format: json, jsonld, html, markdown, csv, dot, graphml, mermaid | console, or markdown when piped |
--output | -o | Write to a file instead of stdout | - |
--input | -i | Read an exported entity map JSON instead of the store | - |
--diff | Compare two audits: the previous and latest by default | false |
Summary
With no arguments, you get the ten most-declared entities and anything worth fixing.
squirrel entitiesENTITY MAP
https://docs.squirrelscan.com/ · 4f2ab91c · 13/09/2026, 00:23
183 entities, 489 references, 100% with a stable @id, across 60 pages
squirrelscan (WebSite) 60x on 60 page(s) https://docs.squirrelscan.com/#website
Introduction (WebPage) 1x on 1 page(s) https://docs.squirrelscan.com/One entity
Pass an @id, a key or a name. Names match loosely and case-insensitively, so squirrel entities acme finds Acme Widgets Ltd.
squirrel entities "https://example.com/#organization"
squirrel entities acmeThe lookup prints the entity’s properties, every page that declares it, its outgoing references, and any property whose value disagrees between pages.
Filters
--type, --page and --problem apply to every output format, not just the console view. -f graphml --type Organization hands your graph tool the filtered graph, and the summary counts describe what survived the filter rather than the whole site.
squirrel entities --type Organization,Person
squirrel entities --page /blog/ -f csv
squirrel entities --problem no-id --problem conflictProblems
| Value | What it selects |
|---|---|
no-id | Declared on several pages with no @id to reconcile them by |
conflict | A property whose value disagrees between pages |
dangling | References an @id that nothing on the site declares |
single-page | Declared on exactly one page |
split-identity | One thing declared under two or more identities |
Export formats
| Format | Use it for |
|---|---|
json | The canonical document, including every page |
jsonld | A @graph you can paste into a validator |
html | An interactive, self-contained graph you can open in a browser |
markdown | A table for a pull request or an agent |
csv | Two tables, entities and references, for a spreadsheet |
dot | Graphviz |
graphml | Gephi, yEd, Cytoscape |
mermaid | A diagram inside a Markdown file |
squirrel entities -f graphml -o entities.graphml
squirrel entities -f dot | dot -Tsvg > entities.svgComparing two audits
--diff reports what changed between two audits of the same site: entities added and removed, entities that gained or lost an @id, new and resolved conflicts, and new and resolved dangling references.
squirrel entities --diff
squirrel entities --diff --crawl 4f2ab91c --crawl 9c1de77a
squirrel entities --diff --input before.json --input new.json
squirrel entities --diff -f jsonWith no arguments it compares the latest audit against the previous audit of the same site. One --crawl names the newer side and the previous audit of that site becomes the older one. Two name both sides. --input takes exactly two files when used with --diff, and it is repeat-only, because a path can contain a comma.
--diff accepts -f markdown (the default) or -f json.
Not crawled again
Two audits of a site rarely cover the same pages. A smaller crawl, a changed page cap or a section that started returning 404 all shrink the page set, and a naive comparison reports every entity on a page that simply was not visited as removed.
So an entity is only removed when every page that declared it was crawled again. Everything else is reported separately as not crawled again, and the diff lists the pages each audit saw that the other did not.
The same rule governs fixes. A conflict or a dangling reference counts as resolved only when the entity survived and all of its declaring pages were visited again, because a conflict needs two declarations to exist and seeing one of them tells you nothing.
An entity that gained or lost an @id is matched across the key change on its type and name, so it is reported once rather than as a removal plus an addition. That match says the entity changed, not that the pages which were wrong are the pages that were fixed, so each row carries a coverage column.
proven needs both halves: the newer audit visited every page that declared the old version, and it found the replacement on all of them. partial means one of those could not be established. Either half alone is satisfied by a site that is not fixed. Recrawling the broken pages proves nothing if the markup was deleted there and the identified entity turned up elsewhere; finding it elsewhere proves nothing about pages that were never revisited.
A missing row is not proof of failure either. The match needs the type and the name to be unchanged, so changing the @id and the name together appears as a removal plus an addition.
Listing stored maps
squirrel entities --listEntity maps:
==============================================================================================
ID Date Pages Entities Stable @id Conflicts Site
----------------------------------------------------------------------------------------------
4f2ab91c 13/09/2026, 00:23 60 183 100% 0 https://docs.squirrelscan.com/
9c1de77a 12/09/2026, 23:04 60 0 0% 0 https://docs.squirrelscan.com/Exit codes
entities exits 0 on every path that produced an answer, including a site that declares no JSON-LD at all. That is a finding, not a failure. Only a usage mistake or an unreadable store exits 1.
References
- The entity map on your machine: where the map appears in every report format, and the store tables behind this command
- The entity map: what the map is and how to read it
- The entity map format: the documents
-f json,-f jsonldand--diff -f jsonproduce - Fixing structured data identity: the change to make in each generator
- The entity map for agents: the same queries as MCP tools