Every slab in Courtyard's vault, with its grade, value and real sale prices
The Courtyard API returns Courtyard.io's vault marketplace as clean JSON.
This page covers what the Courtyard API returns, who uses it, a real response and pricing. Every parameter and response field is in Courtyard API parameters and responses →
- endpoints
- 7
- credits per call
- 1–3
1 credit per call≈ $1/1,000 calls1,000 free credits, no card
Pokémon Starter Pack
- expected_value_usd
- 25
- expected_value_ratio
- 1
- min_card_value_usd
- 15
- category
- Pokémon
- category_group
- tcg-cards
7 active endpoints, on 1, 2 and 3 credit tiers.
- POST/courtyard/v1/search2 credits
- POST/courtyard/v1/asset2 credits
- POST/courtyard/v1/recent_pulls2 credits
- POST/courtyard/v1/sales3 credits
- POST/courtyard/v1/packs2 credits
- POST/courtyard/v1/pack1 credit
- POST/courtyard/v1/filters1 credit
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.
Courtyard API
3 of 7 endpoints, ready to run
The vault marketplace: card, grader, grade and cert number, buy-now price, Courtyard's FMV and the discount to it.
// 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.
What Courtyard endpoints does ReefAPI ship?
7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Every parameter, every allowed value →
Missing a Courtyard endpoint, or need a source we don't have yet?Contact us real people · same-day reply.How the Courtyard API works
Courtyard is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 632 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and nothing is cached: every call reads the source live.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Find slabs listed under fair market value, then check what they really sell for
Three calls from a deal list to the sale history of the card you like.
{"category": "pokemon", "grader": "PSA", "grade": "10", "listing_status": "listed", "sort": "best_deals", "fmv_min": 200}PSA 10 Pokémon slabs worth $200+ with the biggest discount to FMV first.
{"asset_id": "<asset_id from search>"}Every ask and bid, Courtyard's buyback offer and the on-chain sale history.
{"kind": "marketplace", "limit": 50}What collectors actually paid in the last minutes, next to each card's FMV.
Deals, the order book of one slab and the market's real prices, in three calls.
curl -X POST https://api.reefapi.com/courtyard/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"charizard","grader":"PSA","listing_status":"listed"}'{
"ok": true,
"data": { … },
"meta": {
"api": "courtyard",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Courtyard packs: price, expected value and how many people open them
The most-opened Courtyard packs on 2026-11-08, from one packs call. Every pack's expected value sits at or just under its price, and every card can be sold straight back to Courtyard for 84.6% of its fair market value.
| Pack | Price (USD) | Expected value | Pulls in 24 h | Pulls in 30 days | Chase odds |
|---|---|---|---|---|---|
| Pokémon Starter Pack | 25 | 25.00 | 7,088 | 245,208 | 1% for $100-400 |
| Pokémon Basic Pack | 15 | 14.40 | 6,697 | 49,978 | 1.1% for $60-240 |
| Pokémon Pro Pack | 50 | 48.00 | 3,102 | 80,212 | 1.1% for $200-800 |
| Wildcard Basic Pack | 15 | 14.40 | 2,599 | 158,042 | 1% for $60-240 |
| Pokémon Master Pack | 100 | 96.00 | 1,671 | 40,069 | 1.1% for $400-1,600 |
| One Piece PSA 10 | 59 | 56.64 | 1,468 | 9,611 | 1% for $236-944 |
Odds tables are Courtyard's own (value tiers base, common, uncommon, rare, chase); 10 of 106 packs publish none and come back with odds null. Expected value is Courtyard's figure, not ours.
What Courtyard publishes, and what it does not
Measured 2026-11-08: 35 of 35 live cases across seven actions, and 13 of 14 listed assets identical to Courtyard's own asset pages (title, buy-now price, grader, grade, cert number, image); the 14th was sold back to Courtyard between our two reads. Some of these lines go against us.
About 420,000 items: 356,000 graded cards, 52,000 sealed booster packs, 5,300 graded comics, 4,700 raw cards, 1,500 graded coins, sneakers and watches. About 32,000 are listed for sale at any moment.
Pokémon 285,000, baseball 32,000, basketball 28,000, football 27,000, One Piece 17,000, Magic 8,300, soccer 7,400, hockey 5,000 and more. PSA 224,000, CGC 125,000, BGS 5,300, SGC 1,600, NGC and PCGS for coins.
Courtyard serves the first 1,000 results of any search, up to 100 a page. total is the true match count; narrow the filters to reach the rest. Unlisted-only cannot be selected.
Courtyard's own estimate with a confidence score; null when Courtyard has none (seen on authentication-only slabs such as GMA AUTH).
The newest ~1,000 on-chain sales are reachable through sales, each labelled marketplace or buyback; an asset's sale_history goes back to its pull. Prices are in USD (settled in USDC).
Up to 50 newest pulls per call, all packs or the ones you name. pulled_by is known while the puller still owns the card, and for single-pack requests; otherwise null.
Price, expected value, buyback ratio, odds table and pulls per 24 h / 7 / 30 days for every pack. 10 of 106 packs publish no odds (null).
The price history chart (signed-in users only) and anything that needs an account or a wallet.
What people build with Courtyard
The jobs this data is most often used for.
endpoints
credits per call
Deal finding: listed slabs priced below Courtyard's fair market value, by grade and game
Graded card comps: real on-chain sale prices with grader, grade and cert number
Pack analytics: price vs expected value, odds and daily pull counts per pack
Pull trackers: the live feed of what was just pulled, from which pack, and its FMV
What Courtyard 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.
- 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
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 -X POST https://api.reefapi.com/courtyard/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"charizard","grader":"PSA","listing_status":"listed"}'import os
import requests
REEF_KEY = os.environ["REEF_KEY"]
r = requests.post(
"https://api.reefapi.com/courtyard/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "charizard",
"grader": "PSA",
"listing_status": "listed"
},
timeout=90,
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Courtyard.
Can I look up a slab by its PSA or CGC cert number?▾
Yes. asset takes the Courtyard asset id, the asset URL or the grading company's cert number (for example 64524940 for a PSA 10 Charizard VSTAR). search also matches a cert number typed as the query.
Is the fair market value a sale price?▾
No. fmv_usd is Courtyard's own estimate, returned with its confidence and source. Real prices paid are in sales and in each asset's sale_history: on 2026-11-08 the median collector-to-collector sale was 93% of FMV across 25 sales (range 71% to 147%).
What is a buyback?▾
Courtyard lets an owner sell a slab straight back to Courtyard. About 4 in 5 on-chain sales are buybacks, at 84.6% of FMV for every pack we measured. Every sale is labelled marketplace or buyback, and an asset's bids flag Courtyard's own standing buyback offer.
Does search return only items for sale?▾
By default it returns everything in the vault, like the site (about 420,000 items); listing is null for items that are not listed. Set listing_status to listed for buy-now items only (about 32,000). Courtyard serves the first 1,000 results of a search, so narrow by category, grader, grade or price to go deeper.
Can I watch new listings?▾
Yes. search with sort newest_listed and listed_after set to the time of your last check returns only the listings that appeared since then.
Is the price history chart included?▾
No. Courtyard shows the price chart to signed-in users only. Every on-chain sale price of the asset is in sale_history, and price_history comes back null.
What is the Courtyard API?▾
Courtyard API is a ReefAPI endpoint group for vaulted graded cards on courtyard.io: listings with psa/cgc/bgs grade and cert, fmv, bids, on-chain sales, pack pulls and odds. It returns live JSON through POST requests under /courtyard/v1.
Is the Courtyard API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Courtyard calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Courtyard login or account?▾
No login to Courtyard 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 Courtyard 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 Courtyard API use?▾
Courtyard actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Courtyard from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call courtyard actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Courtyard API a Courtyard scraper?▾
It is the managed alternative to a DIY Courtyard 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 vaulted graded cards on courtyard.io: listings with psa/cgc/bgs grade and cert, fmv, bids, on-chain sales, pack pulls and odds back as clean JSON.
Why does my Courtyard scraper keep getting blocked?▾
Most Courtyard 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.
350 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Courtyard, you are one call away from the rest of the category — no second contract, no second integration.
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.
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.