Skip to main content
GET
Get an app

Authorizations

Authorization
string
header
required

Authorization: Bearer <key>. Used when both headers are present.

Path Parameters

hostname
string
required

The app's hostname, as returned by search. It is matched case-insensitively; a trailing dot is ignored; Unicode IDNs are accepted. The response carries the canonical lower-case ASCII form. A value that cannot be a hostname answers 404 app_not_found.

Response

The app record.

An app record: the app's summary (the same fields and values a search hit carries) plus text and, on Plus, credentials.

hostname
string
required

The app's hostname, lower-case ASCII, its stable identifier.

Example:

"acme-dashboard.vercel.app"

provider
string
required

Provider slug, the value the provider: filter takes, such as vercel, netlify, railway or cloudflare_pages. An open enum: new providers are added over time, see the providers page.

Example:

"vercel"

status
integer
required

HTTP status from the last render or fallback request that got an answer; 0 when none was recorded. A bot-wall page does not update it.

Example:

200

title
string
required

Page title at the last capture; "" when the page had none or was never rendered.

lastSeen
string<date-time>
required

Time of Periphery's last visit that did not prove the host dead, whether or not the host answered. Not the capture time. RFC 3339 in UTC; always present.

scanned
boolean
required

True when Periphery captured the page and stored a snapshot (text, emails and credential scans). False for a host it only probed for liveness: then emails, verifiedDetectors and the snapshot URLs are absent.

hasVerifiedCreds
boolean
required

True when at least one credential finding was verified, so verifiedDetectors is non-empty.

text
string
required

Visible text extracted at the last capture, up to 2,048 bytes; "" when none. It shows the page as captured and can contain a secret in full.

firstSeen
string<date-time>

Time of the first visit that got any answer from the host, RFC 3339 in UTC. It never changes once set. For apps indexed before October 2026, the time Periphery indexed them. Omitted when the host has never answered.

faviconHash
integer<int32>

Shodan-compatible favicon hash (mmh3). Present whenever a favicon was stored, even when the hash is 0; omitted otherwise.

faviconUrl
string<uri>

Signed URL of the stored favicon, valid for one hour; GET /v1/apps/{hostname} returns a fresh one without using a search. An SVG favicon downloads as an attachment when opened directly. Omitted when no favicon was stored.

screenshotUrl
string<uri>

Signed URL of the stored screenshot, valid for one hour; GET /v1/apps/{hostname} returns a fresh one without using a search. It shows the page as captured and can show a secret in full. Omitted when there is no screenshot.

emails
string[]

Email addresses found on the page, lower-cased and deduplicated, up to 100. [] when the page was scanned and had none; omitted when it was never scanned.

verifiedDetectors
string[]

Names of the detectors with a verified finding, deduplicated case-insensitively and sorted. Each works as creds:<name>. [] when the credential scan found nothing verified; omitted when no credential scan was stored.

credentials
object[]

Plus only. Every credential finding, verified or not, up to 20 per host, verified first, each masked. [] when the credential scan found nothing; omitted when no scan was stored. Only this list is masked: text and screenshotUrl show what the page displayed.