Build your request
Configure parameters interactively and see results in real-time.
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
/logo/:domainRedirects to the logo image. Add ?variant=dark for dark mode, ?size=64 for specific dimensions.
/logo/:domain/sourcesAll discovered logo sources, ranked by quality.
/logo/:domain/statusCheck if a logo is ready (pending, processing, completed, failed).
/logo/:domain/refreshForce a fresh scrape. Use when a company updates their logo.
Logo Variants
Request different versions with ?variant=
| Variant | What you get |
|---|---|
default | Primary logo (no param needed) |
dark | Works on dark backgrounds |
light | Works on light backgrounds |
svg | Vector format, scales infinitely |
transparent | Transparent 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.
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.deDark 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