Indian Listed Company Logos API
SVG logos for NSE and BSE listed companies, addressed by ISIN.
Load an icon
One GET request, no key, no rate limit. Replace {isin} with the company's ISIN:
Try it
These are live requests to this server:
Use it in a page
<img src="http://company-logo.shareperks.in/logo/INE002A01018/icon.svg"
alt="Reliance Industries logo" width="32" height="32" loading="lazy" />
In CSS:
.logo { background-image: url("http://company-logo.shareperks.in/logo/INE002A01018/icon.svg"); }
From JavaScript — the icon URL always resolves, so no error handling is needed:
const iconUrl = (isin) => `http://company-logo.shareperks.in/logo/${isin}/icon.svg`;
// Only if you need to know whether it is the real logo or the placeholder:
const res = await fetch(iconUrl("INE002A01018"));
const isPlaceholder = res.headers.has("X-Logo-Fallback");
From the shell:
curl -O http://company-logo.shareperks.in/logo/INE002A01018/icon.svg
Endpoints
| Route | Response |
|---|---|
GET /logo/{isin}/icon.svg |
The logo as image/svg+xml. Sends X-Logo-Ticker (e.g. NSE:TCS) so you can see which listing answered, or X-Logo-Fallback when the placeholder was served. |
GET /logo/{isin}.json |
Company metadata for that ISIN — ticker, name, sector, industry, market cap, index membership — plus the icon URL. |
GET /health |
{ "status": "ok", "logos": 3156 } |
Rules and errors
ISIN is case-insensitive and must match ^[A-Z]{2}[A-Z0-9]{9}[0-9]$. Every response allows cross-origin use (Access-Control-Allow-Origin: *) and is cacheable for a day.
The icon route always returns an image. When a company is not in the index you get a neutral placeholder with 200 and an X-Logo-Fallback header, so an <img> never breaks. Ask /logo/{isin}.json when you need to know whether a real logo exists.
| Status | Body | Meaning |
|---|---|---|
200 | SVG | Logo found. |
200 + X-Logo-Fallback | Placeholder SVG | /icon.svg only — unknown or malformed ISIN. |
400 | {"error":"invalid_isin"} | .json only — not a well-formed ISIN. |
404 | {"error":"logo_not_found"} | .json only — valid ISIN, not in this index. |
When one ISIN is listed on both exchanges, the NSE logo is served, so a given URL always returns the same file.