---
title: "Get one entity from the report's entity map"
method: GET
path: "/v1/reports/{id}/entities/{key}"
tags: ["Reports"]
---

# Get one entity from the report's entity map

`GET /v1/reports/{id}/entities/{key}`

## Request

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

One node with its properties, occurrences, conflicts, declaring pages, and the edges pointing out of and into it.

`key` accepts the node key, the entity's `@id`, or its exact display name. An `@id` is a URL, so percent-encode it (`/` as `%2F`).

## Path parameters

- `id` string, required
- `key` string, required

## Response `200`

The entity and its edges.

- EntityNodeDetail
  - `reportId` string, required
  - `websiteId` string, nullable, required
  - `auditedAt` string, date-time, required
  - `node` EntityMapNode, required: One entity, collapsed across every page that declares it. Every string here comes from site-declared JSON-LD and is untrusted; escape before rendering.
    - `key` string, required: Identity the builder settled on: the resolved `@id` when the site supplied one, otherwise a synthetic type+name key.
    - `id` string, nullable, required: The resolved `@id`, or null when the entity declared none.
    - `types` string[], required
    - `name` string, nullable, required
    - `properties` object, required: Consistency-relevant properties, normalised to strings.
      - `name` string
      - `url` string
      - `logo` string
      - `image` string[]
      - `sameAs` string[]
      - `telephone` string
      - `email` string
      - `address` string
      - `description` string
    - `occurrences` integer, required: How many times the entity was declared across the crawl.
    - `pages` string[], required: Declaring pages, sorted and capped; the remainder is in morePages.
    - `morePages` integer, required
    - `conflicts` object[], required: Properties whose value differs between occurrences.
      - `property` string, required
      - `values` object[], required
        - `value` string, required
        - `pages` string[], required
        - `morePages` integer, required
    - `danglingRefs` integer, required: Outgoing `@id` references from this node that nothing declares.
    - `pageLocal` boolean, required: True when the entity describes one page rather than the site's subject matter: Question, Answer, BreadcrumbList, ListItem, WebPage, and an ImageObject with no name. These are hidden unless `include_page_local` is set.
  - `pageCount` integer, required: Total declaring pages, including any beyond the `pages` cap.
  - `outbound` EntityMapEdge[], required: Edges from this node, including dangling references.
    - `source` string, required
    - `predicate` string, required: author, publisher, mainEntity, about, isPartOf, sameAs, logo, offers, …
    - `target` string, required
    - `dangling` boolean, required: True when no crawled page declares the target.
    - `occurrences` integer, required
    - `pages` string[], required
    - `morePages` integer, required
  - `inbound` EntityMapEdge[], required: Edges pointing at this node.
    - `source` string, required
    - `predicate` string, required: author, publisher, mainEntity, about, isPartOf, sameAs, logo, offers, …
    - `target` string, required
    - `dangling` boolean, required: True when no crawled page declares the target.
    - `occurrences` integer, required
    - `pages` string[], required
    - `morePages` integer, required

## Other responses

- `401`: Missing or invalid credentials (including the shared auth middleware: no/invalid bearer token). Typed envelope with code `UNAUTHORIZED`. Branch on the `401` status, not the message.
- `403`: Authenticated but not permitted (e.g. not a member of the requested organization). Typed envelope; code `FORBIDDEN`, or `NO_ORG` when no active organization is resolved on credit/org-scoped routes. Branch on the `403` status.
- `404`: Resource not found (or hidden from the caller).
- `429`: Too many requests. Retry after the window resets. (Rate limiting is planned — issue #69 — these headers document the intended contract.)

---

[API](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api.md) · [All operations](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api/revisions/82c8183fe8bc?raw)
