---
title: "Response Schema"
description: "TechnologiesResult, field by field: the technologies, the accounts, and what the homepage and the domain's records showed."
---

> Every apinoa docs page as markdown: https://apinoa.com/llms.txt (all in one file: https://apinoa.com/llms-full.txt; this API family in one file: https://apinoa.com/docs/company/llms.txt)

`technologies` returns one type, `TechnologiesResult`.

Optional fields are genuinely optional: **absent means the site did not say**. A page without `title` had none.

## TechnologiesResult

| Field | Type | Notes |
|---|---|---|
| `domain` | string | the domain, normalized: lower case, no scheme, path or port |
| `technologies` | Technology[] | what the site runs on, and what serves the domain (mail host, DNS host, CDN) |
| `accounts` | Technology[] | vendors the domain has an account with, proven only by a DNS TXT record. A vendor the site also shows is in `technologies` instead |
| `page` | Page | the homepage as it answered |
| `dns` | DnsRecords | the domain's DNS records |
| `robots` | object? | `{status, sitemaps}`: `/robots.txt`, when the site served one, and its `Sitemap:` lines |

## Technology

| Field | Type | Notes |
|---|---|---|
| `name` | string | e.g. `Shopify`, `Cloudflare`, `Google Tag Manager` |
| `categories` | string[] | e.g. `Ecommerce`, `CMS`, `CDN`, `Analytics`, `Payment processors`, `Email` |
| `confidence` | integer | 1–100: how sure the match is. Several matches add up |
| `version` | string? | where the site states it |
| `website` | string? | the vendor's own site |
| `evidence` | Evidence[] | up to three matches, the strongest first |

### Evidence

| Field | Type | Notes |
|---|---|---|
| `source` | string | `url` `header` `cookie` `meta` `html` `script` `robots` `dns` `implied` |
| `field` | string? | which header, cookie, meta tag, page element or DNS record type matched |
| `match` | string | the matched text, at most 80 characters. For `implied`, the technology that implies this one (WordPress implies PHP) |

## Page

| Field | Type | Notes |
|---|---|---|
| `url` | string | the address asked for: `https://<domain>/` |
| `finalUrl` | string? | where the redirects ended |
| `status` | integer? | the final response's HTTP status |
| `title` | string? | |
| `redirects` | array? | `{url, status}`: each redirect followed, in order |
| `headers` | object? | the final response's headers, lower-cased |
| `cookies` | string[]? | the names of the cookies it set |
| `meta` | object? | every `<meta name\|property\|http-equiv>` on the page, by key, each a list in page order |
| `scripts` | string[]? | every external script the page loads |
| `lang` | string? | `<html lang>` |
| `blocked` | `true`? | the site answered with a verification page instead of its homepage. Headers, cookies and DNS are still read |
| `error` | string? | `timeout` `unreachable` `too_many_redirects`: why no response arrived. DNS findings are still returned |

## DnsRecords

| Field | Type | Notes |
|---|---|---|
| `a` `aaaa` | string[] | the domain's addresses |
| `cname` | string[] | the CNAME chain of the host the homepage is on (for `example.com`, that of `www.example.com`) |
| `mx` | array | `{exchange, priority}`: mail hosts |
| `ns` | string[] | name servers |
| `txt` | string[] | TXT records |
| `soa` | object? | `{nsname, hostmaster}` |
