Build your request

Configure parameters interactively and see results in real-time.

api.brandql.com/logo/
Returns default if variant unavailable
hetzner.dedefault · original
HTTP URL
GET https://api.brandql.com/logo/hetzner.de
curl
curl "https://api.brandql.com/logo/hetzner.de"

API Access

Two ways to hit the API:

api.brandql.comEdge-cached via Cloudflare. Use this one.
brandql.com/apiDirect to origin. Same response, no edge cache.

Endpoints

GET/logo/:domain

Redirects to the logo image. Add ?variant=dark for dark mode, ?size=64 for specific dimensions.

variantsizefallbackformat
GET/logo/:domain/sources

All discovered logo sources, ranked by quality.

GET/logo/:domain/status

Check if a logo is ready (pending, processing, completed, failed).

POST/logo/:domain/refresh

Force a fresh scrape. Use when a company updates their logo.

Logo Variants

Request different versions with ?variant=

VariantWhat you get
defaultPrimary logo (no param needed)
darkWorks on dark backgrounds
lightWorks on light backgrounds
svgVector format, scales infinitely
transparentTransparent background

About variant availability

Not every domain has all variants. We discover logos from multiple sources (favicons, Open Graph images, manifest icons), and some companies simply don't provide dark mode or SVG versions.

Default behavior: If the requested variant isn't available, we return the default logo instead. Your app won't break—you'll just get the primary logo as a fallback.

Strict mode: Need to know if a variant actually exists? Add fallback=false to get a 404 when the variant isn't available. Useful when you want to conditionally render different UI.

# Dark variant with fallback to default

curl "https://api.brandql.com/logo/hetzner.de?variant=dark"

# SVG only (returns 404 if unavailable)

curl "https://api.brandql.com/logo/hetzner.de?variant=svg&fallback=false"

Image Sizing

Request specific dimensions with ?size=

Get logos at exactly the size you need. Common sizes are pre-computed for instant delivery. Want the full details? See the size parameter docs.

16Tiny
32Small
64Medium
128Large
256XL
512XXL

Pre-computed: 32, 64, and 128px sizes are generated when logos are scraped. These return instantly from storage.

On-demand: 16, 256, and 512px are generated on first request, then cached. The X-BrandQL-Generated: true header indicates a freshly generated image.

# Get a 64x64 logo

curl "https://api.brandql.com/logo/hetzner.de?size=64"

# Combine with variant

curl "https://api.brandql.com/logo/hetzner.de?variant=dark&size=128"

Code Examples

Basic fetch

curl https://api.brandql.com/logo/hetzner.de

Dark mode variant

curl "https://api.brandql.com/logo/hetzner.de?variant=dark"

HTML with dark mode support

<picture>
  <source media="(prefers-color-scheme: dark)"
         srcset="...?variant=dark" />
  <img src="https://api.brandql.com/logo/hetzner.de" />
</picture>

JavaScript

const response = await fetch('https://api.brandql.com/logo/hetzner.de')
const logoUrl = response.url // redirected URL