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.

Base URL https://api.dharun.devNo key needed for most600 units a minute, 3000 with a free keyThis page as Markdown

Logo 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.

ParameterDescription
namepath, requiredBrand name, slug, alias or domain. A .svg or .png suffix selects the format.
formatqueryImage format. Default svg. One of: svg, png.
sizequeryPNG width and height in pixels, 16 to 512. Default 128.
fallbackqueryWhat an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none.
categoryqueryOnly 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

Example: Logo of an unlisted Indian brand

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.

ParameterDescription
qqueryStart of a name, alias or domain.
categoryqueryOnly this category. One of: payments, fintech, insurance, mutual-fund, commerce, health, mobility, travel, food, education, media, gaming, telecom, tech, government.
limitqueryResults per page, 1 to 100.
offsetqueryResults 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.

ParameterDescription
symbolpath, requiredTicker, exchange-qualified ticker, Yahoo symbol, ISIN or name. A .svg or .png suffix selects the format.
formatqueryImage format. Default svg. One of: svg, png.
sizequeryPNG width and height in pixels, 16 to 512. Default 128.
fallbackqueryWhat an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none.
exchangequeryOnly 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

Example: Logo of a global stock

Search the global stocks

GET/v1/stock-logos

Stocks whose ticker, name or ISIN starts with q, largest first, or every stock.

ParameterDescription
qqueryStart of a ticker or name.
exchangequeryOnly this exchange. One of: NASDAQ, NYSE, AMEX, LSE, TSE, HKEX, XETR, FWB, EURONEXT, TSX, ASX, SIX.
limitqueryResults per page, 1 to 100.
offsetqueryResults 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.

ParameterDescription
symbolpath, requiredSymbol or name. A .svg or .png suffix selects the format.
formatqueryImage format. Default svg. One of: svg, png.
sizequeryPNG width and height in pixels, 16 to 512. Default 128.
fallbackqueryWhat an unknown name gets: monogram (the default, an initials tile) or none (404). One of: monogram, none.
kindqueryOnly 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

Example: Logo of a coin, index, ETF or commodity

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.

ParameterDescription
qqueryStart of a symbol or name.
kindqueryOnly this kind. One of: crypto, index, etf, commodity.
limitqueryResults per page, 1 to 100.
offsetqueryResults 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.