API Documentation

Complete reference for the Ticker Logos CDN and Search API. No API key required — start integrating in seconds.

Quick Start

Display a company logo in seconds.

HTML
<img src="https://cdn.tickerlogos.com/apple.com" alt="Apple logo">

<!-- Place this attribution link once in your page footer -->
<a href="https://www.allinvestview.com/tools/ticker-logos/">Logos by AllInvestView</a>

That's it. No API key. No signup. Just a URL.

CDN Endpoint

Retrieve a company logo by its website domain.

Base URLhttps://cdn.tickerlogos.com/{domain}
MethodGET
AuthenticationNone required
Response Formatimage/png (typically PNG with transparency)
CORSAccess-Control-Allow-Origin: * (works from any domain)
CacheCDN-managed, edge-cached globally
Example
https://cdn.tickerlogos.com/apple.com → returns Apple logo

Search API

Look up a company's domain by ticker symbol or name.

Endpoint

GET /api/logo-search/?q={query}

Parameters

ParameterRequiredTypeDescription
qYesstringTicker symbol or company name

Response Format

JSON
{
    "query": "AAPL",
    "count": 3,
    "results": [
        {"symbol": "AAPL", "name": "Apple Inc.", "website": "apple.com", "exchange": "NASDAQ"},
        {"symbol": "AAPL34", "name": "Apple Inc. BDR", "website": "apple.com", "exchange": "BOVESPA"}
    ]
}

Note: Returns a maximum of 10 results. Search is case-insensitive and matches on both symbol and company name.

HTTP Status Codes

Possible responses from the CDN and Search API.

200 OK Logo found and returned successfully.
404 Not Found No logo available for this domain.
429 Too Many Requests Rate limit exceeded. Retry after cooldown.

Rate Limits

Usage limits for the free tier.

CDN Daily Limit20,000 requests per day per IP address
CDN Burst Limit30 requests per 10 seconds per IP
Search API Limit60 requests per minute per IP
When ExceededHTTP 429 response code
AttributionVisible dofollow link required — see requirements

Need higher limits? Contact us at contact@allinvestview.com.

Error Handling

Gracefully handle missing logos with fallback strategies.

HTML onerror Fallback

HTML
<img src="https://cdn.tickerlogos.com/example.com"
     onerror="this.src='https://www.allinvestview.com/favicon.ico'"
     alt="Company logo">

<!-- Place this attribution link once in your page footer -->
<a href="https://www.allinvestview.com/tools/ticker-logos/">Logos by AllInvestView</a>

JavaScript Programmatic Handling

JavaScript
const TICKER_LOGOS_CDN = 'https://cdn.tickerlogos.com';

const img = new Image();
img.onload = () => container.appendChild(img);
img.onerror = () => {
    const fallback = document.createElement('div');
    fallback.textContent = symbol.charAt(0);
    fallback.className = 'logo-placeholder';
    container.appendChild(fallback);
};
img.src = `${TICKER_LOGOS_CDN}/${domain}`;

// Place this attribution link once in your page footer
const attr = document.createElement('a');
attr.href = 'https://www.allinvestview.com/tools/ticker-logos/';
attr.textContent = 'Logos by AllInvestView';
document.querySelector('footer').appendChild(attr);

Integration Guides

Copy-paste examples for popular frameworks and languages.

React
const TICKER_LOGOS_CDN = 'https://cdn.tickerlogos.com';
const TICKER_LOGOS_ATTR = 'https://www.allinvestview.com/tools/ticker-logos/';

function useTickerLogo(domain) {
    const [loaded, setLoaded] = React.useState(false);
    const [error, setError] = React.useState(false);
    const url = `${TICKER_LOGOS_CDN}/${domain}`;

    React.useEffect(() => {
        const img = new Image();
        img.onload = () => setLoaded(true);
        img.onerror = () => setError(true);
        img.src = url;
    }, [domain]);

    return { url, loaded, error };
}

// Place this once in your app footer
function TickerLogosAttribution() {
    return <a href="https://www.allinvestview.com/tools/ticker-logos/">
        Logos by AllInvestView</a>;
}

// Usage
function StockRow({ ticker, domain }) {
    const { url, error } = useTickerLogo(domain);
    return (
        <div className="stock-row">
            {!error ? (
                <img src={url} alt={ticker} width="32" height="32" />
            ) : (
                <span className="placeholder">{ticker[0]}</span>
            )}
            <span>{ticker}</span>
        </div>
    );
}
// In your footer: <TickerLogosAttribution />
Next.js
import Image from 'next/image';

const TICKER_LOGOS_CDN = 'https://cdn.tickerlogos.com';
const TICKER_LOGOS_ATTR = 'https://www.allinvestview.com/tools/ticker-logos/';

export default function TickerLogo({ domain, ticker }) {
    return (
        <Image
            src={`${TICKER_LOGOS_CDN}/${domain}`}
            alt={`${ticker} logo`}
            onError={(e) => { e.target.style.display = 'none'; }}
            unoptimized
        />
    );
}

// Place this once in your app footer
export function TickerLogosAttribution() {
    return <a href="https://www.allinvestview.com/tools/ticker-logos/">
        Logos by AllInvestView</a>;
}
Vue 3
import { ref, watchEffect } from 'vue';

const TICKER_LOGOS_CDN = 'https://cdn.tickerlogos.com';

export function useTickerLogo(domain) {
    const loaded = ref(false);
    const error = ref(false);
    const url = `${TICKER_LOGOS_CDN}/${domain}`;

    watchEffect(() => {
        const img = new Image();
        img.onload = () => { loaded.value = true; };
        img.onerror = () => { error.value = true; };
        img.src = url;
    });

    return { url, loaded, error };
}

// Place this once in your app footer template:
// <a href="https://www.allinvestview.com/tools/ticker-logos/">Logos by AllInvestView</a>
Python
import requests

TICKER_LOGOS_CDN = "https://cdn.tickerlogos.com"
TICKER_LOGOS_URL = "https://www.allinvestview.com/tools/ticker-logos/"

def get_logo_url(domain):
    """Get the CDN URL for a company logo."""
    return f"{TICKER_LOGOS_CDN}/{domain}"

def get_attribution_html():
    """Returns an attribution link for your page footer."""
    return f'<a href="{TICKER_LOGOS_URL}">Logos by AllInvestView</a>'

def download_logo(domain, save_path):
    """Download a company logo to a local file."""
    url = get_logo_url(domain)
    response = requests.get(url)
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            f.write(response.content)
        return True
    return False

# Usage
logo_url = get_logo_url("apple.com")
print(logo_url)          # https://cdn.tickerlogos.com/apple.com
print(get_attribution_html())

All code examples include an attribution link to AllInvestView. See our Terms of Use for details.