> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/docs/products/logo-image

# Logo image API API

Get a company logo for any domain as a PNG image you can embed, cache and keep. Use this reference to pick the right endpoint and see exactly what it returns.

[View product page](https://domscan.net/logo-api)

## Operations

GET `/v1/logo/:domain` [View API reference](https://domscan.net/docs/products/logo-image#getLogoImage)

## GET `/v1/logo/:domain`

Operation: `getLogoImage`
Credits and authentication: 1
Authentication required

GET /v1/logo/:domain Credits: 1

#### Query parameters

| Parameter | Type | required |
| --- | --- | --- |
| domain | string | required |
| size | integer Default `128` | optional |
| retina | boolean Default `false` | optional |
| greyscale | boolean Default `false` | optional |
| theme | string Allowed values `light`, `dark` | optional |
| fallback | string Allowed values `404`, `monogram` Default `404` | optional |
| format | string Allowed values `png` Default `png` | optional |
| variant | string Allowed values `square`, `wide` Default `square` | optional |
| v | string | optional |
| token | string | optional |

#### Response fields

| Field | Type |
| --- | --- |
| `body` | image/png |
| `X-Credits-Charged` | string |
| `X-Credits-Remaining` | string |
| `X-RateLimit-Limit` | string |
| `X-RateLimit-Remaining` | string |
| `X-RateLimit-Reset` | string |
| `Cache-Control` | string |
| `ETag` | string |
| `Last-Modified` | string |
| `X-Logo-Status` | string |
| `X-Logo-Source` | string |
| `X-Logo-Verification` | string |
| `X-Logo-Source-Format` | string |
| `X-Logo-Native-Size` | string |
| `X-Logo-Theme-Adjusted` | string |
| `X-Logo-Variant` | string |
| `X-Logo-Lookup` | string |
| `X-Cache` | string |
| `Cloudflare-CDN-Cache-Control` | string |
| `X-Cache-Age` | string |

#### Example request

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/logo/example.com?size=128&retina=false&greyscale=false&theme=light&fallback=404&format=png&variant=square&v=example&token=example"
```

```javascript
const response = await fetch("https://domscan.net/v1/logo/example.com?size=128&retina=false&greyscale=false&theme=light&fallback=404&format=png&variant=square&v=example&token=example", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/logo/example.com?size=128&retina=false&greyscale=false&theme=light&fallback=404&format=png&variant=square&v=example&token=example",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/logo/example.com?size=128&retina=false&greyscale=false&theme=light&fallback=404&format=png&variant=square&v=example&token=example", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
```

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/logo/example.com?size=128&retina=false&greyscale=false&theme=light&fallback=404&format=png&variant=square&v=example&token=example")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))
```

#### Example response

```text
HTTP/2 200
content-type: image/png
x-credits-charged: ...
x-credits-remaining: ...
x-ratelimit-limit: ...
x-ratelimit-remaining: ...
x-ratelimit-reset: ...
cache-control: ...
etag: ...
last-modified: ...
x-logo-status: found
x-logo-source: bimi
x-logo-verification: decoded
x-logo-source-format: ...
x-logo-native-size: ...
x-logo-theme-adjusted: tile
x-logo-variant: wide
x-logo-lookup: ...
x-cache: HIT
cloudflare-cdn-cache-control: ...
x-cache-age: ...
```

#### HTTP status codes

- `200` OK
- `304` HTTP 304
- `400` Bad Request
- `401` Unauthorized
- `402` Payment Required
- `403` Forbidden
- `404` Not Found
- `429` Too Many Requests

## Reference resources

[OpenAPI 3.0](https://domscan.net/v1/openapi.json)
[Postman](https://domscan.net/v1/postman.json)
[MCP](https://domscan.net/mcp-domain-checker)
