# Brand.dev API — Orthogonal API

> Pay-per-use API on Orthogonal. Each call is billed to your Orthogonal balance.
> Base API: `https://api.orth.sh/v1/run` · [llms.txt](https://orthogonal.com/llms.txt) · [browse all APIs](https://orthogonal.com/discover)

API to personalize your product with logos, colors, and company info from any domain.

**Verified:** yes

## Access

**Run API:** `POST https://api.orth.sh/v1/run`
**Auth:** `Authorization: Bearer $ORTHOGONAL_API_KEY`
Get an API key at https://orthogonal.com/dashboard/settings/api-keys

Every call goes through the unified Run API: send the API `slug`, the endpoint `path`, and the `query`/`body` parameters. The response is `{ "success": true, "price": "<usd>", "data": { ... } }`.

## Endpoints

### Extract fonts from website

Extract font information from a brand’s website including font families, usage statistics, fallbacks, and element/word counts.

`GET /v1/brand/fonts`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/screenshot-styleguide/extract-fonts-from-website

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | Domain name to extract fonts from (e.g., 'example.com', 'google.com'). The domain will be automatically normalized and validated. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/fonts","method":"GET","query":{"domain":"<string>","timeoutMS":"<integer>"}}'
```

### Identify brand from transaction data

Endpoint specially designed for platforms that want to identify transaction data by the transaction title.

`GET /v1/brand/transaction_identifier`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/identify-brand-from-transaction-data

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `transaction_info` | string | Yes | Transaction information to identify the brand |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. |
| `country_gl` | string | No | Optional country code (GL parameter) to specify the country. This affects the geographic location used for search queries. |
| `city` | string | No | Optional city name to prioritize when searching for the brand. |
| `mcc` | string | No | Optional Merchant Category Code (MCC) to help identify the business category/industry. |
| `phone` | number | No | Optional phone number from the transaction to help verify brand match. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/transaction_identifier","method":"GET","query":{"transaction_info":"<string>","force_language":"<string>","maxSpeed":"<boolean>","country_gl":"<string>","city":"<string>","mcc":"<string>","phone":"<number>","timeoutMS":"<integer>"}}'
```

### Retrieve NAICS code for any brand

Endpoint to classify any brand into a 2022 NAICS code.

`GET /v1/brand/naics`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/industry-classification/retrieve-naics-code-for-any-brand

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `input` | string | Yes | Brand domain or title to retrieve NAICS code for. If a valid domain is provided in input, it will be used for classification, otherwise, we will search for the brand using the provided title. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |
| `minResults` | integer | No | Minimum number of NAICS codes to return. Must be at least 1. Defaults to 1. |
| `maxResults` | integer | No | Maximum number of NAICS codes to return. Must be between 1 and 10. Defaults to 5. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/naics","method":"GET","query":{"input":"<string>","timeoutMS":"<integer>","minResults":"<integer>","maxResults":"<integer>"}}'
```

### Retrieve brand data by email address

Retrieve brand information using an email address while detecting disposable and free email addresses. This endpoint extracts the domain from the email address and returns brand data for that domain. Disposable and free email addresses (like gmail.com, yahoo.com) will throw a 422 error.

`GET /v1/brand/retrieve-by-email`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-brand-data-by-email-address

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `email` | string<email> | Yes | Email address to retrieve brand data for (e.g., 'contact@example.com'). The domain will be extracted from the email. Free email providers (gmail.com, yahoo.com, etc.) and disposable email addresses are not allowed. |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-email","method":"GET","query":{"email":"<string>","force_language":"<string>","maxSpeed":"<boolean>","timeoutMS":"<integer>"}}'
```

### Retrieve simplified brand data by domain

Returns a simplified version of brand data containing only essential information: domain, title, colors, logos, and backdrops. This endpoint is optimized for faster responses and reduced data transfer.

`GET /v1/brand/retrieve-simplified`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-simplified-brand-data-by-domain

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | Domain name to retrieve simplified brand data for |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-simplified","method":"GET","query":{"domain":"<string>","timeoutMS":"<integer>"}}'
```

### Retrieve brand data by ISIN

Retrieve brand information using an ISIN (International Securities Identification Number). This endpoint looks up the company associated with the ISIN and returns its brand data.

`GET /v1/brand/retrieve-by-isin`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-brand-data-by-isin

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `isin` | string | Yes | ISIN (International Securities Identification Number) to retrieve brand data for (e.g., 'AU000000IMD5', 'US0378331005'). Must be exactly 12 characters: 2 letters followed by 9 alphanumeric characters and ending with a digit. |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-isin","method":"GET","query":{"isin":"<string>","force_language":"<string>","maxSpeed":"<boolean>","timeoutMS":"<integer>"}}'
```

### Extract products from a brand's website

Beta feature: Extract product information from a brand’s website. Brand.dev will analyze the website and return a list of products with details such as name, description, image, pricing, features, and more.

`POST /v1/brand/ai/products`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/ai-data-extraction/extract-products-from-a-brands-website

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | The domain name to analyze |
| `maxProducts` | integer | No | Maximum number of products to extract. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/ai/products","body":{"domain":"<string>","maxProducts":"<integer>","timeoutMS":"<integer>"}}'
```

### Retrieve brand data by domain

Retrieve logos, backdrops, colors, industry, description, and more from any domain

`GET /v1/brand/retrieve`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-brand-data-by-domain

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | Domain name to retrieve brand data for (e.g., 'example.com', 'google.com'). Cannot be used with name or ticker parameters. |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. Works with all three lookup methods. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. Works with all three lookup methods. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve","method":"GET","query":{"domain":"<string>","force_language":"<string>","maxSpeed":"<boolean>","timeoutMS":"<integer>"}}'
```

### Retrieve brand data by company name

Retrieve brand information using a company name. This endpoint searches for the company by name and returns its brand data.

`GET /v1/brand/retrieve-by-name`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-brand-data-by-company-name

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `name` | string | Yes | Company name to retrieve brand data for (e.g., 'Apple Inc', 'Microsoft Corporation'). Must be 3-30 characters. |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-name","method":"GET","query":{"name":"<string>","force_language":"<string>","maxSpeed":"<boolean>","timeoutMS":"<integer>"}}'
```

### Retrieve brand data by stock ticker

Retrieve brand information using a stock ticker symbol. This endpoint looks up the company associated with the ticker and returns its brand data.

`GET /v1/brand/retrieve-by-ticker`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/retrieve-brand/retrieve-brand-data-by-stock-ticker

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `ticker` | string | Yes | Stock ticker symbol to retrieve brand data for (e.g., 'AAPL', 'GOOGL', 'BRK.A'). Must be 1-15 characters, letters/numbers/dots only. |
| `ticker_exchange` | string | No | Optional stock exchange for the ticker. Defaults to NASDAQ if not specified. |
| `force_language` | string | No | Optional parameter to force the language of the retrieved brand data. |
| `maxSpeed` | boolean | No | Optional parameter to optimize the API call for maximum speed. When set to true, the API will skip time-consuming operations for faster response at the cost of less comprehensive data. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/retrieve-by-ticker","method":"GET","query":{"ticker":"<string>","ticker_exchange":"<string>","force_language":"<string>","maxSpeed":"<boolean>","timeoutMS":"<integer>"}}'
```

### Extract design system and styleguide from website

Automatically extract comprehensive design system information from a brand’s website including colors, typography, spacing, shadows, and UI components.

`GET /v1/brand/styleguide`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/screenshot-styleguide/extract-design-system-and-styleguide-from-website

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | Domain name to extract styleguide from (e.g., 'example.com', 'google.com'). The domain will be automatically normalized and validated. |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |
| `prioritize` | string | No | Optional parameter to prioritize screenshot capture for styleguide extraction. If 'speed', optimizes for faster capture with basic quality. If 'quality', optimizes for higher quality with longer wait times. Defaults to 'quality' if not provided. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/styleguide","method":"GET","query":{"domain":"<string>","timeoutMS":"<integer>","prioritize":"<string>"}}'
```

### Take screenshot of website

Capture a screenshot of a website. Supports both viewport (standard browser view) and full-page screenshots. Can also screenshot specific page types (login, pricing, etc.) by using heuristics to find the appropriate URL. Returns a URL to the uploaded screenshot image hosted on our CDN.

`GET /v1/brand/screenshot`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/screenshot-styleguide/take-screenshot-of-website

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | Domain name to take screenshot of (e.g., 'example.com', 'google.com'). The domain will be automatically normalized and validated. |
| `fullScreenshot` | string | No | Optional parameter to determine screenshot type. If 'true', takes a full page screenshot capturing all content. If 'false' or not provided, takes a viewport screenshot (standard browser view). |
| `page` | string | No | Optional parameter to specify which page type to screenshot. If provided, the system will scrape the domain's links and use heuristics to find the most appropriate URL for the specified page type (30 supported languages). If not provided, screenshots the main domain landing page. |
| `prioritize` | string | No | Optional parameter to prioritize screenshot capture. If 'speed', optimizes for faster capture with basic quality. If 'quality', optimizes for higher quality with longer wait times. Defaults to 'quality' if not provided. |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/screenshot","method":"GET","query":{"domain":"<string>","fullScreenshot":"<string>","page":"<string>","prioritize":"<string>"}}'
```

### Query website data using AI

Use AI to extract specific data points from a brand’s website. The AI will crawl the website and extract the requested information based on the provided data points.

`POST /v1/brand/ai/query`

**Estimated cost:** $0.03

**Docs:** https://docs.brand.dev/api-reference/ai-data-extraction/query-website-data-using-ai

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `domain` | string | Yes | The domain name to analyze |
| `data_to_extract` | object[] | Yes | Array of data points to extract from the website |
| `timeoutMS` | integer | No | Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes). |
| `specific_pages` | object | No | Optional object specifying which pages to analyze |

```bash
curl -X POST 'https://api.orth.sh/v1/run' \
  -H 'Authorization: Bearer $ORTHOGONAL_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"api":"brand-dev","path":"/v1/brand/ai/query","body":{"domain":"<string>","data_to_extract":"<object>","timeoutMS":"<integer>","specific_pages":"<object>"}}'
```

---

Full details and an interactive quickstart: https://orthogonal.com/discover/brand-dev
