Complete reference for the Ticker Logos CDN and Search API. No API key required — start integrating in seconds.
Display a company logo in seconds.
<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.
Retrieve a company logo by its website domain.
| Base URL | https://cdn.tickerlogos.com/{domain} |
| Method | GET |
| Authentication | None required |
| Response Format | image/png (typically PNG with transparency) |
| CORS | Access-Control-Allow-Origin: * (works from any domain) |
| Cache | CDN-managed, edge-cached globally |
https://cdn.tickerlogos.com/apple.com → returns Apple logo
Look up a company's domain by ticker symbol or name.
GET /api/logo-search/?q={query}
| Parameter | Required | Type | Description |
|---|---|---|---|
q | Yes | string | Ticker symbol or company name |
{
"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.
Possible responses from the CDN and Search API.
Usage limits for the free tier.
| CDN Daily Limit | 20,000 requests per day per IP address |
| CDN Burst Limit | 30 requests per 10 seconds per IP |
| Search API Limit | 60 requests per minute per IP |
| When Exceeded | HTTP 429 response code |
| Attribution | Visible dofollow link required — see requirements |
Need higher limits? Contact us at contact@allinvestview.com.
Gracefully handle missing logos with fallback strategies.
<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>
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);
Copy-paste examples for popular frameworks and languages.
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 />
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>;
}
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>
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.