Brandfetch's Logo API is free and generous, with one condition: the URL has to sit in an <img> tag with a Referer. Fetch it from a script, cache it, or put it in an email and you get redirected. favi is the same request shape with options in the query string, and the same URL works from a server, a browser or a PDF renderer.
- https://cdn.brandfetch.io/stripe.com/w/64/h/64?c=your_client_id+ https://img.favi.sh/stripe.com?key=pk_your_key&width=64&height=64Brandfetch puts options in the path; favi puts them in the query string. Everything below maps one to one except the identifier types and logo variants, which favi does not offer.
| Option | Brandfetch | favi |
|---|---|---|
| Identifier | domain/nike.com, ticker/NKE, isin/…, crypto/BTC | Domain only: img.favi.sh/nike.com |
| Credential | ?c=CLIENT_ID | ?key=pk_… |
| Size | /w/64/h/64 path segments, clamped 16–2048 | ?width=64&height=64, or ?size=64, up to 800 |
| Retina | Double w and h yourself | &retina=true |
| Format | webp default; .png or .jpg extension; svg for logo and symbol | webp default; &format=avif|png|jpg; no svg |
| Theme | /theme/light or /theme/dark | &theme=light|dark |
| Fallback | /fallback/brandfetch|transparent|lettermark|404 — transparent when the domain does not resolve, the Brandfetch logo when the brand has no asset of that type, and lettermark only on type=icon | Lettermark by default, or &fallback=404 |
| Logo type | /type/icon|logo|symbol | Icon only |
| Greyscale | Not offered | &greyscale=true |
Checked 2026-09-18 against brandfetch.com/developers/pricing and the Logo API and Brand API pages on docs.brandfetch.com. Where they are better, the table says so.
| favi | Brandfetch | |
|---|---|---|
| Free tier | 500K/mo | 1M logo renders/mo, soft cap |
| Attribution on free | Never | Not required |
| First paid tier | $29/mo — 2M requests | $129/mo, or $99/mo billed annually — 5M renders and 2,500 brand fetches |
| Brand data | Included: /brand/{domain} on the same key | 100 fetches free, one-time; then Growth at $99–129/mo, or $0.10 a fetch over quota |
| Fetching from a script | Allowed | Not permitted; logos must be hotlinked with a Referer, and caching needs a custom setup |
| Burst limits | 6,000 origin requests/min per key; the edge absorbs the rest | 1,000 per 5 min per IP and 2,400 per 5 min per customer; 429 above that |
| Largest render | 800px | 2048px |
| Startup and nonprofit discount | None | 40% off paid plans for the first 12 months if you qualify |
| Ticker lookup | Yes — 32 exchanges | Yes |
| ISIN and crypto lookups | No | Yes |
| SVG and logo variants | No — one icon per domain | svg for logo and symbol types |
| Unknown domain | Lettermark now, real logo usually within seconds | Fallback image; resolved live on first request |
| Stale logo fix | Self-serve refresh + edge purge | Update form reviewed by their QA team; re-crawl after 3 months |
| Uptime accountability | Externally measured status page + published 99.9% target with a remedy | Status page with uptime percentages; SLAs on the Custom plan only |
| Over your quota | Lettermark, never an error | A notification; a 429 far beyond the allowance |
| Compliance | No SOC 2 | SOC 2 Type 2 |
Twice the free renders, deeper ticker coverage, SVGs and a SOC 2 report are real advantages, and the rows above say so. What favi trades for them: brand JSON on the same publishable key rather than metered credits, no hotlink-only rule, and a fallback image instead of an error when you go over.
On tickers, the honest number: favi resolves 9,832 of 18,369 listings across 32 exchanges. Coverage is strong outside the US — London 97%, Tokyo 94%, Frankfurt and Paris 99% — and thinner on US small caps, at 35% of the SEC's list. A symbol we cannot resolve returns a lettermark, never another company's logo.
The index covers four and a half million sites and every domain any customer has ever asked for, so a cutover is the hostname change and nothing else. Subdomains resolve to the parent brand automatically, and dark-mode variants are there when you need them.