LigaPokemon API & Scraper
The LigaPokemon API returns Brazil's main Pokémon TCG marketplace as clean JSON in BRL: the lowest, average and highest asking price of each print, every store's offer with stock, condition and language, what stores pay on their buylists, all 812 editions and the cards moving most in price.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
It reads ligapokemon.com.br live, one print at a time.
A Japanese Heavily Played copy can sit below the guide's minimum
The site's minimum is not always the cheapest copy you can buy. For Charizard ex from 151 (MEW 006/165) the guide read R$ 79.90 minimum, while the offer list opened at R$ 74.90: a Japanese copy in Heavily Played condition. Filter by condition and language before you treat a number as the market price.
| Charizard ex, 151 (MEW 006/165), Normal | BRL |
|---|---|
| Guide minimum | 79.90 |
| Guide average | 101.32 |
| Guide maximum | 190.00 |
| Cheapest offer in the list (JP, HP) | 74.90 |
| Best store buylist price | 64.44 |
Asking prices at the moment of the call on 2026-11-08, without shipping. That print had 27 offers from 18 stores and one open auction.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/ligapokemon/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "Charizard ex"
}
}{
"ok": true,
"meta": {
"api": "ligapokemon",
"endpoint": "search",
"mode": "live",
"latency_ms": 3829.7,
"record_count": 40,
"bytes": 296604,
"cache_hit": false,
"requests": 2,
"rotations": 1,
"charged_credits": 3,
"version": "0.1.0",
"request_id": "4571eec8e4c54db1",
"queue_ms": 1.1,
"fetched_at": "2026-11-08T13:04:27.876Z"
},
"data": {
"game": "pokemon",
"site": "LigaPokemon",
"query": "Charizard ex",
"edition": null,
"sort": "relevance",
"page": 1,
"results": [
{
"type": "product",
"name": "(ING) Box Coleção Especial - Charizard Ex",
"name_alt": null,
"product_id": 133241,
"card_id": null,
"card": null,
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 389.9,
"price_avg_brl": 398.27,
"price_max_brl": 399.9,
"image_url": "https://repositorio.sbrauble.com/arquivos/up/prod/20250328/1743166590_3344.jpg",
"url": "https://www.ligapokemon.com.br/?view=prod/view&pcode=133241&prod=Charizard+Ex+Special+Collection"
},
{
"type": "product",
"name": "(ING) Box Coleção Premium - Charizard ex",
"name_alt": null,
"product_id": 128870,
"card_id": null,
"card": null,
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 3299.9,
"price_avg_brl": 3299.9,
"price_max_brl": 3299.9,
"image_url": "https://repositorio.sbrauble.com/arquivos/up/prod/20231128/1701218371_3072.jpg",
"url": "https://www.ligapokemon.com.br/?view=prod/view&pcode=128870&prod=Charizard+ex+Premium+Collection"
},
{
"type": "product",
"name": "(JAP) Baralho Mestre de Batalha - Escarlate e Violeta - Terastal Charizard ex",
"name_alt": null,
"product_id": 132613,
"card_id": null,
"card": null,
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 400,
"price_avg_brl": 500,
"price_max_brl": 400,
"image_url": "https://repositorio.sbrauble.com/arquivos/up/prod/20241129/1732886390_5499.jpg",
"url": "https://www.ligapokemon.com.br/?view=prod/view&pcode=132613&prod=%28JAP%29+Scarlet+%26+Violet+Battle+Master+Deck+Terastal+Charizard+ex"
}
],
"count": 40,
"has_more": true
}
}What the LigaPokemon API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search LigaPokemon's catalog by card or product name, or list one edition's cards: each row has the card name (Portuguese and English where the site has both), edition, collector number, the minimum, average and maximum price in BRL across Brazilian stores, the image and the keys `card`/`edition_code`/`number` that the card action takes. Sealed products appear as type=product. 40 rows a page; sort by name or by min/avg/max price. | Pricing teams call search to search LigaPokemon's catalog by card or product name, or list one edition's cards. | query, edition, sort, page, limit |
| card | One card in full: Portuguese and English name, card details as the site lists them (rarity, type, artist, formats…), every printing with its edition, number, rarity, artist, release date, image and the price guide per finish (Normal, Foil, Foil Etched, Promo… min/avg/max BRL); then EVERY store offer — price in BRL (and the pre-discount price), copies in stock, condition, language, finish/extras, photo, graded, pre-order — with the store's name, city, state, rating, review volume, verified/physical flags and shipping time; the open auctions (current bid, buy-now, bids, end time); and the stores. | Marketplace operators call card to get one card in full. | card, url, edition, number, offers_limit, ... |
| buylist | What Brazilian stores PAY for a card (the site's Buylist tab): per store and printing, the buy price for Mint/Near Mint in Portuguese or English, the base price, the discount and resulting buy price for every accepted condition, the discount for every accepted language, and the store's city, state and rating. Use it with `card` offers for arbitrage (buy below the best buylist). | Catalog enrichment teams call buylist to get what Brazilian stores PAY for a card (the site's Buylist tab). | card, url, edition, number, limit |
| editions | Every edition (set) on LigaPokemon: id, code, name (English and Portuguese where the site has one), release date, symbol, and whether it is a main or auxiliary (promo / grouped) edition. The id feeds search's `edition` to list the set's cards with prices. | Retail analysts call editions to get every edition (set) on LigaPokemon. | query, year |
| movers | The site's biggest price risers or fallers (Cards em Alta / em Queda): 50 cards with their current min/avg/max price in BRL and the change over the day, week and month for each, edition and number. | Pricing teams call movers to get the site's biggest price risers or fallers (Cards em Alta / em Queda). | direction, period |
| store | A marketplace store's public profile (store_id from card offers): name, website, logo, average rating over 12/6/3 months and all time with the per-aspect ratings (shipping, packaging, accuracy), contact phones/WhatsApp, e-mail, social links, address (or that it has no physical store), and customer reviews (rating, date, purchase value band, per-aspect stars, comment), 25 per page. | Marketplace operators call store to get a marketplace store's public profile (store_id from card offers). | store_id, reviews_page |
Call search from your stack
curl -X POST https://api.reefapi.com/ligapokemon/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"Charizard ex"}'import os
import requests
REEF_KEY = os.environ["REEF_KEY"]
r = requests.post(
"https://api.reefapi.com/ligapokemon/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "Charizard ex"
},
timeout=90,
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/ligapokemon/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "Charizard ex"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.ligapokemon.search with {"query":"Charizard ex"}.Who uses this API and why
- Reprice a Pokémon singles store against the lowest Near Mint offer in Brazil
- Compare a print's Brazilian price with Cardmarket or TCGplayer before importing
- Find the spread between the cheapest offer and the best store buylist
- Follow the week's biggest Pokémon price risers
Questions developers ask before integrating
How do I look up one Pokémon card?
LigaPokemon has one page per print, so search first. Each row gives card, edition_code and number, for example 'Charizard ex (006/165)', MEW and 006, and the card action takes those three as they are. You can also pass the page's url.
Are sealed products included?
Yes. Boxes, tins and collections come back from search as type=product with their minimum price, next to the single cards.
Can I see what stores would pay me?
buylist returns each store's buy offer for a print, with the discount for every condition and language it accepts. best_buy_price_brl is the highest. For Charizard ex MEW 006 it was R$ 64.44 on our test.
Does it have sold prices?
No. Sales history on the site is shown only to signed-in users and this API does not use accounts. You get the current guide, the current offers and the price movers.
Can I use it for other Liga sites?
This API reads LigaPokemon only. LigaMagic, LigaYugioh and LigaOnePiece have their own APIs, and the LigaMagic API reaches the smaller Liga sites through its game parameter.
What is the LigaPokemon API?
LigaPokemon API is a ReefAPI endpoint group for brazil's pokémon tcg prices: every store offer, buylists and price movers, in brl. It returns live JSON through POST requests under /ligapokemon/v1.
Is the LigaPokemon API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. LigaPokemon calls use the same shared credit balance as every other ReefAPI engine.
Do I need a LigaPokemon login or account?
No login to LigaPokemon is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the LigaPokemon data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the LigaPokemon API use?
LigaPokemon actions currently cost 2-4 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call LigaPokemon from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call ligapokemon actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the LigaPokemon API a LigaPokemon scraper?
It is the managed alternative to a DIY LigaPokemon scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same brazil's pokémon tcg prices: every store offer, buylists and price movers, in brl back as clean JSON.
Why does my LigaPokemon scraper keep getting blocked?
Most LigaPokemon scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.