> ## Documentation Index
> Fetch the complete documentation index at: https://www.logo.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Stock Ticker Logo API: Company Logos by Symbol

> Stock logo API: get company logos by ticker symbol across NYSE, NASDAQ, and global exchanges, with standard size, format, and fallback image options for apps.

export const LogoDemo = ({type = "domain"}) => {
  const DEFAULT_VALUES = {
    domain: "logo.dev",
    name: "Shopify",
    crypto: "BTC",
    ticker: "AAPL",
    isin: "US0378331005"
  };
  const PLACEHOLDERS = {
    domain: "Enter a domain...",
    name: "Enter a brand name...",
    crypto: "Enter a crypto symbol...",
    ticker: "Enter a stock ticker...",
    isin: "Enter an ISIN..."
  };
  const LABELS = {
    domain: "company domain",
    name: "brand name",
    crypto: "cryptocurrency symbol",
    ticker: "stock ticker",
    isin: "ISIN"
  };
  const [input, setInput] = useState("");
  const [displayValue, setDisplayValue] = useState(DEFAULT_VALUES[type] || DEFAULT_VALUES.domain);
  const [imageError, setImageError] = useState(false);
  const normalizeInput = useCallback(value => {
    if (!value) return "";
    let cleaned = value.trim();
    if (type === "domain") {
      cleaned = cleaned.replace(/^https?:\/\//, "");
      cleaned = cleaned.replace(/^www\./, "");
      cleaned = cleaned.split("/")[0].split("?")[0];
      if (cleaned.includes(".")) {
        return cleaned.toLowerCase();
      }
      if (cleaned.length > 0) {
        return `${cleaned.toLowerCase()}.com`;
      }
    }
    if (type === "name") {
      return encodeURIComponent(cleaned);
    }
    if (type === "crypto" || type === "ticker" || type === "isin") {
      return cleaned.toUpperCase();
    }
    return cleaned;
  }, [type]);
  const handleInputChange = useCallback(e => {
    const value = e.target.value;
    setInput(value);
    const normalized = normalizeInput(value);
    if (normalized) {
      setDisplayValue(normalized);
      setImageError(false);
    } else if (value === "") {
      setDisplayValue(DEFAULT_VALUES[type] || DEFAULT_VALUES.domain);
    }
  }, [normalizeInput, type]);
  const handleImageError = useCallback(() => {
    setImageError(true);
  }, []);
  const imageUrl = useMemo(() => {
    const baseUrl = "https://img.logo.dev";
    const token = "live_6a1a28fd-6420-4492-aeb0-b297461d9de2";
    const params = "format=webp&retina=true&size=128";
    if (type === "domain") {
      return `${baseUrl}/${displayValue}?token=${token}&${params}`;
    }
    return `${baseUrl}/${type}/${displayValue}?token=${token}&${params}`;
  }, [displayValue, type]);
  return <div className="not-prose my-8 rounded-2xl border border-zinc-950/10 dark:border-white/10 bg-gradient-to-br from-zinc-50 to-white dark:from-zinc-900 dark:to-zinc-950 p-8 shadow-sm">
      <div className="max-w-2xl mx-auto space-y-6">
        {}
        <div className="flex justify-center" role="img" aria-label={`${LABELS[type]} logo preview`}>
          <div className="rounded-2xl bg-zinc-100 dark:bg-zinc-800/50 inline-flex items-center justify-center">
            <img alt={`${displayValue} logo`} width="128" height="128" src={imageUrl} onError={handleImageError} className="rounded-lg" loading="lazy" key={displayValue} />
          </div>
        </div>
        {}
        <div className="relative">
          <label htmlFor="logo-input" className="sr-only">
            Enter {LABELS[type]}
          </label>
          <div className="absolute inset-y-0 left-4 flex items-center pointer-events-none">
            <svg className="h-5 w-5 text-zinc-400" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
            </svg>
          </div>
          <input id="logo-input" type="text" value={input} onChange={handleInputChange} placeholder={PLACEHOLDERS[type] || PLACEHOLDERS.domain} aria-describedby={imageError ? "image-error" : undefined} className="w-full pl-12 pr-4 py-4 text-lg rounded-xl border border-zinc-950/10 dark:border-white/20 bg-white dark:bg-zinc-900 text-zinc-950 dark:text-white placeholder:text-zinc-400 focus:outline-none focus:ring-2 focus:ring-zinc-950/20 dark:focus:ring-white/20 transition-shadow" />
          {imageError && <p id="image-error" className="sr-only">
              Logo not found for {displayValue}
            </p>}
        </div>
      </div>
    </div>;
};

Get company and stock market logos for your financial website or application using stock ticker symbols.

The stock logo API maps ticker symbols to company logos across major global exchanges. Use it in a brokerage, portfolio tracker, or market dashboard.

## Try it yourself

Enter any stock ticker symbol below to see the company logo. Supports NYSE, NASDAQ, and global exchanges.

<LogoDemo type="ticker" />

***

### How to use stock ticker logos

Get your publishable key from the [Logo.dev dashboard](https://www.logo.dev/dashboard).

<Frame caption="https://img.logo.dev/ticker/ETSY?token=LOGO_DEV_PUBLISHABLE_KEY">
  <img alt="Etsy Logo" width="100" height="100" src="https://img.logo.dev/ticker/ETSY?token=live_6a1a28fd-6420-4492-aeb0-b297461d9de2&size=200" />
</Frame>

Here's an example of how to implement a stock ticker logo lookup for Etsy on your website:

<CodeGroup>
  ```html Example theme={null}
  <img src="https://img.logo.dev/ticker/ETSY?token=LOGO_DEV_PUBLISHABLE_KEY" alt="Etsy stock ticker logo" />
  ```

  ```html Format theme={null}
  <img
    src="https://img.logo.dev/ticker/:symbol?token=LOGO_DEV_PUBLISHABLE_KEY"
    alt="Stock ticker logo"
  />
  ```
</CodeGroup>

Anywhere you can use an image URL, such as Excel, Slack, or email, you can use this endpoint:

<CodeGroup>
  ```html Example theme={null}
  https://img.logo.dev/ticker/ETSY?token=LOGO_DEV_PUBLISHABLE_KEY
  ```

  ```html Format theme={null}
  https://img.logo.dev/ticker/:symbol?token=LOGO_DEV_PUBLISHABLE_KEY
  ```
</CodeGroup>

### How stock ticker lookup works

For supported exchanges, ticker symbols map to domain names. A ticker lookup and a domain lookup return the same result for a recognized symbol. An unrecognized symbol returns a fallback image.

### Exchange support

We support ticker symbols from all major global exchanges. By default, unsuffixed symbols search US exchanges, including NYSE, NASDAQ, NYSE American, Cboe, OTC, and Pink Sheets.

To specify a particular exchange, append the exchange shortcode after the ticker symbol with a dot:

<CodeGroup>
  ```html American markets (default) theme={null}
  <img src="https://img.logo.dev/ticker/AAPL?token=LOGO_DEV_PUBLISHABLE_KEY" alt="Apple stock ticker logo" />
  ```

  ```html London Stock Exchange theme={null}
  <img
    src="https://img.logo.dev/ticker/AZN.L?token=LOGO_DEV_PUBLISHABLE_KEY"
    alt="AstraZeneca logo from London Stock Exchange"
  />
  ```

  ```html Tokyo Stock Exchange theme={null}
  <img
    src="https://img.logo.dev/ticker/7203.T?token=LOGO_DEV_PUBLISHABLE_KEY"
    alt="Toyota stock ticker logo from Tokyo Stock Exchange"
  />
  ```
</CodeGroup>

### Exchange shortcodes

| Shortcode | Exchange                                               | Country        |
| --------- | ------------------------------------------------------ | -------------- |
| None      | US exchanges (NYSE, NASDAQ, NYSE American, Cboe, OTC)  | United States  |
| .TO       | Toronto Stock Exchange                                 | Canada         |
| .V        | TSX Venture Exchange                                   | Canada         |
| .CN       | Canadian Securities Exchange                           | Canada         |
| .NE       | Cboe Canada                                            | Canada         |
| .MX       | Mexican Stock Exchange                                 | Mexico         |
| .SA       | B3 Brazil Stock Exchange                               | Brazil         |
| .BA       | Buenos Aires Stock Exchange                            | Argentina      |
| .SN       | Santiago Stock Exchange                                | Chile          |
| .L        | London Stock Exchange                                  | United Kingdom |
| .IL       | International Order Book                               | United Kingdom |
| .IR       | Euronext Dublin                                        | Ireland        |
| .PA       | Euronext Paris                                         | France         |
| .AS       | Euronext Amsterdam                                     | Netherlands    |
| .BR       | Euronext Brussels                                      | Belgium        |
| .LS       | Euronext Lisbon                                        | Portugal       |
| .MC       | Bolsa de Madrid                                        | Spain          |
| .MI       | Borsa Italiana                                         | Italy          |
| .DE       | Xetra                                                  | Germany        |
| .F        | Frankfurt Stock Exchange                               | Germany        |
| .SG       | Stuttgart Stock Exchange                               | Germany        |
| .DU       | Dusseldorf Stock Exchange                              | Germany        |
| .HM       | Hamburg Stock Exchange                                 | Germany        |
| .BE       | Berlin Stock Exchange                                  | Germany        |
| .MU       | Munich Stock Exchange                                  | Germany        |
| .SW       | SIX Swiss Exchange                                     | Switzerland    |
| .VI       | Vienna Stock Exchange                                  | Austria        |
| .ST       | Nasdaq Stockholm                                       | Sweden         |
| .OL       | Oslo Stock Exchange                                    | Norway         |
| .CO       | Nasdaq Copenhagen                                      | Denmark        |
| .HE       | Nasdaq Helsinki                                        | Finland        |
| .IC       | Nasdaq Iceland                                         | Iceland        |
| .WA       | Warsaw Stock Exchange                                  | Poland         |
| .PR       | Prague Stock Exchange                                  | Czech Republic |
| .AT       | Athens Stock Exchange                                  | Greece         |
| .IS       | Borsa Istanbul                                         | Turkey         |
| .T        | Japan Exchange Group                                   | Japan          |
| .HK       | Hong Kong Stock Exchange                               | Hong Kong      |
| .SS       | Shanghai Stock Exchange                                | China          |
| .SZ       | Shenzhen Stock Exchange                                | China          |
| .TW       | Taiwan Stock Exchange                                  | Taiwan         |
| .TWO      | Taipei Exchange                                        | Taiwan         |
| .KS       | Korea Exchange                                         | South Korea    |
| .KQ       | KOSDAQ                                                 | South Korea    |
| .NS       | National Stock Exchange of India                       | India          |
| .BO       | BSE                                                    | India          |
| .SI       | Singapore Exchange                                     | Singapore      |
| .BK       | Stock Exchange of Thailand                             | Thailand       |
| .JK       | Indonesia Stock Exchange                               | Indonesia      |
| .KL       | Bursa Malaysia                                         | Malaysia       |
| .AX       | Australian Securities Exchange                         | Australia      |
| .NZ       | New Zealand Exchange                                   | New Zealand    |
| .TA       | Tel Aviv Stock Exchange                                | Israel         |
| .SR       | Saudi Exchange                                         | Saudi Arabia   |
| .AE       | Dubai Financial Market & Abu Dhabi Securities Exchange | UAE            |
| .QA       | Qatar Stock Exchange                                   | Qatar          |
| .CA       | Egyptian Exchange                                      | Egypt          |
| .JO       | Johannesburg Stock Exchange                            | South Africa   |

<Note>
  By default, an unrecognized ticker symbol returns a fallback image, not an
  error. Add `fallback=404` to the request to get a `404` response instead.
</Note>

### FAQs

<AccordionGroup>
  <Accordion title="Can I change the size or image format?">
    Yes, all the parameters of the [logo endpoint](/docs/logo-images/get) are also available for the ticker endpoint.
  </Accordion>

  <Accordion title="Does this support ETFs and other security types?">
    Most listed equities and many ETFs resolve to logos. An unrecognized symbol returns a fallback image.
  </Accordion>

  <Accordion title="Do you support crypto?">
    Yes, we support cryptocurrency logos through our dedicated crypto endpoint. [View the crypto documentation](./crypto).
  </Accordion>

  <Accordion title="What if I find a missing or wrong ticker logo?">
    We're obsessed with quality. You can report issues in two ways: - Submit an update at [logo.dev/update](https://www.logo.dev/update) - Report directly from the dashboard when you're logged in
  </Accordion>
</AccordionGroup>
