API reference

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.

Operations

GET /v1/logo/:domain View API reference

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 lightdark
optional
fallback string
Allowed values 404monogram
Default 404
optional
format string
Allowed values png
Default png
optional
variant string
Allowed values squarewide
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

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"
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);
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())
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))
}
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

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