Stats

live
280CA stations+92 rebroadcasters
6,980US stations5,781 with a network
US data56 / 56 states
12,792logos
651CA channels
990API 24 h
5,142FAST channels
76Paid channels
93.3%CA local feeds
0%US with logo
API calls · 24 h

Harvest

☀ Light

Find any TV channel logo.

One key in, one logo out: a tvg-id, an epg.monster id, a Canadian call sign or a channel name.

name
CFTK-TV-1
matched
call_sign: cftk-tv-1
resolved_level
station
theme_served
default
fallback
true
source
epg-monster
</> Code
updates live with the options aboveAI prompt
# pip install tvlogo.monster   (imported as: import tvlogo)
from tvlogo import Client

# 1. one client per program (reuses the HTTPS connection, no API key needed)
client = Client()

# 2. resolve one key: tvg-id, epg.monster id, call sign or channel name
logo = client.resolve(
    "CFTK-TV-1",
    namespace="call_sign",  # key is a Canadian call sign, e.g. CKY-DT
    size=256,  # 256x256 px PNG
)

# 3. None = no logo for this key (429 rate limits are retried after Retry-After)
if logo is None:
    raise SystemExit("no logo for this key")

# 4. use the image URL, e.g. as tvg-logo="..." in an M3U playlist
print(logo.image_url)
# which level answered: station, brand, network or channel
print(logo.resolved_level)
# True when a fallback was used (e.g. no dark variant -> default)
print(logo.fallback, logo.theme_served)

Matches

LogoChannelLevelImage URL
CFTK-TV-1
CFTK-TV-1 Prince Rupert, BC
station https://i.tvlogo.monster/DtNgc-256.png