magi API

What Japanese trading cards actually sell for, card by card

The magi API returns magi.camp - Japan's card-only flea market for Pokémon, One Piece, Yu-Gi-Oh!, Duel Masters, MTG, Weiß Schwarz and 140+ other games - as clean JSON in yen, with the Japanese text kept as sellers wrote it.

This page covers what the magi API returns, who uses it, a real response and pricing. Every parameter and response field is in magi API parameters and responses →

endpoints
9
credits per call
1–2

2 credits per call≈ $2/1,000 calls1,000 free credits, no card

POST/magi/v1/sold200
  1. @ @ モンキー・D・ルフィ(パラレル) P-R OP16-034 1枚569
    favorites
    2
    sold
    true
  2. 【状態A】モンキー・D・ルフィ SR パラレル (OP02-062) 1枚2472
    favorites
    0
    sold
    true
  3. 【PSA10】モンキー・D・ルフィ(パラレル) P-SEC EB02-061 1枚9043
    favorites
    1
    sold
    true
Real result, captured Nov 8, 20263 of 96
Try it live

Run the call yourself, on the real endpoint

Change a parameter and press Try it. The response on the right is what your code will receive.

magi API

3 of 9 endpoints, ready to run

View docs ↗

Only listings that sold, with the price they sold at, newest first: filter by game, keyword, card, seller, grade, price band and condition; the page's min, median, mean and max come back too.

2 credits0 required · 4 optional
POST/magi/v1/sold
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

Try every endpoint in the playground

Endpoints

What magi endpoints does ReefAPI ship?

9 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

9 endpoints

search

2 cr

Search magi listings.

required
—
optional
query, game, series_id, category, condition, min_price, max_price, status, include_description, product_id, seller_id, grade, sort, page

sold

2 cr

Sold listings only.

required
—
optional
query, game, series_id, category, condition, min_price, max_price, include_description, product_id, seller_id, grade, sort, page

item

2 cr

One magi listing in full.

required
item_id
optional
—

products

2 cr

Search magi's card catalogue (製品).

required
—
optional
query, game, series_id, category, min_price, max_price, sort, page

product

2 cr

One card product with its sold-price history.

required
product_id
optional
—

price_history

2 cr

A card's sold-price history ready for charts and price checks.

required
product_id
optional
days

catalog

1 cr

magi's card database lookup.

required
query
optional
series_id, page

categories

1 cr

magi's category tree.

required
—
optional
game

trending

1 cr

What magi users are searching for right now (the site's trending keywords).

required
—
optional
—

Every parameter, every allowed value →

Missing a magi endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
How it works

How the magi API works

magi is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 632 engines.

02
Call
POST /magi/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and nothing is cached: every call reads the source live.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Recipe

Is this card cheap? Three calls

Compare the cheapest copy for sale on magi with what the card has actually sold for.

01catalog
POST/magi/v1/catalog
{"query": "リザードンex SAR 134/108"}

Card ids with rarity, card number and set; graded versions (【PSA10】…) are separate ids.

02price_history
POST/magi/v1/price_history
{"product_id": "422598", "days": 90}

Daily series and median, min, max and change over 90 days.

03search
POST/magi/v1/search
{"product_id": "422598", "status": "on_sale", "sort": "price_asc"}

Copies for sale now, cheapest first.

The 90-day sold median next to the cheapest live copy of the same card.

request
curl -X POST https://api.reefapi.com/magi/v1/sold \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"ルフィ","game":"one_piece"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "magi",
    "endpoint": "sold",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}
Fields

What a PSA 10 card really sells for in Japan - one call

product for 【PSA10】リザードンex SAR 134/108 on 2026-11-08 returned 314 completed sales and a dated chart from 2024-02-11 to 2026-11-02. The cheapest copy for sale was ¥75,705; the raw card's cheapest copy was ¥25,750, so the grading premium is visible in the same response.

FieldValue (live, 2026-11-08)Meaning
last_trade_date / last_trade_price_jpy2026-11-02 / 74,984The most recent sale on the chart
range_12m_min_jpy - range_12m_max_jpy46,350 - 121,540magi's own 12-month range
average_all_time_jpy50,497magi's all-time average sale
price_history days=90: change_percent-20.7 %94,554 on 2026-08-11 to 74,984 on 2026-11-02
min_price_jpy75,705Cheapest copy for sale right now

Prices are what a buyer pays, buyer fee included - magi adds about 3 % on top of the seller's price, and item shows both (22,660 = 22,000 + 660 fee on a live listing). magi's chart keeps one point per day for up to 200 days; trades lists every sale, and gets an exact date per sale when the two line up one-to-one.

Coverage

What magi publishes, and what it does not

magi.camp only — Japan, prices in JPY, Japanese text. Measured 2026-11-08: 38 of 38 live cases across nine actions and nine games, 54 of 54 fields equal to the site in an independent check, 72 offline checks on real responses. Some of these lines go against us.

Search rows

1,686 of 1,686 rows had a price and an image.

Against us: grades

Read from the title, because magi has no grade field. Found on 461 of 1,686 rows.

Depth

Search reaches 100 pages of 96 rows. The price chart has one point a day, up to 200 days.

Against us: price filter

It uses magi's indexed price, which can lag; the response warns when that applies.

Not published

The sale time of a single listing.

Use cases

What people build with magi

The jobs this data is most often used for.

9

endpoints

1/2

credits per call

01

Japan-to-abroad arbitrage: realised yen sale prices for a card next to its cheapest live copy

02

Graded card valuation: PSA 10 versus raw prices for the same card, with the full sale history

03

Price alerts and portfolio tracking for Japanese Pokémon and One Piece cards

04

Market research: what sells, how fast and at what price, per game and sub-category

Pricing

What magi data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 632 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire
no credit card1,000 free credits · instant API key · pay by card or crypto
Quickstart

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/magi/v1/sold \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"ルフィ","game":"one_piece"}'
python
import os
import requests

REEF_KEY = os.environ["REEF_KEY"]

r = requests.post(
    "https://api.reefapi.com/magi/v1/sold",
    headers={"x-api-key": REEF_KEY},
    json={
        "query": "ルフィ",
        "game": "one_piece"
    },
    timeout=90,
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up magi.

Can I get sold prices, not just asking prices?▾

Yes. sold returns only listings that sold, with the price they sold at, and works with every search filter: game, keyword, card, seller, grade, price band and condition. For one card, product returns every completed sale. In the live run a sold search for ルフィ in One Piece returned 96 sales on the first page (median ¥17,459) out of 2,666.

Does it work for graded cards (PSA, BGS, ARS)?▾

Yes. Pass grade=PSA10 (or PSA9, BGS9.5, ARS10+, CGC10) and every row has a parsed grade. magi lists each grade of a card as its own product, so product also returns other_grades - the same card as PSA10, PSA9, ARS10 or raw, each with its cheapest price.

Which games are covered?▾

Everything magi lists: 143 games on 2026-11-08, from Pokémon, One Piece, Yu-Gi-Oh!, Duel Masters, MTG, Weiß Schwarz, Union Arena, Digimon and Lorcana to sports cards and retired games. categories returns every game id and each game's sub-categories, such as Pokémon singles, unopened boxes, unopened packs, old-back cards and overseas versions.

Do I get the exact date of each sale?▾

magi shows each sale with a relative time (6 days ago, about a month ago) and a dated chart with one point per day. trades always has the price and the relative time, days_ago when magi states whole days, and an exact date when the sales and the chart line up one-to-one. daily_chart always has dates. A single listing's sale time is not public on magi.

Are seller details included?▾

Each listing returns the seller's public magi name and id, identity check, rank, and the good / normal / bad rating counts magi prints on the listing, plus whether the seller is a registered shop with a real store. Phone numbers and e-mail addresses inside descriptions are removed by default.

What is the magi API?▾

magi API is a ReefAPI endpoint group for japan's trading-card marketplace: live and sold listings, every card's sale history and seller ratings, in jpy. It returns live JSON through POST requests under /magi/v1.

Is the magi API free to try?▾

Yes. ReefAPI starts with 1,000 free credits, no card required. magi calls use the same shared credit balance as every other ReefAPI engine.

Do I need a magi login or account?▾

No login to magi 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 magi 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 magi API use?▾

magi actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call magi from an AI assistant or MCP client?▾

Yes. Connect ReefAPI once through MCP and your assistant can call magi actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the magi API a magi scraper?▾

It is the managed alternative to a DIY magi 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 japan's trading-card marketplace: live and sold listings, every card's sale history and seller ratings, in jpy back as clean JSON.

Why does my magi scraper keep getting blocked?▾

Most magi 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.

Contact

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 631 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-11-08.