# MYP Cards API scraper - the Brazilian trading card marketplace (Magic, Pokémon, Yu-Gi-Oh!, Lorcana, One Piece and 19 more games): search with filters, card prices in BRL, every seller offer with stock, condition and language, graded slabs with certificate, sets, promotions and seller reputation.

> Search a game's catalog or list a set: name (Portuguese and original), set, card number, lowest price in BRL, units for sale, product id and url; with graded_only also the lowest graded price. 30 per page, sortable. With no query it returns the newest listings of the game. Filters by condition, language, seller state and price narrow it on the site's own search.
> ReefAPI engine `mypcards` · 8 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/mypcards/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/mypcards/v1/search — 2 credits
Search a game's catalog or list a set: name (Portuguese and original), set, card number, lowest price in BRL, units for sale, product id and url; with graded_only also the lowest graded price. 30 per page, sortable. With no query it returns the newest listings of the game. Filters by condition, language, seller state and price narrow it on the site's own search.

**Parameters:**
- `game` (enum, optional, default "magic") — Which game (or outros for sealed product, accessories and other non-card items). [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, digimon, battlescenes, dbsfusion, dbsmasters, fab, gundam, hp, lotr, sorcery, swdestiny, swunlimited, vanguard, grandarchive, unionarena, weissschwarz, warlord, cyberpunk, copadomundo2026, outros]
- `query` (string, optional) — Name, in Portuguese or the original language.
- `edition` (string, optional) — A set: slug or edition_id, both from the editions action.
- `category` (enum, optional) — For sealed product, accessories and so on: combine with game to get that game's items. [one of: acessorios, action-figure, artigos-geek, deck-lote-set, hq-livros, inscricao, jogos-de-tabuleiro, online, outros, selados]
- `subcategory` (string, optional) — Inside category, e.g. booster, caixa-de-booster, deck-box, playmat.
- `condition` (string, optional) — Comma list of conditions: NM, SP, MP, HP, DM (exact match, any of them).
- `language` (string, optional) — Comma list: PT, EN, ES, FR, DE, IT, JP, KO, RU, ZH, PT-EN (printed in both), TH.
- `state` (string, optional) — Comma list of seller Brazilian states (UF).
- `min_price` (number, optional) — Minimum price in BRL.
- `max_price` (number, optional) — Maximum price in BRL.
- `in_stock_only` (boolean, optional) — Only products currently for sale.
- `graded_only` (boolean, optional) — Only products with graded slabs for sale.
- `finish` (string, optional) — Comma list of finish ids (1 Normal, 2 Foil, 5 Full-Art, 6 Promo, 30 Etched, 31 Etched Foil, varies by game).
- `rarity` (string, optional) — Comma list of rarity ids (Magic: 1 Common, 2 Uncommon, 3 Rare, 4 Mythic; ids vary by game).
- `color` (string, optional) — Magic: comma list of color ids (1 White, 2 Blue, 3 Black, 4 Red, 5 Green, 6 Colorless).
- `type` (string, optional) — Comma list of type ids (Magic: 1 Creature, 2 Enchantment, 4 Instant, 3 Sorcery, 5 Artifact, 6 Planeswalker, 7 Land).
- `sort` (enum, optional, default "relevance") — Result order. [one of: relevance, name_asc, name_desc, name_en_asc, name_en_desc, code_asc, code_desc, price_asc, price_desc]
- `page` (integer, optional, default 1) — Result page.

**Returns:** results[]{product_id, code, name, name_original, game, set, set_code, card_number, rarity, price_brl, price_is_from, original_price_brl, discount_pct, promotion_ends, stock, in_stock, condition, condition_label, language, language_label, finish, printing, graded_from_brl, high_demand, offer_id, image_url, url}, count, total, page, pages, has_more

**Example request body:**
```json
{
  "game": "pokemon",
  "query": "charizard"
}
```

### POST https://api.reefapi.com/mypcards/v1/card — 3 credits
One product: name, code, set, card number, rarity, type, illustrator, release date and description; lowest and average price, TCGplayer reference and the 30-day median change; every seller offer with BRL price, pre-discount price, units, condition, language, finish, photos, notes and seller; graded offers with grader, grade and certificate link.

**Parameters:**
- `url` (string, optional) — A product page URL.
- `product_id` (string, optional) — The product_id from search. The game does not matter.
- `game` (enum, optional, default "magic") — Which game (or outros for sealed product, accessories and other non-card items). [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, digimon, battlescenes, dbsfusion, dbsmasters, fab, gundam, hp, lotr, sorcery, swdestiny, swunlimited, vanguard, grandarchive, unionarena, weissschwarz, warlord, cyberpunk, copadomundo2026, outros]
- `offers_limit` (integer, optional, default 100) — How many offers to return, cheapest first. 0 = details and prices only.
- `condition` (string, optional) — Keep offers in these conditions (NM, SP, MP, HP, DM, comma list).
- `language` (string, optional) — Keep offers in these languages (PT, EN, JP...).
- `finish_name` (string, optional) — Keep offers whose finish contains this word (Foil, Normal, Quarter Century...).
- `seller` (string, optional) — Keep one seller's offers.
- `include_graded` (boolean, optional, default true) — Include graded slab offers.

**Returns:** product{product_id, code, name, game, game_name, set, set_code, set_slug, card_number, rarity, category, type_line, color, mana_cost, illustrator, release_date, description, details[], price_brl, price_avg_brl, price_tcgplayer_brl, median_change_30d_pct, offers_count, graded_offers_count, availability, image_url, url}, offers[]{offer_id, section, seller, seller_url, seller_role, price_brl, original_price_brl, stock, in_stock, condition, condition_label, language, language_label, finish, printing, version, note, photos[], graded{}}, graded_offers[], stock_total, offers_returned, offers_total

**Example request body:**
```json
{
  "product_id": 269563,
  "offers_limit": 20
}
```

### POST https://api.reefapi.com/mypcards/v1/editions — 2 credits
A game's sets, newest first: name, alternate name, code, release date, slug and id. Feed slug to search's edition. 48 per page.

**Parameters:**
- `game` (enum, optional, default "magic") — Which game (or outros for sealed product, accessories and other non-card items). [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, digimon, battlescenes, dbsfusion, dbsmasters, fab, gundam, hp, lotr, sorcery, swdestiny, swunlimited, vanguard, grandarchive, unionarena, weissschwarz, warlord, cyberpunk, copadomundo2026, outros]
- `query` (string, optional) — Sets whose name contains this.
- `page` (integer, optional, default 1) — Result page.

**Returns:** editions[]{edition_id, name, name_alt, set_code, slug, release_date, image_url, url}, count, page, pages, has_more

**Example request body:**
```json
{
  "game": "lorcana"
}
```

### POST https://api.reefapi.com/mypcards/v1/deals — 3 credits
Current promotions of a game: product, BRL price, price before the discount, discount percent, time left, stock and condition. Sort by biggest discount, end date, price or stock.

**Parameters:**
- `game` (enum, optional, default "magic") — Which game (or outros for sealed product, accessories and other non-card items). [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, digimon, battlescenes, dbsfusion, dbsmasters, fab, gundam, hp, lotr, sorcery, swdestiny, swunlimited, vanguard, grandarchive, unionarena, weissschwarz, warlord, cyberpunk, copadomundo2026, outros]
- `sort` (enum, optional) — Result order. [one of: discount_desc, discount_asc, ends_soon, ends_late, price_asc, price_desc, stock_asc, stock_desc]
- `page` (integer, optional, default 1) — Result page.

**Returns:** results[]{product_id, name, set, price_brl, original_price_brl, discount_pct, promotion_ends, stock, condition, language, finish, url}, count, total, page, pages, has_more

**Example request body:**
```json
{
  "game": "pokemon"
}
```

### POST https://api.reefapi.com/mypcards/v1/graded — 3 credits
Graded slabs for sale, newest first: card, grader, grade, certificate number and link, language, seller and BRL price. Can be limited to one game where the site has that filter.

**Parameters:**
- `game` (enum, optional) — Optional game filter. [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, dbsfusion, unionarena]
- `page` (integer, optional, default 1) — Result page.

**Returns:** results[]{offer_id, product_id, name, game, set, price_brl, language, graded{grade, grader, certificate, certificate_url}, seller, image_url, url}, count, total, page, pages, has_more

**Example request body:**
```json
{
  "game": "pokemon"
}
```

### POST https://api.reefapi.com/mypcards/v1/sellers — 2 credits
The store directory: nickname, rating, number of reviews, games sold, city and state. Filter by name, city or state.

**Parameters:**
- `name` (string, optional) — Part of the store nickname.
- `city` (string, optional) — Part of the city name.
- `state` (string, optional) — Part of the state name or UF.
- `sort` (enum, optional) — Result order. [one of: name_asc, name_desc, city_asc, city_desc, state_asc, state_desc]
- `page` (integer, optional, default 1) — Result page.

**Returns:** sellers[]{seller_id, seller, seller_url, rating, reviews, games[], city, state}, count, page, pages, has_more

**Example request body:**
```json
{
  "name": "TCG"
}
```

### POST https://api.reefapi.com/mypcards/v1/seller — 3 credits
A seller's reputation: certified or store status, rating over the last 6 months and overall, orders shipped and cancelled, average shipping days, sales, location, free shipping threshold, shipping notes, social links and buyer reviews (5 per page, buyer identity withheld by the site).

**Parameters:**
- `seller` (string, required) — Seller nickname, from card offers[].seller or sellers.
- `reviews_page` (integer, optional, default 1) — Reviews page.

**Returns:** seller{seller, seller_url, role, city, state, sales, active_since_year, average_shipping_days, free_shipping_from_brl, shipping_info, social[], rating_6m, rating_total, sent_6m, cancelled_6m, sent_total, cancelled_total, items_listed}, reviews[]{rating, date, comment}, reviews_page, reviews_pages

**Example request body:**
```json
{
  "seller": "MagoNengue"
}
```

### POST https://api.reefapi.com/mypcards/v1/seller_inventory — 2 credits
What one seller lists: the same fields as search, each with that seller's price and copies, filterable by name, sorted by name or price. 30 per page. Without game the site lists that seller's default game only; pass game to read another (each row carries its game).

**Parameters:**
- `seller` (string, required) — Seller nickname.
- `query` (string, optional) — Part of the name.
- `game` (enum, optional) — Which game of this seller's listings. Without it, the site's default game for the seller. [one of: magic, pokemon, yugioh, lorcana, onepiece, riftbound, digimon, battlescenes, dbsfusion, dbsmasters, fab, gundam, hp, lotr, sorcery, swdestiny, swunlimited, vanguard, grandarchive, unionarena, weissschwarz, warlord, cyberpunk, copadomundo2026, outros]
- `sort` (enum, optional, default "relevance") — Result order. [one of: relevance, name_asc, name_desc, name_en_asc, name_en_desc, code_asc, code_desc, price_asc, price_desc]
- `page` (integer, optional, default 1) — Result page.

**Returns:** results[]{same as search}, count, total, page, pages, has_more, seller

**Example request body:**
```json
{
  "seller": "MagoNengue"
}
```

## 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=mypcards
- Human docs page: https://reefapi.com/docs/mypcards
- Overview page: https://reefapi.com/mypcards-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
