Reports

Get the report's entity map

The graph of things the audited site declares in JSON-LD (Organization, Person, Product, Article, …), collapsed across every crawled page, with the references between them.

Filters apply BEFORE rendering, so ?type=Organization&format=markdown renders a markdown document of Organizations rather than filtering a rendered string. summary always describes the WHOLE site even when a filter is applied; compare it against meta.counts to see whether you are holding a subset.

404 when the report predates the feature (no map was published with it), when it does not exist, or when it belongs to another organization. Available on every plan.

get/v1/reports/{id}/entities

Request

  • Base URL: https://api.squirrelscan.com
  • URL: https://api.squirrelscan.com/v1/reports/{id}/entities
  • Auth: HTTP bearer

Path parameters

idstring required

Report id.

Query parameters

format'json' | 'jsonld' | 'html' | 'markdown' | 'csv' | 'dot' | 'graphml' | 'mermaid'

Export format. All eight render.

json is the canonical document and jsonld the merged graph for a schema validator. html is the interactive viewer, markdown the findings-first text rendering. csv is one row per entity for a spreadsheet, dot for Graphviz, graphml for Gephi, and mermaid for a diagram, capped at 150 entities by reach.

Every value in the map is declared by the audited site, so treat it as untrusted. The html rendering escapes it and is safe to open directly. The markdown, csv, dot, graphml and mermaid renderings escape only what their own syntax requires: render any of them into HTML and you must sanitize first, or use format=json and render the fields yourself.

typestring

Keep only entities carrying this schema.org @type (case-insensitive). Matched against EVERY type an entity declares, so an entity typed ["Organization", "LocalBusiness"] matches either.

exclude_typestring[]

Drop entities whose PRIMARY @type is exactly this one. Repeat the parameter to exclude several: ?exclude_type=WebPage&exclude_type=BreadcrumbList.

Two differences from type above, both deliberate. It reads the primary type, types[0], the one an entity leads with, rather than every type it declares: this expresses a deny-list over the one type an entity is listed under, which is what a viewer showing one chip per entity needs. And it is CASE-SENSITIVE, where type is not: the distinct primary types in a map are compared as strings, so a site declaring both Organization and organization has two of them, and folding case here would drop both when the caller named one.

The length bound is the published map's own maxStringLength, not the 128 that type uses, so every type name this endpoint can serve can also be excluded.

Combine freely with the other filters; they all apply before rendering.

pagestring

Keep only entities declared on this page URL, or on a page whose URL starts with it.

Matching is a plain prefix, so https://site/about also matches https://site/about-us; add a trailing slash to scope to a directory.

This filter can be INCOMPLETE. Each entity lists only its first few declaring pages (at most 5 in the published map this endpoint serves), with the rest collapsed into a morePages count, so an entity declared on 200 pages cannot match on one of the URLs that were not listed. When that is possible for the map being filtered, meta.pageFilterIncomplete is true.

problem'no-id' | 'conflict' | 'dangling' | 'single-page' | 'split-identity'

Keep only entities with this problem. no-id: no @id, so nothing ties the declarations together. conflict: occurrences disagree on a property. dangling: references an @id no page declares. single-page: declared on one page only. split-identity: the same thing declared under two different @ids.

qstring

Free-text match over name, @id, key and types.

include_page_local'true' | 'false' | '1' | '0'

Include per-page types (BreadcrumbList, WebPage, ListItem, Question, Answer, and unnamed ImageObject). Off by default — they crowd out the entities the map exists to show.

Response

The entity map. application/json for format=json; otherwise the requested rendering, with a content type matching the format.

format'squirrelscan/entity-map' required
version1 required
sitestring required

Site the audit started from.

generatedAtstring date-time required

Changes

No recorded changes to this operation across all 1 revision of this API.