LigaMagic API & Scraper: parameters and responses
This is the reference for the 6 LigaMagic endpoints under /ligamagic/v1 (search, card, buylist, editions, movers and store) and their 24 parameters. Each endpoint lists its parameters, required or optional, with allowed values and defaults, and comes with a cURL, Python and JavaScript call; every response uses the same { ok, data, meta, error } envelope.
The LigaMagic API returns Brazil's Magic: The Gathering marketplace as clean JSON in BRL: the minimum, average and maximum price of each printing, every store's offer with stock, condition, language and finish, store buylists, every edition 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.
The same API also reaches ten smaller Liga sites through its game parameter: Lorcana, Flesh and Blood, Digimon, Star Wars: Unlimited, Riftbound, Sorcery, Gundam, Vanguard and both Dragon Ball games. LigaPokemon, LigaYugioh and LigaOnePiece have their own APIs.
The Liga price guide is a range across stores - the offers show who actually sells at the bottom
Each Liga site shows three numbers per printing: the lowest, the average and the highest asking price among Brazilian stores. The minimum is a real store's offer, not a sale price. On 35 printing-and-finish pairs we checked against the live offer list on 2026-11-08, the guide minimum was exactly the cheapest current offer 32 times; in the other 3 the cheapest copy had already sold and the next one was higher.
| Card (printing, finish) | price_min_brl | price_avg_brl | price_max_brl |
|---|---|---|---|
| Ragavan, Nimble Pilferer (Modern Horizons 3 Retro Frame), Foil | 640.00 | 692.69 | 699.99 |
| Lightning Bolt (Marvel Super Heroes Commander), Normal | 11.49 | 14.12 | 18.99 |
Prices are asking prices in BRL and exclude shipping. Condition and language move a card's price a lot, which the guide does not show; card returns every offer with its condition and language so you can price the copy you actually want. Sold prices are only shown to logged-in Liga users and are not part of this API.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/ligamagic/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"game": "magic",
"query": "Lightning Bolt"
}
}{
"ok": true,
"meta": {
"api": "ligamagic",
"endpoint": "search",
"mode": "live",
"latency_ms": 2688.2,
"record_count": 18,
"bytes": 108254,
"cache_hit": false,
"requests": 1,
"charged_credits": 3,
"version": "0.1.0",
"request_id": "1e4e53631efc49b1",
"queue_ms": 1.3,
"fetched_at": "2026-11-08T13:04:26.024Z"
},
"data": {
"game": "magic",
"site": "LigaMagic",
"query": "Lightning Bolt",
"edition": null,
"sort": "relevance",
"page": 1,
"results": [
{
"type": "card",
"name": "Emeritus of Conflict // Lightning Bolt",
"name_alt": null,
"card_id": 81350,
"card": "Emeritus of Conflict // Lightning Bolt",
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 8,
"price_avg_brl": 19.62,
"price_max_brl": 129.9,
"image_url": "https://repositorio.sbrauble.com/arquivos/in/magic/480933/69d3f330e2cc8-iql9k-td18u-a15acc587a78ceec248d261d66bfbcfc.jpg",
"url": "https://www.ligamagic.com.br/?view=cards/card&card=Emeritus+of+Conflict+%2F%2F+Lightning+Bolt",
"product_id": null
},
{
"type": "card",
"name": "Hadoken // Lightning Bolt",
"name_alt": null,
"card_id": 63274,
"card": "Hadoken // Lightning Bolt",
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 96.45,
"price_avg_brl": 100.4,
"price_max_brl": 130,
"image_url": "https://repositorio.sbrauble.com/arquivos/in/magic/479939/632b6c6f4bd7c-z80rw-as2n4-1491812144632b6c6f4bdbf.jpg",
"url": "https://www.ligamagic.com.br/?view=cards/card&card=Hadoken+%2F%2F+Lightning+Bolt",
"product_id": null
},
{
"type": "product",
"name": "Playmat - Magic Fest São Paulo 2019 - Raio (Versão 2)",
"name_alt": null,
"product_id": 107575,
"card_id": null,
"card": null,
"edition_code": null,
"number": null,
"collector_number": null,
"edition_id": null,
"edition_name": null,
"price_min_brl": 199.99,
"price_avg_brl": 199.99,
"price_max_brl": 199.99,
"image_url": "https://repositorio.sbrauble.com/arquivos/up/prod/20200220/1582233807_9719.jpg",
"url": "https://www.ligamagic.com.br/?view=prod/view&pcode=107575&prod=Playmat+-+Magic+Fest+Sao+Paulo+2019+-+Lightning+Bolt+%28Version+2%29"
}
],
"count": 18,
"has_more": false
}
}What the LigaMagic API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search a Liga site'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 a Liga site's catalog by card or product name, or list one edition's cards. | game, query, edition, sort, page, ... |
| 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. | game, card, url, edition, number, ... |
| 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). | game, card, url, edition, number, ... |
| editions | Every edition (set) of a game on its Liga site: 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) of a game on its Liga site. | game, 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. Magic can be narrowed to a format (Standard, Modern, Legacy, Commander, Pauper, Pioneer, Premodern). | Pricing teams call movers to get the site's biggest price risers or fallers (Cards em Alta / em Queda). | game, direction, period, format |
| 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, game, reviews_page |
Call search from your stack
curl -X POST https://api.reefapi.com/ligamagic/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"game":"magic","query":"Lightning Bolt"}'import os
import requests
REEF_KEY = os.environ["REEF_KEY"]
r = requests.post(
"https://api.reefapi.com/ligamagic/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"game": "magic",
"query": "Lightning Bolt"
},
timeout=90,
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/ligamagic/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"game": "magic",
"query": "Lightning Bolt"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.ligamagic.search with {"game":"magic","query":"Lightning Bolt"}.Who uses this API and why
- Price your stock for the Brazilian market from the live min/avg/max and the cheapest offer per condition
- Arbitrage between Liga buylists and store offers, or between Brazil and Cardmarket / TCGplayer
- Find which stores in your state have a playset in Near Mint English
- Track the week's biggest risers and fallers for each Magic format
Questions developers ask before integrating
Which games and sites does the LigaMagic API cover?
LigaMagic (Magic: The Gathering) by default, and through the game parameter ten smaller Liga sites: LigaLorcana, LigaFAB (Flesh and Blood), LigaDigimon, LigaStarWars, LigaRiftbound, LigaSorcery, LigaGundam, LigaVanguard and the two LigaDragonBall sites. Pokémon, Yu-Gi-Oh! and One Piece have their own APIs: LigaPokemon, LigaYugioh and LigaOnePiece.
Do I get every store's offer, or only the cheapest?
Every offer the card page lists - Sol Ring had 1,495 store offers in our live test, all returned in one call. Each has its price in BRL, copies in stock, condition, language, finish and the store's city, state and rating. Use offers_limit and offers_offset to page, or the filters to keep only what you would buy.
Can I get what stores pay for a card (buylist)?
Yes. buylist returns each store's buy offer per printing: the price for Mint/Near Mint in Portuguese or English, the base price, and for every condition and language the store accepts, its discount and the resulting buy price. best_buy_price_brl is the highest one. Compare it with the cheapest offer from card to spot arbitrage.
Does it include sold prices or price history?
No. The Liga sites show sales history only to logged-in users, and this API does not use accounts. What it does return is the current guide and offers, and movers - the cards whose prices changed most over the last day, week or month, with each change in BRL.
Are names in Portuguese or English?
Both where the site has both. LigaMagic and LigaYugioh show the Portuguese name with the English one beside it (Raio / Lightning Bolt); the API returns name and name_en (card) or name and name_alt (search). Labels such as conditions and languages are kept in Portuguese as the site writes them (Praticamente Nova (NM), Inglês), with short codes (NM, EN) for filtering.
How do I look up a Lorcana or other per-print card?
Magic accepts the card name and returns every printing. Sites with one page per print, such as Lorcana, need a search first: each row returns card, edition_code and number, which the card action takes as they are. You can also pass the row's url.
What is the LigaMagic API?
LigaMagic API is a ReefAPI endpoint group for brazil's magic: the gathering prices, store offers and buylists in brl, plus ten smaller liga sites. It returns live JSON through POST requests under /ligamagic/v1.
Is the LigaMagic API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. LigaMagic calls use the same shared credit balance as every other ReefAPI engine.
Do I need a LigaMagic login or account?
No login to LigaMagic 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 LigaMagic 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 LigaMagic API use?
LigaMagic 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 LigaMagic from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call ligamagic actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the LigaMagic API a LigaMagic scraper?
It is the managed alternative to a DIY LigaMagic 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 magic: the gathering prices, store offers and buylists in brl, plus ten smaller liga sites back as clean JSON.
Why does my LigaMagic scraper keep getting blocked?
Most LigaMagic 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.