Company Logos

The logos module provides access to company logo images for stocks and cryptocurrencies.

Overview

The logos module allows you to:

  • Retrieve company logos as binary image data

  • Get direct URLs to logo resources

  • Save logos to files

  • Convert logos to base64 for embedding

  • Batch retrieve logos for multiple symbols

Usage

Get Logo URL

from py_alpaca_api import PyAlpacaAPI

api = PyAlpacaAPI(
    api_key="your_api_key",
    api_secret="your_secret_key"
)

# Get the URL for a company logo
logo_url = api.stock.logos.get_logo_url("AAPL")
print(f"Logo URL: {logo_url}")
# Output: https://data.alpaca.markets/v1beta1/logos/AAPL

# Use in HTML
html = f'<img src="{logo_url}" alt="AAPL logo">'

Get Logo Data

# Get logo as binary data
logo_data = api.stock.logos.get_logo("AAPL")

# Save to a file manually
with open("aapl_logo.png", "wb") as f:
    f.write(logo_data)

Save Logo to File

# Direct save to file
api.stock.logos.save_logo("AAPL", "logos/aapl.png")

# Save with placeholder if logo not found
api.stock.logos.save_logo(
    "UNKNOWN",
    "logos/unknown.png",
    placeholder=True
)

Get Logo as Base64

# Get logo as base64 for embedding
logo_base64 = api.stock.logos.get_logo_base64("AAPL")

# Use in HTML with data URI
html = f'<img src="data:image/png;base64,{logo_base64}" alt="AAPL logo">'

# Use in JSON response
response = {
    "symbol": "AAPL",
    "logo": logo_base64,
    "name": "Apple Inc."
}

Multiple Logos

# Get logos for multiple symbols
symbols = ["AAPL", "MSFT", "GOOGL", "INVALID"]
logos = api.stock.logos.get_multiple_logos(symbols)

# Process results
for symbol, logo_data in logos.items():
    if logo_data:
        print(f"{symbol}: Logo retrieved ({len(logo_data)} bytes)")
        # Save the logo
        with open(f"logos/{symbol}.png", "wb") as f:
            f.write(logo_data)
    else:
        print(f"{symbol}: No logo available")

# Get with placeholders for missing logos
logos = api.stock.logos.get_multiple_logos(
    symbols,
    placeholder=True  # Returns placeholder for missing logos
)

Parameters

get_logo_url()

  • symbol: The stock symbol to get the logo URL for

  • placeholder: If True, includes placeholder parameter in URL

get_logo_base64()

  • symbol: The stock symbol to get the logo for

  • placeholder: If True, returns a placeholder image when logo is not available

get_multiple_logos()

  • symbols: List of stock symbols to get logos for

  • placeholder: If True, returns placeholder images when logos are not available

Placeholder Images

When a logo is not available, you can request a placeholder:

# Request with placeholder
logo_url = api.stock.logos.get_logo_url("INVALID", placeholder=True)

# The API will return a generic placeholder image
logo_data = api.stock.logos.get_logo("INVALID", placeholder=True)

Use Cases

Website Display

# Generate HTML for stock display
def create_stock_card(symbol):
    logo_url = api.stock.logos.get_logo_url(symbol, placeholder=True)
    quote = api.stock.latest_quote.get(symbol)

    return f"""
    <div class="stock-card">
        <img src="{logo_url}" alt="{symbol} logo" width="50">
        <h3>{symbol}</h3>
        <p>Price: ${quote.ask_price}</p>
    </div>
    """

Report Generation

# Include logos in PDF reports
import base64
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas

def add_logo_to_pdf(c, symbol, x, y):
    logo_data = api.stock.logos.get_logo(symbol, placeholder=True)

    # Save temporarily
    temp_file = f"/tmp/{symbol}_logo.png"
    with open(temp_file, "wb") as f:
        f.write(logo_data)

    # Add to PDF
    c.drawImage(temp_file, x, y, width=50, height=50)

API Responses

# Include logos in API responses
def get_stock_info(symbols):
    results = []
    for symbol in symbols:
        logo_base64 = api.stock.logos.get_logo_base64(symbol, placeholder=True)
        quote = api.stock.latest_quote.get(symbol)

        results.append({
            "symbol": symbol,
            "logo": logo_base64,
            "price": float(quote.ask_price),
            "timestamp": quote.timestamp.isoformat()
        })

    return results

Error Handling

from py_alpaca_api.exceptions import ValidationError

try:
    # Invalid symbol
    logo = api.stock.logos.get_logo("")
except ValidationError as e:
    print(f"Validation error: {e}")

try:
    # Logo not found without placeholder
    logo = api.stock.logos.get_logo("INVALID_SYMBOL")
except Exception as e:
    print(f"Logo not found: {e}")

    # Retry with placeholder
    logo = api.stock.logos.get_logo("INVALID_SYMBOL", placeholder=True)

Notes

  • The logos endpoint is in beta (v1beta1)

  • Logos are available for select stock and crypto symbols

  • Image format is typically PNG

  • For pricing details on the Logo API, contact sales@alpaca.markets