Docs / Money and business
Brand, stock and asset logos API
Logos for unlisted Indian brands, global stocks, crypto, indices, ETFs and commodities.
Three logo sets beside the NSE and BSE listing, with the same options: SVG or PNG, any size, and an initials tile instead of a broken image for a name that matches nothing (X-Logo-Known: false; fallback=none answers 404). Brands are unlisted Indian names people expect, such as PhonePe, Zepto, UPI, DigiLocker, the mutual fund houses and insurers; their artwork is a free-licence file from Wikimedia Commons or the brand site's own icon, and each answer says which. Global stocks are every share on NASDAQ, NYSE and NYSE American and the 500 largest companies on each of LSE, Tokyo, Hong Kong, Xetra and Frankfurt, Euronext, Toronto, ASX and SIX. Assets are the 500 largest coins, the main Indian and world indices, NSE ETFs and the largest US ETFs, and commodities drawn for this API. As with company logos, a 304 answer or an already drawn PNG does not count against the rate limit. The company logos address /v1/logos also looks in these sets, in that order, when a symbol is not an Indian listing, and says where the answer came from in X-Logo-Set.
https://api.dharun.devNo key needed for most600 units a minute, 3000 with a free keyThis page as MarkdownLogo of an unlisted Indian brand
GET/v1/brand-logos/{name}
Returns the image itself. Looked up by name, slug, an earlier or common name, or the brand's domain (phonepe, Google Pay, gpay, phonepe.com). A brand known only by its site icon is a 256-pixel picture; format=svg wraps it in an SVG.
The answer returns the image itself; errors are JSON as everywhere else.
| Parameter | Description |
|---|---|
namepath, required | Brand name, slug, alias or domain. A .svg or .png suffix selects the format. |
formatquery | Image format. Default svg. One of: svg, png. |
sizequery | PNG width and height in pixels, 16 to 512. Default 128. |
fallbackquery | What an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none. |
categoryquery | Only brands of this category. One of: payments, fintech, insurance, mutual-fund, commerce, health, mobility, travel, food, education, media, gaming, telecom, tech, government. |
curl
curl -o picture.svg "https://api.dharun.dev/v1/brand-logos/phonepe?utm_medium=docs"HTML
<img src="https://api.dharun.dev/v1/brand-logos/phonepe?utm_medium=docs" alt="Logo of an unlisted Indian brand">Try it here
Change the values and send the request from your browser. Needs JavaScript.
Result
Search the brands
GET/v1/brand-logos
Brands whose name, slug, alias or domain starts with q, or every brand. Each has its logo addresses and, under artwork, where the picture came from and its licence.
| Parameter | Description |
|---|---|
qquery | Start of a name, alias or domain. |
categoryquery | Only this category. One of: payments, fintech, insurance, mutual-fund, commerce, health, mobility, travel, food, education, media, gaming, telecom, tech, government. |
limitquery | Results per page, 1 to 100. |
offsetquery | Results to skip. |
curl
curl "https://api.dharun.dev/v1/brand-logos?q=pay&limit=5&utm_medium=docs"JavaScript
const response = await fetch("https://api.dharun.dev/v1/brand-logos?q=pay&limit=5&utm_medium=docs");
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data);Python
import requests
response = requests.get("https://api.dharun.dev/v1/brand-logos?q=pay&limit=5&utm_medium=docs", timeout=10)
body = response.json()
if not response.ok:
raise RuntimeError(body["error"]["message"])
print(body["data"])Try it here
Change the values and send the request from your browser. Needs JavaScript.
Response
{
"data": [
{
"id": "BRAND:payu",
"symbol": "payu",
"category": "payments",
"name": "PayU",
"domain": "payu.in",
"aliases": [
"payu-india"
],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/brand-logos/payu?format=png&size=128",
"svg": "https://api.dharun.dev/v1/brand-logos/payu"
},
"artwork": {
"origin": "commons",
"url": "https://commons.wikimedia.org/wiki/File:PayU_India_Logo.svg",
"licence": "Public domain",
"author": "PayU India"
}
},
{
"id": "BRAND:google-pay",
"symbol": "google-pay",
"category": "payments",
"name": "Google Pay",
"domain": "pay.google.com",
"aliases": [
"googlepay",
"gpay",
"tez"
],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/brand-logos/google-pay?format=png&size=128",
"svg": "https://api.dharun.dev/v1/brand-logos/google-pay"
},
"artwork": {
"origin": "commons",
"url": "https://commons.wikimedia.org/wiki/File:Google_Pay_Logo.svg",
"licence": "Public domain",
"author": "Google"
}
}
],
"meta": {
"total": 2,
"limit": 5,
"offset": 0,
"source": {
"name": "Indian brand logos",
"url": "https://github.com/dharunashokkumar/api.dharun.dev/tree/main/data/brand-logos",
"licence": "Logos are trademarks of the brands they identify; Commons files under their own free licence (public domain, CC0, CC BY, CC BY-SA), named per brand",
"retrieved": "2026-11-11",
"attribution": "Brand logos and trademarks belong to their respective owners. Commons artwork by the authors named in each entry."
}
}
}Logo of a global stock
GET/v1/stock-logos/{symbol}
Returns the image itself. A ticker (AAPL), exchange-qualified ticker (NASDAQ:AAPL), Yahoo Finance symbol (VOD.L, 0700.HK, SAP.DE), ISIN or company name (apple). When a ticker is used on several exchanges the largest company wins unless exchange is given.
The answer returns the image itself; errors are JSON as everywhere else.
| Parameter | Description |
|---|---|
symbolpath, required | Ticker, exchange-qualified ticker, Yahoo symbol, ISIN or name. A .svg or .png suffix selects the format. |
formatquery | Image format. Default svg. One of: svg, png. |
sizequery | PNG width and height in pixels, 16 to 512. Default 128. |
fallbackquery | What an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none. |
exchangequery | Only this exchange. One of: NASDAQ, NYSE, AMEX, LSE, TSE, HKEX, XETR, FWB, EURONEXT, TSX, ASX, SIX. |
curl
curl -o picture.svg "https://api.dharun.dev/v1/stock-logos/AAPL?utm_medium=docs"HTML
<img src="https://api.dharun.dev/v1/stock-logos/AAPL?utm_medium=docs" alt="Logo of a global stock">Try it here
Change the values and send the request from your browser. Needs JavaScript.
Result
Search the global stocks
GET/v1/stock-logos
Stocks whose ticker, name or ISIN starts with q, largest first, or every stock.
| Parameter | Description |
|---|---|
qquery | Start of a ticker or name. |
exchangequery | Only this exchange. One of: NASDAQ, NYSE, AMEX, LSE, TSE, HKEX, XETR, FWB, EURONEXT, TSX, ASX, SIX. |
limitquery | Results per page, 1 to 100. |
offsetquery | Results to skip. |
curl
curl "https://api.dharun.dev/v1/stock-logos?q=micro&limit=5&utm_medium=docs"JavaScript
const response = await fetch("https://api.dharun.dev/v1/stock-logos?q=micro&limit=5&utm_medium=docs");
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data);Python
import requests
response = requests.get("https://api.dharun.dev/v1/stock-logos?q=micro&limit=5&utm_medium=docs", timeout=10)
body = response.json()
if not response.ok:
raise RuntimeError(body["error"]["message"])
print(body["data"])Try it here
Change the values and send the request from your browser. Needs JavaScript.
Response, with lists and long text shortened
{
"data": [
{
"id": "NASDAQ:MSFT",
"symbol": "MSFT",
"exchange": "NASDAQ",
"kind": "stock",
"name": "Microsoft Corporation",
"country": "United States",
"sector": "Technology Services",
"industry": "Packaged Software",
"isin": "US5949181045",
"currency": "USD",
"marketCap": 3959349718956.24,
"aliases": [],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/stock-logos/MSFT?exchange=nasdaq&format=png&size=128",
"svg": "https://api.dharun.dev/v1/stock-logos/MSFT?exchange=nasdaq"
}
},
{
"id": "NASDAQ:MU",
"symbol": "MU",
"exchange": "NASDAQ",
"kind": "stock",
"name": "Micron Technology, Inc.",
"country": "United States",
"sector": "Electronic Technology",
"industry": "Semiconductors",
"isin": "US5951121038",
"currency": "USD",
"marketCap": 820406316759.184,
"aliases": [],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/stock-logos/MU?exchange=nasdaq&format=png&size=128",
"svg": "https://api.dharun.dev/v1/stock-logos/MU?exchange=nasdaq"
}
},
{
"id": "TSE:6871",
"symbol": "6871",
"exchange": "TSE",
"kind": "stock",
"name": "Micronics Japan Co., Ltd.",
"country": "Japan",
"sector": "Electronic Technology",
"industry": "Semiconductors",
"isin": "JP3750400008",
"currency": "JPY",
"marketCap": 342701574348,
"aliases": [],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/stock-logos/6871?exchange=tse&format=png&size=128",
"svg": "https://api.dharun.dev/v1/stock-logos/6871?exchange=tse"
}
}
],
"meta": {
"total": 10,
"limit": 5,
"offset": 0,
"source": {
"name": "Global stock logos",
"url": "https://www.tradingview.com/",
"licence": "Logos are trademarks of the companies they identify",
"retrieved": "2026-11-11",
"attribution": "Company logos and trademarks belong to their respective owners."
}
}
}Logo of a coin, index, ETF or commodity
GET/v1/asset-logos/{symbol}
Returns the image itself. BTC (also BTCUSD, BTC-INR), NIFTY50, SENSEX, SPX, NIFTYBEES, GOLD, CRUDEOIL. kind settles a symbol used by two kinds.
The answer returns the image itself; errors are JSON as everywhere else.
| Parameter | Description |
|---|---|
symbolpath, required | Symbol or name. A .svg or .png suffix selects the format. |
formatquery | Image format. Default svg. One of: svg, png. |
sizequery | PNG width and height in pixels, 16 to 512. Default 128. |
fallbackquery | What an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none. |
kindquery | Only this kind. One of: crypto, index, etf, commodity. |
curl
curl -o picture.svg "https://api.dharun.dev/v1/asset-logos/BTC?utm_medium=docs"HTML
<img src="https://api.dharun.dev/v1/asset-logos/BTC?utm_medium=docs" alt="Logo of a coin, index, ETF or commodity">Try it here
Change the values and send the request from your browser. Needs JavaScript.
Result
Search coins, indices, ETFs and commodities
GET/v1/asset-logos
Assets whose symbol or name starts with q, largest first, or every asset of a kind.
| Parameter | Description |
|---|---|
qquery | Start of a symbol or name. |
kindquery | Only this kind. One of: crypto, index, etf, commodity. |
limitquery | Results per page, 1 to 100. |
offsetquery | Results to skip. |
curl
curl "https://api.dharun.dev/v1/asset-logos?kind=index&limit=5&utm_medium=docs"JavaScript
const response = await fetch("https://api.dharun.dev/v1/asset-logos?kind=index&limit=5&utm_medium=docs");
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data);Python
import requests
response = requests.get("https://api.dharun.dev/v1/asset-logos?kind=index&limit=5&utm_medium=docs", timeout=10)
body = response.json()
if not response.ok:
raise RuntimeError(body["error"]["message"])
print(body["data"])Try it here
Change the values and send the request from your browser. Needs JavaScript.
Response, with lists and long text shortened
{
"data": [
{
"id": "INDEX:BANKNIFTY",
"symbol": "BANKNIFTY",
"exchange": "NSE",
"kind": "index",
"name": "Nifty Bank",
"aliases": [
"NIFTY BANK",
"NIFTYBANK"
],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/asset-logos/BANKNIFTY?kind=index&format=png&size=128",
"svg": "https://api.dharun.dev/v1/asset-logos/BANKNIFTY?kind=index"
}
},
{
"id": "INDEX:CAC40",
"symbol": "CAC40",
"exchange": "EURONEXT",
"kind": "index",
"name": "CAC 40",
"aliases": [
"FCHI",
"PX1"
],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/asset-logos/CAC40?kind=index&format=png&size=128",
"svg": "https://api.dharun.dev/v1/asset-logos/CAC40?kind=index"
}
},
{
"id": "INDEX:DAX",
"symbol": "DAX",
"exchange": "XETR",
"kind": "index",
"name": "DAX",
"aliases": [
"DAX40",
"GDAXI"
],
"hasLogo": true,
"logo": {
"png": "https://api.dharun.dev/v1/asset-logos/DAX?kind=index&format=png&size=128",
"svg": "https://api.dharun.dev/v1/asset-logos/DAX?kind=index"
}
}
],
"meta": {
"total": 26,
"limit": 5,
"offset": 0,
"source": {
"name": "Crypto, index, ETF and commodity logos",
"url": "https://github.com/spothq/cryptocurrency-icons",
"licence": "Coin, index and fund marks belong to their owners; spothq icons CC0 1.0; commodity icons drawn for this API",
"retrieved": "2026-11-11",
"attribution": "Marks belong to their respective owners. Crypto icons by spothq (CC0)."
}
}
}Data source
Global stock logos. Retrieved 2026-11-11. Licence: Logos are trademarks of the companies they identify. Company logos and trademarks belong to their respective owners.
Indian brand logos. Retrieved 2026-11-11. Licence: Logos are trademarks of the brands they identify; Commons files under their own free licence (public domain, CC0, CC BY, CC BY-SA), named per brand. Brand logos and trademarks belong to their respective owners. Commons artwork by the authors named in each entry.
Crypto, index, ETF and commodity logos. Retrieved 2026-11-11. Licence: Coin, index and fund marks belong to their owners; spothq icons CC0 1.0; commodity icons drawn for this API. Marks belong to their respective owners. Crypto icons by spothq (CC0).
Using an AI assistant? Connect the MCP server and it can call this API by itself. Want every endpoint on one bench? Open the playground.