Courtyard API

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

POST/courtyard/v1/pack200
title

Pokémon Starter Pack

price_usd25
expected_value_usd
25
expected_value_ratio
1
min_card_value_usd
15
category
Pokémon
category_group
tcg-cards
Real result, captured Nov 8, 2026
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.

Courtyard API

3 of 7 endpoints, ready to run

View docs ↗

The vault marketplace: card, grader, grade and cert number, buy-now price, Courtyard's FMV and the discount to it.

2 credits0 required · 5 optional
POST/courtyard/v1/search
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 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.

7 endpoints

search

2 cr

Search Courtyard's marketplace.

required
—
optional
query, category, collection, grader, grade, year, set, language, pack, variant, listing_status, price_min, price_max, fmv_min, fmv_max, listed_after, sort, page, limit, max_rotations

asset

2 cr

One Courtyard asset in full.

required
asset_id
optional
grader, include_description, max_rotations

recent_pulls

2 cr

The live feed of pack openings ('pulls') on Courtyard.

required
—
optional
pack_id, limit, max_rotations

sales

3 cr

Recent sales across the whole Courtyard marketplace, newest first, from the on-chain transact…

required
—
optional
kind, limit, offset, max_rotations

packs

2 cr

Every Courtyard pack (vending machine).

required
—
optional
category, status, max_rotations

pack

1 cr

One Courtyard pack in full.

required
pack_id
optional
max_rotations

filters

1 cr

The marketplace's filter vocabularies with live counts.

required
—
optional
query, category, collection, grader, max_values, max_rotations

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 it works

How the Courtyard API works

Courtyard 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 /courtyard/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 or 3 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

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.

01search
POST/courtyard/v1/search
{"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.

02asset
POST/courtyard/v1/asset
{"asset_id": "<asset_id from search>"}

Every ask and bid, Courtyard's buyback offer and the on-chain sale history.

03sales
POST/courtyard/v1/sales
{"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.

request
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"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "courtyard",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}
Fields

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.

PackPrice (USD)Expected valuePulls in 24 hPulls in 30 daysChase odds
Pokémon Starter Pack2525.007,088245,2081% for $100-400
Pokémon Basic Pack1514.406,69749,9781.1% for $60-240
Pokémon Pro Pack5048.003,10280,2121.1% for $200-800
Wildcard Basic Pack1514.402,599158,0421% for $60-240
Pokémon Master Pack10096.001,67140,0691.1% for $400-1,600
One Piece PSA 105956.641,4689,6111% 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.

Coverage

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.

Vault size

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.

Games and graders

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.

Search depth

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.

Fair market value

Courtyard's own estimate with a confidence score; null when Courtyard has none (seen on authentication-only slabs such as GMA AUTH).

Sales

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).

Pulls

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.

Packs

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).

Not available

The price history chart (signed-in users only) and anything that needs an account or a wallet.

Use cases

What people build with Courtyard

The jobs this data is most often used for.

7

endpoints

1/2/3

credits per call

01

Deal finding: listed slabs priced below Courtyard's fair market value, by grade and game

02

Graded card comps: real on-chain sale prices with grader, grade and cert number

03

Pack analytics: price vs expected value, odds and daily pull counts per pack

04

Pull trackers: the live feed of what was just pulled, from which pack, and its FMV

Pricing

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.

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/courtyard/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"charizard","grader":"PSA","listing_status":"listed"}'
python
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"])
FAQ

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.

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.