To get Pokemon card prices in Python, call GET https://api.tickermint.cards/products/search?q=charizard%20ex%20199/165 with requests: it returns JSON with each match's product_id, set and latest TCGplayer market price ($322.37 for Charizard ex 199/165 on October 8, 2026), and /products/{id}/prices gives the daily history back to February 2024. No key needed, 120 requests a minute per IP, free for personal use.
Pokemon card price API in Python
NO KEY
pip install requests, then run this. Use requests or httpx: Python's built-in urllib is refused by the API's firewall.
import requests
API = "https://api.tickermint.cards"
# 1. Find the card. No key, no sign-up.
hits = requests.get(f"{API}/products/search",
params={"q": "charizard ex 199/165", "game": "pokemon"},
timeout=10).json()
card = hits[0]
print(card["product_id"], card["name"], card["set_name"], card["market"])
# 2. Its daily market price per printing, back to February 2024
pid = card["product_id"]
history = requests.get(f"{API}/products/{pid}/prices", timeout=10).json()
for printing, days in history.items():
print(printing, len(days), "days, latest", days[-1]["snapshot_date"], days[-1]["market"])WITH A KEY
Create a key at tickermint.cards/developers and send it as the X-API-Key header (or ?key=). A key on a free account keeps the same 120 a minute; the Developer plan ($19 a month) gives that key its own 600 a minute and the bulk endpoints.
import os
import requests
API = "https://api.tickermint.cards"
session = requests.Session()
session.headers["X-API-Key"] = os.environ["TICKERMINT_KEY"] # from tickermint.cards/developers
r = session.get(f"{API}/products/search", params={"q": "umbreon vmax 215"}, timeout=10)
r.raise_for_status()
card = r.json()[0]
print(card["product_id"], card["name"], card["market"])A WHOLE SET INTO PANDAS
The CSV endpoints return one row per card with the same price the card page shows. Fetch with requests and hand the text to pandas (pd.read_csv on the URL uses urllib).
import io
import pandas as pd
import requests
API = "https://api.tickermint.cards"
# a whole set, one row per card (set id = the number in tickermint.cards/set/23237)
csv_text = requests.get(f"{API}/sets/23237.csv", timeout=30).text
df = pd.read_csv(io.StringIO(csv_text), dtype={"number": str})
print(df.nlargest(5, "market_price_usd")[["name", "number", "market_price_usd"]])EXAMPLE OUTPUT
517045 Charizard ex - 199/165 SV: Scarlet & Violet 151 322.37 Holofoil 973 days, latest 2026-10-08 322.37
date,product_id,name,set,number,printing,market_price_usd,url 2026-10-08,502552,Bulbasaur - 001/165,SV: Scarlet & Violet 151,001/165,Reverse Holofoil,0.32,https://tickermint.cards/card/502552 2026-10-08,502553,Ivysaur - 002/165,SV: Scarlet & Violet 151,002/165,Reverse Holofoil,0.53,https://tickermint.cards/card/502553 2026-10-08,502554,Venusaur ex - 003/165,SV: Scarlet & Violet 151,003/165,Holofoil,1.07,https://tickermint.cards/card/502554 ... one row for every card and sealed product in the set
CSV COLUMNS · /products/{id}.csv AND /sets/{id}.csv
- date: the day of the price (prices update once a day)
- product_id: TickerMint's id, the number in the card page URL
- name: card or product name as TCGplayer lists it
- set: set name
- number: collector number, empty for sealed product
- printing: the printing the price is for (Holofoil, Reverse Holofoil, Normal...)
- market_price_usd: TCGplayer market price in US dollars, the same number the card page shows
- url: the TickerMint card page (the link back the free plan asks for)
Prices are TCGplayer market prices for the card's main printing, the same number its TickerMint page shows. Full endpoint list and OpenAPI on /developers.
QUESTIONS
Is there a free Pokemon card price API for Python?
+×
Yes. https://api.tickermint.cards needs no key for reads: /products/search to find a card, /products/{id}/prices for its daily TCGplayer market price per printing since February 2024, /sets/{id} for a whole set. Free for personal projects, research and non-commercial tools with a link back to the TickerMint page the price came from. Showing the prices inside a commercial app, site or tool needs API Pro ($49 a month).
What are the rate limits?
+×
120 requests a minute per IP with no key. A key on a free account keeps the same 120 a minute; the Developer plan ($19 a month) gives that key its own 600 a minute and the bulk endpoints. Answers are cached for up to an hour and prices change once a day, so cache on your side too.
Why do I get 403 from Python but not from my browser?
+×
Python's built-in urllib (and libraries that use it, like pandas.read_csv on a URL) is refused by the firewall in front of the API. requests, httpx, aiohttp and curl work.
Does it cover other card games?
+×
Yes: Pokemon, One Piece, Lorcana, Riftbound, Gundam and Yu-Gi-Oh. Add game=one-piece (or lorcana, riftbound, gundam, yugioh) to the search to stay in one game.
Same data, other tools: Google Sheets · Excel · JavaScript · API, MCP server and embeds · Download all history (CSV)