# LigaYugioh API scraper - Brazil's Yu-Gi-Oh! price guide and store marketplace: min/avg/max price per printing and finish, every store offer with price, stock, condition, language and store, buylist prices, sets, price movers and store profiles. BRL.

> Search LigaYugioh'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.
> ReefAPI engine `ligayugioh` · 6 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/ligayugioh/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Clients that add connectors by URL, such as ChatGPT and the Claude app, connect with OAuth 2.1 (the user pastes their key once on a ReefAPI page; discovery at `/.well-known/oauth-protected-resource/mcp`). Config files send the key as `Authorization: Bearer <key>`. `?key=<key>` in the URL also works as a last-resort fallback.

## Endpoints

### POST https://api.reefapi.com/ligayugioh/v1/search — 3 credits
Search LigaYugioh'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.

**Parameters:**
- `query` (string, optional) — Card or product name (Portuguese or English). Optional when edition is given. The site's own syntax also works: 'artista=Simon Dominic'.
- `edition` (string, optional) — Edition id (from `editions`) or edition code (as the site writes it, e.g. MEW, 30C-C): lists that set's cards; with `query`, only the cards whose name contains it (the site's own filter on the edition page).
- `sort` (enum, optional, default "relevance") — Result order. [one of: relevance, name_pt_asc, name_pt_desc, name_en_asc, name_en_desc, min_price_asc, min_price_desc, avg_price_asc, avg_price_desc, max_price_asc, max_price_desc]
- `page` (integer, optional, default 1) — Result page (40 rows each).
- `limit` (integer, optional, default 40) — Trim the page to this many rows.

**Returns:** results[]{type, name, name_alt, card, edition_code, number, collector_number, card_id, edition_id, edition_name, product_id, price_min_brl, price_avg_brl, price_max_brl, image_url, url}, count, page, has_more, game, site; with edition also total, edition_id, edition_name

**Example request body:**
```json
{
  "query": "Dark Magician"
}
```

### POST https://api.reefapi.com/ligayugioh/v1/card — 4 credits
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.

**Parameters:**
- `card` (string, optional) — Card name. The English or Portuguese card name, as the site writes it; the card page returns every printing. Add `edition` and `number` to select one print, or pass `url`.
- `url` (string, optional) — A card page URL from LigaYugioh (overrides card/edition/number).
- `edition` (string, optional) — Edition code as the site uses it (search rows return it in `edition_code`). On `card` it selects one print; on `search` an edition id or code lists that set's cards.
- `number` (string, optional) — Card number inside the edition (search rows return it in `number`).
- `offers_limit` (integer, optional, default 100) — How many store offers to return after filters, in the site's own order (cheapest first). 0 = price guide only, no offers (cheaper and faster).
- `offers_offset` (integer, optional, default 0) — Skip this many filtered offers (paging through a card with 1 000+ offers).
- `condition` (enum, optional) — Minimum condition: NM returns M and NM offers, SP returns M/NM/SP, and so on. [one of: M, NM, SP, MP, HP, D]
- `language` (string, optional) — Comma list of language codes as the site writes them: EN, PT, PTEN (Português/Inglês), JP, DE, ES, FR, IT, KO, RU, TW, TK, PH (game-dependent).
- `foil` (boolean, optional) — true = only foil finishes (Foil, Foil Etched…), false = only non-foil.
- `state` (string, optional) — Comma list of Brazilian states (UF) of the store, e.g. SP,RJ,MG.
- `min_quantity` (integer, optional) — Only offers with at least this many copies in stock (playsets: 4).
- `max_price` (number, optional) — Only offers at or below this price in BRL.
- `verified_only` (boolean, optional) — Only stores the site marks as verified (Loja Verificada).

**Returns:** card{card_id, name, name_en, details[]{label, value}, url, resolved_from}, editions[]{edition_id, edition_name, edition_code, number, rarity, rarity_code, artist, release_date, image_url, price_guide[]{finish, finish_id, min_brl, avg_brl, max_brl}}, offers[]{offer_id, rank, price_brl, original_price_brl, price_readable, quantity, edition_id, edition_name, edition_code, number, condition, condition_label, language, language_label, extras[], is_foil, has_photo, is_graded, preorder_ships, store_id, store_name, store_city, store_state, store_rating, store_reviews, store_types[], store_ships_in, store_on_vacation}, offers_total, offers_matched, auctions[]{auction_id, title, current_bid_brl, buy_now_brl, bids, ends_at, seller, …}, stores[]{store_id, name, city, state, phone, rating, rating_shipping, rating_packaging, rating_accuracy, reviews, has_physical_store, latitude, longitude}, summary{}

**Example request body:**
```json
{
  "url": "https://www.ligayugioh.com.br/?view=cards/card&card=Dark+Magician+Knight&ed=LCYW&num=LCYW-EN028"
}
```

### POST https://api.reefapi.com/ligayugioh/v1/buylist — 3 credits
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).

**Parameters:**
- `card` (string, optional) — Card name. The English or Portuguese card name, as the site writes it; the card page returns every printing. Add `edition` and `number` to select one print, or pass `url`.
- `url` (string, optional) — A card page URL from LigaYugioh (overrides card/edition/number).
- `edition` (string, optional) — Edition code as the site uses it (search rows return it in `edition_code`). On `card` it selects one print; on `search` an edition id or code lists that set's cards.
- `number` (string, optional) — Card number inside the edition (search rows return it in `number`).
- `limit` (integer, optional, default 200) — How many buylist rows to return (the site's order).

**Returns:** card{name, name_en, card_id, url, resolved_from}, buylist[]{buylist_id, edition_id, edition_name, edition_code, number, extras[], is_foil, buy_price_brl, base_price_brl, conditions[]{condition, discount_pct, buy_price_brl}, languages[]{language, discount_pct}, store_id, store_name, store_city, store_state, store_rating, store_reviews, store_types[]}, count, best_buy_price_brl

**Example request body:**
```json
{
  "url": "https://www.ligayugioh.com.br/?view=cards/card&card=Dark+Magician+Knight&ed=LCYW&num=LCYW-EN028"
}
```

### POST https://api.reefapi.com/ligayugioh/v1/editions — 3 credits
Every edition (set) on LigaYugioh: 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.

**Parameters:**
- `query` (string, optional) — Keep editions whose name or code contains this text.
- `year` (integer, optional) — Keep editions released in this year.

**Returns:** editions[]{edition_id, edition_code, name, name_en, name_pt, release_date, group, grouped_under_id, icon_url, cards_url}, count

**Example request body:**
```json
{
  "query": "Legend"
}
```

### POST https://api.reefapi.com/ligayugioh/v1/movers — 2 credits
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.

**Parameters:**
- `direction` (enum, optional, default "up") — Risers or fallers. [one of: up, down]
- `period` (enum, optional, default "day") — Which change the list is ranked by. [one of: day, week, month]

**Returns:** movers[]{card_id, name, name_en, edition_id, edition_name, edition_code, number, rarity_code, price_min_brl, price_avg_brl, price_max_brl, change_brl, change_day_brl{min, avg, max}, change_week_brl{…}, change_month_brl{…}, image_url, url}, count, direction, period

**Example request body:**
```json
{
  "direction": "up"
}
```

### POST https://api.reefapi.com/ligayugioh/v1/store — 3 credits
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.

**Parameters:**
- `store_id` (integer, required) — Store id (offers[].store_id from card or buylist).
- `reviews_page` (integer, optional, default 1) — Customer reviews page (25 each).

**Returns:** store{store_id, name, website, logo_url, ratings[]{period, rating, based_on, by_aspect{}}, phones[]{number, whatsapp}, emails[], social[]{network, url}, address, has_physical_address, reviews[]{rating, customer, customer_location, date, purchase_value, by_aspect{}, comment}, reviews_has_more}

**Example request body:**
```json
{
  "store_id": 75364
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=ligayugioh
- Human docs page: https://reefapi.com/docs/ligayugioh
- Overview page: https://reefapi.com/ligayugioh-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
