# MTGStocks API scraper - Magic: The Gathering print-level price history back to 2012 per store (TCGplayer USD, Card Kingdom USD, Star City Games USD, Cardmarket EUR), daily and weekly price movers (interests), store offers, set value, sealed product and expected value, market indices, Reserved List, metagame. No account, no browser.

> Find Magic: The Gathering prints by card name: every printing across all sets with the print id, set, rarity and image. 25 rows a page, with the total number of matches.
> ReefAPI engine `mtgstocks` · 25 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/mtgstocks/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/mtgstocks/v1/search — 1 credit
Find Magic: The Gathering prints by card name: every printing across all sets with the print id, set, rarity and image. 25 rows a page, with the total number of matches.

**Parameters:**
- `query` (string, required) — Card name or part of it.
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 25) — Rows per page (1-25).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** query, results[]{print_id, card_id, name, url, rarity, image_url, set{set_id, name, code, set_type}}, count, total_results, page, per_page, has_more

**Example request body:**
```json
{
  "query": "lightning bolt"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/suggest — 1 credit
Search-as-you-type: the closest prints for a partial card name, with set, foil availability and similarity score, plus plain matching card names. The quickest way to turn a name into a print_id.

**Parameters:**
- `query` (string, required) — Start of a card name.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** query, results[]{print_id, name, slug, url, rarity, collector_number, foil, reserved_list, image_url, set{set_id, name, code, slug, set_type}, has_foil, has_nonfoil, similarity}, card_names[]{print_id, name, slug}, count

**Example request body:**
```json
{
  "query": "lightning bolt"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/print — 1 credit
One print in full: the latest low / average / high / market / foil prices at every store MTGStocks tracks (TCGplayer, Card Kingdom, Star City Games, ManaPool in USD; Cardmarket, CardTrader in EUR) with previous-day, week-ago and month-ago prices and percent changes, the all-time high and low, buylist prices, oracle text and format legality, ids for Scryfall and Gatherer, every other printing of the card with its price, and the sealed products that contain it.

**Parameters:**
- `print_id` (string, required) — MTGStocks print id from search, the id-slug (88425-black-lotus) or the print's URL on mtgstocks.com. A print is one printing of a card in one set.
- `also_viewed` (boolean, optional, default false) — Also return the prints other users viewed with this one.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** print{print_id, name, slug, url, rarity, collector_number, foil, reserved_list, image_url, set{set_id, name, code, slug, set_type}, extended_rarity, has_foil, has_nonfoil, flip_card, tournament_legal, multiverse_id, scryfall_id, scryfall_url, edhrec_url, card{card_id, name, mana_cost, mana_value, supertype, subtype, oracle_text, power, toughness, loyalty, reserved_list, lowest_print_id, legality{format:legal|not_legal|banned|restricted}}, all_time_high_tcgplayer{average, date, currency}, all_time_low_tcgplayer{...}, buylist{nm, lp, nm_foil, lp_foil, currency (null: the site states none; use sellers for store buy prices)}, stores{tcgplayer|cardkingdom|starcitygames|manapool|cardmarket|cardtrader: {store, currency, url, url_foil, product_id, price_date, low, average, high, market, foil, foil_low, market_foil, average_previous_day, average_week_ago, average_month_ago, foil_previous_day, foil_week_ago, foil_month_ago, average_change_day_percent, average_change_week_percent, average_change_month_percent, foil_change_*_percent}}, found_in_sealed[], other_printings[], also_viewed[]}

**Example request body:**
```json
{
  "print_id": "1"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/price_history — 3 credits
A print's daily price history for one store: TCGplayer back to 2012 (USD: low, average, market, foil, market foil), Cardmarket back to 2017 (EUR), Card Kingdom and Star City Games (USD retail: average and foil). One series per price type with min, max and change over the window; cut it by days or dates.

**Parameters:**
- `print_id` (string, required) — MTGStocks print id from search, the id-slug (88425-black-lotus) or the print's URL on mtgstocks.com. A print is one printing of a card in one set.
- `store` (enum, optional, default "tcgplayer") — Whose prices. Each store has one currency, stated in the response. [one of: tcgplayer, cardmarket, cardkingdom, starcitygames]
- `series` (string, optional) — Comma-separated series to return: low, average, high, market, foil, market_foil. Default: every series the store publishes.
- `days` (integer, optional) — Only the last N days (default: the whole history MTGStocks has).
- `date_from` (string, optional) — Only points on or after this date (YYYY-MM-DD).
- `date_to` (string, optional) — Only points on or before this date (YYYY-MM-DD).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** print_id, store, currency, series[]{series (low|average|high|market|foil|market_foil), points_count, first_date, last_date, first_price, latest_price, min_price, max_price, change_percent, points[]{date, price}}, series_count

**Example request body:**
```json
{
  "print_id": "1",
  "days": 30
}
```

### POST https://api.reefapi.com/mtgstocks/v1/sellers — 1 credit
Current offers for a print across the stores MTGStocks tracks (Card Kingdom, Star City Games, ABU Games, ManaPool, CardTrader, Hareruya and more): condition, foil, sell price, buy price, buying quantity, stock and the store's own link. Each row states its own currency (USD, EUR, GBP, CAD, JPY).

**Parameters:**
- `print_id` (string, required) — MTGStocks print id from search, the id-slug (88425-black-lotus) or the print's URL on mtgstocks.com. A print is one printing of a card in one set.
- `store` (string, optional) — Only this store.
- `condition` (string, optional) — Only this condition (NM, LP, MP, HP, DMG).
- `foil` (boolean, optional) — true = foil only, false = non-foil only.
- `currency` (string, optional) — Only offers in this currency.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** print_id, offers[]{store, condition, foil, sell_price, buy_price, buying_quantity, inventory_stock, currency, url}, count, stores[]{store, offers}

**Example request body:**
```json
{
  "print_id": "1"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/interests — 3 credits
The price-movers table MTGStocks publishes each day: every print whose price moved today or this week (about 7,000 rows), with the current and past price and the percent change. Choose average or market price, regular or foil, USD (TCGplayer) or EUR (Cardmarket, average only); filter by direction, percent and amount, price, set, set type, format legality, Reserved List and release state.

**Parameters:**
- `price_type` (enum, optional, default "average") — Which price moved. [one of: average, market]
- `card_type` (enum, optional, default "regular") — Finish. [one of: regular, foil]
- `currency` (enum, optional, default "USD") — Which market's table. [one of: USD, EUR]
- `period` (enum, optional, default "all") — Comparison window. [one of: all, day, week]
- `direction` (enum, optional, default "all") — Direction of the move. [one of: all, gainers, losers]
- `min_percent` (number, optional) — Smallest absolute percent change.
- `min_difference` (number, optional) — Smallest absolute price change, in the table's currency.
- `price_min` (number, optional) — Lowest current price. Use it to drop near-zero prints whose percentages are huge.
- `price_max` (number, optional) — Highest current price.
- `set_code` (string, optional) — Only this set (code, e.g. MH3).
- `set_type` (string, optional) — Only this set type (expansion, masters, commander, ...).
- `format` (enum, optional) — Only cards legal (or restricted) in this format. [one of: standard, pioneer, modern, legacy, vintage, commander, pauper, premodern, oldschool, alchemy, historic, explorer, timeless, brawl, standardbrawl, competitivebrawl, penny, duel, oathbreaker, paupercommander, predh, future, gladiator, tlr]
- `reserved` (enum, optional, default "all") — Reserved List filter. [one of: all, only, exclude]
- `released` (enum, optional, default "all") — Release state. [one of: all, only, exclude_recent]
- `tournament_legal` (enum, optional, default "all") — Tournament-legal printings. [one of: all, legal, not_legal]
- `include_hidden` (boolean, optional, default false) — Include prints the site hides from its default view (promos, oddities).
- `sort` (enum, optional, default "site") — Order of rows. [one of: site, percent_desc, percent_asc, amount_desc, amount_asc, price_desc, price_asc]
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 50) — Rows per page (1-500).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** date, price_type, card_type, currency, period, results[]{print_id, name, slug, url, rarity, collector_number, foil, reserved_list, image_url, set{set_id, name, code, slug, set_type}, foil, period, present_price, past_price, change_percent, change_amount, released, recent_release, tournament_legal, promo, legality{}, shown_by_default}, count, total, page, limit, has_more

**Example request body:**
```json
{
  "limit": 10
}
```

### POST https://api.reefapi.com/mtgstocks/v1/sets — 2 credits
Every Magic set MTGStocks tracks (about 450): id, code, type, release date, and whether it has sealed product and expected value. Newest first; filter by name or type.

**Parameters:**
- `query` (string, optional) — Part of a set name or code.
- `set_type` (string, optional) — Only this set type.
- `has_sealed` (boolean, optional) — Only sets with sealed product.
- `has_expected_value` (boolean, optional) — Only sets with expected-value data.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** sets[]{set_id, name, slug, code, set_type, release_date, url, has_sealed, has_expected_value, has_compass}, count, set_types[]

**Example request body:**
```json
{
  "query": "modern horizons"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/set — 2 credits
One set's card list with each print's latest prices at TCGplayer (USD), Cardmarket (EUR) and Card Kingdom (USD), plus the set's biggest 7-day gainers and losers. Filter by rarity, name, foil or Reserved List; sort by price.

**Parameters:**
- `set_id` (string, required) — Set id from `sets`, id-slug (4-innistrad) or the set's URL.
- `query` (string, optional) — Part of a card name.
- `rarity` (enum, optional) — Only this rarity. [one of: C, U, R, M, L, S]
- `reserved` (boolean, optional) — Only Reserved List cards.
- `sort` (enum, optional, default "site") — Order of rows. [one of: site, price_desc, price_asc, name_asc]
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 100) — Rows per page (1-1000).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** set{set_id, name, slug, code, set_type, release_date, url, has_sealed, has_expected_value, expected_value_note}, results[]{print_id, name, url, rarity, collector_number, foil, reserved_list, reprint, filter_tags, image_url, tcgplayer_usd{average, market, foil, market_foil, average_previous_day, average_week_ago}, cardmarket_eur{average, market, foil}, cardkingdom_usd{...}}, count, total, page, has_more, gainers_7d[]{print_id, name, foil, price, change_percent}, losers_7d[]

**Example request body:**
```json
{
  "set_id": "4"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/set_market — 2 credits
The total market value of every set today, with its 7-day and 30-day change: what the whole set is worth at TCGplayer prices (USD), on the site's own daily snapshot. Regular or foil.

**Parameters:**
- `foil` (boolean, optional, default false) — true = the foil value table.
- `set_type` (string, optional) — Only this set type.
- `sort` (enum, optional, default "value_desc") — Order of rows. [one of: value_desc, change_7d_desc, change_7d_asc, change_30d_desc, change_30d_asc]
- `limit` (integer, optional, default 100) — Rows per page (1-1000).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** date, foil, currency (USD), market_total, sets[]{set_id, name, slug, code, set_type, release_date, prints, total_value, change_7d_percent, change_30d_percent}, count

**Example request body:**
```json
{
  "set_type": "expansion"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/set_market_history — 3 credits
The last 30 days of the whole-market value of Magic singles at TCGplayer prices (USD), and optionally one set's value on each of those days.

**Parameters:**
- `set_id` (integer, optional) — Also return this set's value on each day.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** currency, days[]{date, market_total, set{set_id, total_value, change_7d_percent, change_30d_percent}}, count

**Example request body:**
```json
{
  "set_id": 4
}
```

### POST https://api.reefapi.com/mtgstocks/v1/sealed — 3 credits
Sealed product (booster boxes, packs, bundles, Commander decks) with its latest TCGplayer price. Search the whole catalogue by name or list one set.

**Parameters:**
- `query` (string, optional) — Part of a product or set name.
- `set_id` (string, optional) — Only this set's products.
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 100) — Rows per page (1-500).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** results[]{sealed_id, name, slug, url, type, release_date, image_url, tcgplayer_usd{low, average, market}, cardkingdom_retail_usd, set{}}, count, total, page, has_more

**Example request body:**
```json
{
  "query": "booster box"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/sealed_product — 1 credit
One sealed product: latest prices at TCGplayer (USD), Cardmarket (EUR), Card Kingdom, Star City Games, ManaPool and CardTrader where published, all-time high and low, and the percent change over a day, week and month.

**Parameters:**
- `sealed_id` (string, required) — Sealed product id from `sealed`, id-slug or the product's URL.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** product{sealed_id, name, slug, url, type, image_url, set{}, contains[], all_time_high_tcgplayer{}, all_time_low_tcgplayer{}, tcgplayer_usd{}, stores{}, change_previous_day{average_percent, market_percent}, change_week{}, change_month{}}

**Example request body:**
```json
{
  "sealed_id": "915"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/sealed_history — 3 credits
A sealed product's daily price history at TCGplayer (USD) or Cardmarket (EUR), or the daily history of its expected value: what the contents were worth at singles prices (USD), with averages by rarity.

**Parameters:**
- `sealed_id` (string, required) — Sealed product id, id-slug or URL.
- `kind` (enum, optional, default "price") — Price, or expected value. [one of: price, expected_value]
- `store` (enum, optional, default "tcgplayer") — Store, for kind=price. [one of: tcgplayer, cardmarket]
- `series` (string, optional) — Comma-separated series to return: low, average, high, market, foil, market_foil. Default: every series the store publishes.
- `days` (integer, optional) — Only the last N days (default: the whole history MTGStocks has).
- `date_from` (string, optional) — Only points on or after this date (YYYY-MM-DD).
- `date_to` (string, optional) — Only points on or before this date (YYYY-MM-DD).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** sealed_id, kind, store, currency, series[]{series (low|average|high|market|foil|market_foil), points_count, first_date, last_date, first_price, latest_price, min_price, max_price, change_percent, points[]{date, price}}, series_count, rarity_summaries{rarity:{low, market, average}}, rarity_sums{}

**Example request body:**
```json
{
  "sealed_id": "915"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/expected_value — 2 credits
Expected value of sealed product against its market price: how much the cards inside are worth versus what the box sells for. One row per set, or a set's full product tree (case, box, pack). USD.

**Parameters:**
- `set_id` (string, optional) — Return this set's full product tree instead of the summary.
- `query` (string, optional) — Filter the summary by set name.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** currency, results[]{set{set_id, name, slug, release_date, set_type}, products[]{sealed_id, name, slug, expected_value_usd{low, average, high, market}, market_price_usd{...}}}, count; with set_id: set{}, products[]{sealed_id, name, quantity, expected_value_usd, market_price_usd, children[]}

**Example request body:**
```json
{
  "set_id": "4"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/all_time — 3 credits
Prints that have just hit an all-time high or all-time low at TCGplayer average price (USD), with the price and the date.

**Parameters:**
- `kind` (enum, optional, default "all") — High or low. [one of: all, high, low]
- `foil` (boolean, optional) — true = foil prints only, false = non-foil only.
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 100) — Rows per page (1-500).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** results[]{kind, price, date, currency (USD), print_id, name, slug, url, rarity, collector_number, foil, reserved_list, image_url, set{set_id, name, code, slug, set_type}}, count, total, page, has_more

### POST https://api.reefapi.com/mtgstocks/v1/indices — 2 credits
MTGStocks market indices (Reserved List, Power Nine, formats, sets, Commander and more) with value, 1-day, 7-day, 30-day and 1-year change, equal-weight and price-weight, separately in USD and EUR.

**Parameters:**
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** date, indices[]{slug, name, description, tier, kind, parent, usd{date, value_equal_weight, value_price_weight, change_percent_equal_weight{d1,d7,d30,y1}, change_percent_price_weight{...}, constituents, priced, sparkline[]{date, equal_weight, price_weight}}, eur{...}}, count

### POST https://api.reefapi.com/mtgstocks/v1/index — 3 credits
One index with its full daily history since 2021 (USD and EUR separately), its children, and the cards in it with price, 30-day change and weight in each currency.

**Parameters:**
- `slug` (string, required) — Index slug from `indices`.
- `include_constituents` (boolean, optional, default true) — Include the cards in the index.
- `days` (integer, optional) — Only the last N days (default: the whole history MTGStocks has).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** index{slug, name, ..., usd{}, eur{}}, base_date, history{usd[]{date, equal_weight, price_weight}, eur[]}, children[], constituents[]{card_id, name, print{}, usd{price, change_30d_percent, weight}, eur{...}, since}, constituents_count

**Example request body:**
```json
{
  "slug": "reserved-list"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/lists — 1 credit
MTGStocks' curated card lists: Reserved List, Commander Game Changers, cycling lands and others.

**Parameters:**
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** lists[]{list_id, name, slug, description, image_url, url}, count

### POST https://api.reefapi.com/mtgstocks/v1/list — 3 credits
One curated list with every print's latest TCGplayer (USD), Cardmarket (EUR) and Card Kingdom (USD) price.

**Parameters:**
- `list_id` (string, required) — List id from `lists`, id-slug or URL.
- `query` (string, optional) — Part of a card name.
- `sort` (enum, optional, default "site") — Order of rows. [one of: site, price_desc, price_asc, name_asc]
- `page` (integer, optional, default 1) — Page number.
- `limit` (integer, optional, default 100) — Rows per page (1-1000).
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** list{list_id, name, slug, description, image_url}, results[]{print_id, name, slug, url, rarity, collector_number, foil, reserved_list, image_url, set{set_id, name, code, slug, set_type}, tcgplayer_usd{average, market, foil}, cardmarket_eur{...}, cardkingdom_usd{...}}, count, total, page, has_more

**Example request body:**
```json
{
  "list_id": "1"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/popular — 1 credit
The five prints most viewed or most bought on MTGStocks right now, with each store's price.

**Parameters:**
- `kind` (enum, optional, default "viewed") — List. [one of: viewed, bought]
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** kind, results[]{print_id, name, slug, url, image_url, stores{tcgplayer|cardmarket|cardkingdom|starcitygames: {store, currency, average, url}}}, count

### POST https://api.reefapi.com/mtgstocks/v1/premium_preview — 1 credit
The free teaser rows MTGStocks shows for its Premium screens (trends, penny stocks, underpriced cards, price compare, Secret Lair value and others). About five rows each: the complete screens need a paid MTGStocks account and are not available here.

**Parameters:**
- `name` (enum, required) — Which teaser. [one of: trends, penny_stocks, higher_market, direct_low_differential, secret_lair_value, price_compare, cardkingdom_rapid_riches]
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** name, results[] (the row shape of that screen; `print` objects normalised), count

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

### POST https://api.reefapi.com/mtgstocks/v1/formats — 1 credit
The tournament formats MTGStocks tracks, with the id that metagame, most_played and archetypes accept.

**Parameters:**
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** formats[]{format_id, name, filter}, count

### POST https://api.reefapi.com/mtgstocks/v1/metagame — 2 credits
The current metagame of a tournament format: each archetype's share of top placings.

**Parameters:**
- `format` (string, required) — Tournament format by name (modern, legacy, pioneer, standard, pauper, ...) or id from `formats`.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** format, date, results[]{archetype_id, archetype, colors, placings, total, share_percent, image_url}, count

**Example request body:**
```json
{
  "format": "modern"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/most_played — 1 credit
The most played cards of a tournament format, with share of decks and the current price of their cheapest print.

**Parameters:**
- `format` (string, required) — Tournament format by name (modern, legacy, pioneer, standard, pauper, ...) or id from `formats`.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** format, results[]{card_name, quantity, percentage, print{print_id, slug, image_url, url}, tcgplayer_usd{average}, cardmarket_eur{average}}, count

**Example request body:**
```json
{
  "format": "modern"
}
```

### POST https://api.reefapi.com/mtgstocks/v1/archetypes — 1 credit
The named deck archetypes of a tournament format.

**Parameters:**
- `format` (string, required) — Tournament format by name (modern, legacy, pioneer, standard, pauper, ...) or id from `formats`.
- `max_rotations` (integer, optional, default 3) — How many fresh exits to try before giving up.

**Returns:** format, results[]{archetype_id, name, old}, count

**Example request body:**
```json
{
  "format": "modern"
}
```

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