Free. No key. No signup.
Any company’s logo, from its domain.
One URL returns the SVG. 3,698 companies, served from the edge, and a clean 404 when we do not have one, so your own fallback runs.
<img src="https://logoapi.sh/.svg">
renders
01 / coverage3,698 company logos.
3,698 company logos.
One URL each.
https://logoapi.sh/<domain>.svg
Every tile is a live response. Click one to copy its URL. Strong on developer tools, thin on banks and retail for now.
02 / usage
Two paths and an index.
Plain static files on a CDN. Put the URL in an img tag and you are done.
- GET/<domain>.svgWordmark. Falls back to the icon when a company has no wordmark.
- GET/icon/<domain>.svgSquare mark, for avatars, lists and favicons.
- GET/index.jsonEvery domain with its name and files.
- 404 for unknown domains. No grey placeholder, so your own fallback runs.
- No key, no cookies, no rate limits. Hotlinking is the point.
- Cached at the edge for a day, versioned by the upstream commit.
<!-- wordmark --> <img src="https://logoapi.sh/stripe.com.svg" alt="Stripe" height="24"> <!-- square icon, with your own fallback on 404 --> <img src="https://logoapi.sh/icon/acme.example.svg" alt="Acme" width="32" height="32" onerror="this.src='/img/generic-company.svg'">
function Logo({ domain, name }) { const [ok, setOk] = useState(true); if (!ok) return <Initials name={name} />; return ( <img src={`https://logoapi.sh/${domain}.svg`} alt={name} height={24} onError={() => setOk(false)} /> ); }
$ curl -s https://logoapi.sh/index.json | jq '.[1]' { "domain": "11ty.dev", "files": { "icon": "eleventy.svg", "wordmark": "eleventy.svg" }, "name": "Eleventy", "slug": "eleventy", "source": "https://www.11ty.dev/" }
04 / terms
Plain terms.
Source
Files come from gilbarbara/logos and simple-icons, both CC0, plus hand-curated logos taken from official brand pages and Wikimedia Commons, each with its source listed in SOURCES.md. Every source is pinned to one commit and mirrored here.
Ownership
Every logo belongs to its owner. They are served so you can identify a company, nothing more.
Takedown
Own a mark and want it gone? Open a GitHub issue. It is removed in one commit.