To get Pokemon card prices in JavaScript, fetch https://api.tickermint.cards/products/search?q=charizard%20ex%20199/165: 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. Call it from Node or your server: the API does not allow browser calls from other websites.
Pokemon card price API in JavaScript (fetch)
NO KEY
Node 18 or later (fetch is built in), Deno, Bun, or a serverless function. Save as prices.mjs and run node prices.mjs.
const API = "https://api.tickermint.cards";
// 1. Find the card. No key, no sign-up.
const q = encodeURIComponent("charizard ex 199/165");
const hits = await fetch(`${API}/products/search?q=${q}&game=pokemon`).then((r) => r.json());
const card = hits[0];
console.log(card.product_id, card.name, card.set_name, card.market);
// 2. Its daily market price per printing, back to February 2024
const pid = card.product_id;
const history = await fetch(`${API}/products/${pid}/prices`).then((r) => r.json());
for (const [printing, days] of Object.entries(history)) {
const last = days.at(-1);
console.log(printing, days.length, "days, latest", last.snapshot_date, last.market);
}WITH A KEY
Create a key at tickermint.cards/developers and send it as the X-API-Key header. 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. Keep the key on your server.
const API = "https://api.tickermint.cards";
const res = await fetch(`${API}/products/search?q=umbreon%20vmax%20215`, {
headers: { "X-API-Key": process.env.TICKERMINT_KEY }, // from tickermint.cards/developers
});
if (!res.ok) throw new Error(`TickerMint ${res.status}`);
const [card] = await res.json();
console.log(card.product_id, card.name, card.market);ONE CARD AS A CSV ROW
The CSV endpoints return the same price the card page shows, one row per card (/sets/{id}.csv for a whole set).
// one card as a CSV row: the same price the card page shows
const API = "https://api.tickermint.cards";
const csv = await fetch(`${API}/products/517045.csv`).then((r) => r.text());
const [header, row] = csv.trim().split("\n");
console.log(header);
console.log(row);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,517045,Charizard ex - 199/165,SV: Scarlet & Violet 151,199/165,Holofoil,322.37,https://tickermint.cards/card/517045
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 JavaScript?
+×
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).
Can I call it from the browser?
+×
Not from another website: the API only allows browser requests from tickermint.cards, so a fetch from your own page is blocked by CORS. Call it from Node, a serverless function or your backend and pass the numbers to your page. Embeds (an iframe price card and an SVG badge) work on any site.
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.
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 · Python · API, MCP server and embeds · Download all history (CSV)