---
title: "Technologies"
description: "Get the technologies a company's website runs on, and the vendors its domain holds accounts with, from its domain."
---

> 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)

```http
GET | POST /v1/company/technologies
```

Send parameters as a query string with `GET`, or as a JSON body with `POST`. Both are equivalent.

## Request

```bash tab="cURL"
curl "https://gateway.apinoa.com/v1/company/technologies?domain=allbirds.com" \
  -H "x-api-key: $APINOA_API_KEY"
```

```js tab="JavaScript"
const params = new URLSearchParams({ domain: "allbirds.com" });
const res = await fetch(`https://gateway.apinoa.com/v1/company/technologies?${params}`, {
  headers: { "x-api-key": process.env.APINOA_API_KEY },
});
const { success, data, error } = await res.json();
```

```python tab="Python"
import os

import requests

res = requests.get(
    "https://gateway.apinoa.com/v1/company/technologies",
    params={"domain": "allbirds.com"},
    headers={"x-api-key": os.environ["APINOA_API_KEY"]},
)
body = res.json()
```

## Parameters

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `domain` | string | yes | The company's domain, e.g. stripe.com. A web address (https://stripe.com/pricing) is accepted and read as its host. |

The same parameters, and every response type, are in the OpenAPI document: https://apinoa.com/openapi.json

## Response

Returns [`TechnologiesResult`](/docs/api-reference/company-data/response-schema#technologiesresult) in `data`. A real response, shortened: arrays keep their first entries and long text is cut.

```json
{
  "success": true,
  "data": {
    "domain": "allbirds.com",
    "technologies": [
      {
        "name": "Apple Pay",
        "categories": [
          "Payment processors"
        ],
        "confidence": 100,
        "website": "https://www.apple.com/apple-pay",
        "evidence": [
          {
            "source": "html",
            "field": "dom",
            "match": "script#apple-pay-shop-capabilities"
          }
        ]
      },
      {
        "name": "Cloudflare",
        "categories": [
          "CDN"
        ],
        "confidence": 100,
        "website": "http://www.cloudflare.com",
        "evidence": [
          {
            "source": "header",
            "field": "server",
            "match": "cloudflare"
          }
        ]
      }
    ],
    "accounts": [
      {
        "name": "Apple Business Manager",
        "categories": [
          "Productivity"
        ],
        "confidence": 100,
        "website": "https://business.apple.com",
        "evidence": [
          {
            "source": "dns",
            "field": "TXT",
            "match": "apple-domain-verification=WZou6gNEgG7pdiR8"
          }
        ]
      },
      {
        "name": "DocuSign",
        "categories": [
          "Miscellaneous"
        ],
        "confidence": 100,
        "website": "https://www.docusign.com",
        "evidence": [
          {
            "source": "dns",
            "field": "TXT",
            "match": "docusign"
          }
        ]
      }
    ],
    "page": {
      "url": "https://allbirds.com/",
      "finalUrl": "https://www.allbirds.com/",
      "status": 200,
      "title": "Allbirds: Comfortable, Sustainable Shoes & Apparel",
      "redirects": [
        {
          "url": "https://allbirds.com/",
          "status": 301
        }
      ],
      "headers": {
        "content-language": "en-US",
        "content-type": "text/html; charset=utf-8",
        "powered-by": "Shopify",
        "server": "cloudflare",
        "strict-transport-security": "max-age=7889238",
        "x-frame-options": "DENY"
      },
      "cookies": [
        "localization",
        "cart_currency"
      ],
      "meta": {
        "google-site-verification": [
          "ZNR0Rl2hoA59yYC2Q_tdf2_eZbNlU8MbDxpucmURUTs",
          "IodPVyDkZkebGb9wtFqpDrKX-cx8ajU4XJcNaEpF-8k"
        ],
        "description": [
          "Allbirds: The world’s most comfortable shoes, flats, and clothing made…"
        ],
        "og:site_name": [
          "Allbirds"
        ],
        "og:url": [
          "https://www.allbirds.com/"
        ],
        "og:title": [
          "The World’s Most Comfortable Shoes"
        ]
      },
      "scripts": [
        "https://www.allbirds.com/cdn/shop/t/4159/assets/theme2.js",
        "https://cdn.shopify.com/s/files/1/1104/4168/files/jsEncrypt.js?v=1756910700"
      ],
      "lang": "en-US"
    },
    "dns": {
      "a": [
        "23.227.38.32"
      ],
      "aaaa": [],
      "cname": [
        "shops.myshopify.com"
      ],
      "mx": [
        {
          "exchange": "allbirds-com.mail.protection.outlook.com",
          "priority": 0
        }
      ],
      "ns": [
        "ns1.markmonitor.com",
        "ns2.markmonitor.com"
      ],
      "txt": [
        "MS=ms40651830",
        "apple-domain-verification=WZou6gNEgG7pdiR8"
      ],
      "soa": {
        "nsname": "ns1.markmonitor.com",
        "hostmaster": "hostmaster.markmonitor.com"
      }
    },
    "robots": {
      "status": 200,
      "sitemaps": [
        "https://www.allbirds.com/sitemap.xml"
      ]
    }
  }
}
```

## Errors

| Status | Code | Meaning |
|---|---|---|
| 400 | `INVALID_PARAMS` | `domain` is missing, is not a domain name, or is not a public site. The message says which. |
| 401 | `UNAUTHORIZED` | The `x-api-key` header is missing, or the key is revoked or unknown. |
| 402 | `INSUFFICIENT_BALANCE` | The balance does not cover this call. Top up in the dashboard. |
| 404 | `NOT_FOUND` | The domain does not resolve. |
| 429 | `MARKETPLACE_SATURATED` | Too many concurrent calls. Retry after the `Retry-After` seconds. |
| 502 | `UPSTREAM_ERROR` | The platform answered with something unusable. Retry with backoff. |

Every code is listed in [Errors](/docs/errors). Failed calls are not billed.

## Pricing

**Price** $0.001 per call. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

## Notes

- A site that does not answer, or answers with a verification page, is not an error: `page.error` or `page.blocked` says so, and what the headers and DNS show is still returned.
- Fields of every type are in the [Response Schema](/docs/api-reference/company-data/response-schema).
