Schema reference
Generated from the live schema, so it always matches the API. Send queries to POST https://raritydb.com/graphql with your key; see Authentication. The raw schema is at /schema.graphql.
Query (entry points)
Pokémon TCG data: species, sets, cards and printings. Start with search or resolveId if you have a name or another system's ID.
assessConditionConditionAssessment!- Estimate a card's condition from photos: centering and edge whitening are measured, visible damage (creases, dents, scratches, stains) is reported with locations, and they combine into a grade range with what the photos can't show. Pass the front, and the back for a narrower range, as base64, a data URL or an https URL; the card must be at least 1000 px wide in the photo, out of its sleeve if possible.
-
Arguments
front: String!back: String
cardCard- One card by code, e.g. swsh3-136 or asia:SV2a-006.
-
Arguments
code: String!
cardsCardConnection!-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.filter: CardFilterorderBy: CardOrder
checkAuthenticityAuthenticityCheck!- Look for signs that a card is fake. The card is identified, its printed numbers and names are compared with our catalog, and the photo with a scan of the real card (fonts, symbols, spelling, colours, finish, and the back if sent). Returns red flags and a verdict of LIKELY_FAKE, NO_RED_FLAGS or CANT_TELL; it never says a card is genuine. Pass the front (and ideally the back) as base64, a data URL or an https URL.
-
Arguments
front: String!back: String
identifyCardIdentification!- Identify a card, and its exact printing where the photo shows it (1st Edition, Shadowless, reverse holo, stamps), from a photo. Pass the image as base64, a data URL, or an https URL (JPEG, PNG or WebP; at most 10 MB; at least 600 px on the short edge). An optional second photo tilted under a light helps tell holo from reverse.
-
Arguments
image: String!tiltedImage: String
identifyCardsBatchIdentification!- Identify every card in one photo of several: a spread on a table or a binder page (up to 20 cards). Cards are found by their outlines and returned in reading order with where each is in the photo. For a binder page whose cards touch, pass grid (e.g. "3x3") to split the photo evenly instead. Each identified card counts as one photo check; cards past your remaining checks come back with an error instead of an identification.
-
Arguments
image: String!grid: StringRows x columns, e.g. 3x3 for a 9-pocket page.
nodeNode- Fetches an object given its ID.
-
Arguments
id: ID!
resolveId[Entity!]!- Look up a record by another system's ID. Sources: tcgdex, pokemontcg.io, tcgplayer (product id), cardmarket (idProduct). Marketplace ids can map to several printings.
-
Arguments
source: String!value: String!
sealedProductsSealedProductConnection!- Sealed products, newest first.
-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.setCode: Stringkind: StringSee SealedProduct.kind for values.region: Regionname: StringCase-insensitive substring.
search[Entity!]!- Fuzzy name search across species, sets and cards (any spelling close to the query), best matches first.
-
Arguments
query: String!limit: Int
series[Series!]!- All series, oldest first.
setSet- One set by code, e.g. sv03.5 or asia:SV2a.
-
Arguments
code: String!
setsSetConnection!- Sets, newest first.
-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.region: Regionseries: StringSeries slug, e.g. sv.digital: Booleanfalse = physical sets only; true = TCG Pocket only.
slabVerificationSlabVerification!- Where to verify a graded slab's cert number (PSA, CGC, BGS, SGC, TAG) and whether the number fits the grader's format. identifyCard fills this in from a photo of the slab label.
-
Arguments
grader: String!cert: String!
speciesSpecies- One species by Pokédex number or slug.
-
Arguments
nationalDex: Intslug: String
speciesListSpeciesConnection!- Species in Pokédex order.
-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.generation: Inttype: StringMatches the default form's types, e.g. fire.
viewerViewer- Your account: plan, limits and usage.
Attack
cost[String!]!- Energy types required, one entry per Energy.
damageString- Printed damage, e.g. "90", "30+", "20×".
effectStringnameString!
AuthenticityCheck
Red flags that a card is fake, from photos. Never says a card is genuine.
cardCard- The real card the photo was compared with.
checked[String!]!- What was compared and matched the real card.
disclaimerString!identificationStatusString!- MATCH, AMBIGUOUS or NO_MATCH (see identifyCard).
modelString!notChecked[String!]!notes[String!]!- Weak observations the lighting or the photo could explain (e.g. a colour shift); never decide the verdict.
physicalChecks[String!]!- Checks a photo can't do, for the holder of the card.
redFlags[RedFlag!]!- Strongest first. Only strong and medium ones.
timingsMsJSON!verdictAuthenticityVerdict!
BatchIdentification
Every card found in one photo of several (a spread or a binder page), identified one by one.
cards[BatchIdentificationCard!]!detectedInt!- How many cards were found.
foundByString!- outlines (cards found by their edges) or grid (the photo split evenly).
hints[String!]!
BatchIdentificationCard
One card in the photo: its identification, or why it has none.
boxPhotoBox!columnInt!errorStringidentificationIdentification- Null when error says why (photo quota, too small).
indexInt!- Position in reading order, from 0.
rowInt!
Card
A card as printed in one set. Its printings are the collectible variants (normal, reverse holo, stamped…).
abilities[CardAbility!]!attacks[Attack!]!codeString!- Our card id: TCGdex's id (e.g. swsh3-136), prefixed with asia: for Asian cards.
effectString- Rules text for Trainer and Energy cards.
englishNameString- For Japanese and other Asian cards: the English name, from TCGplayer's English listing, or (englishNameSource DERIVED) from the Pokémon's name plus the card's suffix. Null when unknown.
englishNameSourceString- tcgplayer or derived.
evolvesFromStringexternalIds[ExternalId!]!- IDs in other systems, e.g. pokemontcg.io (sv3-125).
flavorTextStringhpIntidID!- ID of the object.
illustratorStringimageImage- Card scan.
legalitiesLegalities!localizedNames[LocalizedName!]!nameString!-
Arguments
locale: StringDefaults to the card's primary language.
numberString!- Collector number as printed.
printings[Printing!]!productImageExternalImage- TCGplayer's photo of the card, hosted by TCGplayer (linked, not copied). Mainly useful for Asian cards with no scan in `image`; show its credit.
rarityStringregulationMarkStringresistances[TypeModifier!]!retreatCostIntsetSet!species[CardSpeciesLink!]!stageString- Basic, Stage1, Stage2, VMAX…
subtypes[String!]!- e.g. EX, V, VMAX, Item, Supporter, Special.
supertypeSupertype!types[String!]!weaknesses[TypeModifier!]!
CardAbility
effectStringnameString!typeString- e.g. Ability, Poké-Power, Poké-Body.
CardReading
What the vision model read on the card. Null means it couldn't read that clearly.
copyrightYearsStringfirstEditionStampBoolean!foilPatternStringholoAreaString!- artwork (holo), whole_card (reverse holo), none, unknown.
isTradingCardBoolean!languageStringlegibilityFloat!nameStringnotesStringnumberStringotherStamps[String!]!printedTotalStringregulationMarkStringsetCodeStringshadowlessBoolean- Base Set era only.
slabCertStringslabGradeStringslabGraderString- Set when the card is in a graded slab.
CardSpeciesLink
A species on a card. Tag-team cards link several; cameo links are Pokémon that only appear in the artwork.
cameoBoolean!formForm- Set when the card is a specific form, e.g. Alolan Vulpix or Mega Charizard X ex.
speciesSpecies!
Centering
bordersMmJSON!- Measured border width per side in mm (null where not measurable).
leftRightCenteringRatio- Null when there's no clear, even border to measure.
topBottomCenteringRatio
CenteringLimit
The best grade a grader's published centering limits allow for the measured centering.
gradeString- e.g. 9, Gem Mint 10. Null when the grader publishes no limit this low.
graderString!noteStringvalueFloat
CenteringRatio
Border widths on one axis as percentages, e.g. 57 / 43 (left / right or top / bottom).
displayString!firstFloat!- Left or top share.
secondFloat!- Right or bottom share.
uncertaintyFloat!- ± in percentage points.
ConditionAssessment
A condition estimate from photos: measured centering and whitening, visible defects, and the grade range they allow.
backConditionSidecannotAssess[String!]!- What these photos can't show.
centeringLimits[CenteringLimit!]!confidenceString!- high, medium or low: how narrow the range is.
defects[ConditionDefect!]!disclaimerString!frontConditionSide!gradeRangeGradeRange!limitingFactors[String!]!- What holds the grade down, worst first.
modelString!timingsMsJSON!
ConditionDefect
Damage the vision model saw (only those at least 50% likely).
confidenceFloat!kindString!- crease, dent, indentation, scratch, print_line, stain, writing, whitening, edge_chip, corner_wear.
locationString!severityString!- minor, moderate or major.
sideString!
ConditionSide
What was measured on one side of the card.
cardShortEdgePxInt!- The card's width in the photo.
centeringCentering!glareFractionFloat!sharpnessFloat!wear[Wear!]!
ExpectedValue
What opening this is worth on average at today's Cardmarket prices. Read `caveats`: EV ignores bulk selling costs and assumes cards of a rarity are equally likely.
asOfISO8601Datecaveats[String!]!currencyString!fxDateISO8601Date- When converted: the date of that rate.
fxRateFloat- When converted: units of `currency` per euro used (European Central Bank reference rate).
lines[ExpectedValueLine!]!priceCoverageFloat- Share of the set's cards (in the lines) that have a price, 0–1.
samplePacksIntsources[String!]!totalFloat- Null when it can't be computed; `caveats` says why.
unitString!- pack or product.
ExpectedValueLine
cardCountIntcontributionFloat- quantity × probability × unitValue. Null when nothing in the line has a price.
labelString!- A rarity, or for sealed products a pack/card/product.
pricedCountInt- How many of cardCount have a price today.
probabilityFloat!quantityInt!slotString!unitValueFloat- Mean price of the cards in this line (or value of one pack/product).
ExternalId
This record's identifier in another system. Pass it to resolveId to come back here.
sourceString!- tcgdex, pokemontcg.io, tcgplayer or cardmarket.
valueString!
ExternalImage
A product photo hosted by a marketplace. We link to it and don't host or license it: show it with its credit and a link to pageUrl, or not at all.
creditString!- Show this next to the image.
pageUrlString!- The marketplace's product page.
sourceString!- Who hosts it, e.g. tcgplayer.
thumbnailUrlString!- About 200 px wide.
urlString!- Full-size image (about 1000 px).
Form
A battle form of a species with its own types and stats, e.g. vulpix-alola.
abilities[String!]!artworkImage- Official artwork. Currently not served (url is null).
baseStats[Stat!]!heightInt- Decimetres.
isDefaultBoolean!kindFormKind!nameString!- PokéAPI identifier, e.g. vulpix-alola, charizard-mega-x.
speciesSpecies!types[String!]!weightInt- Hectograms.
GradeRange
Best and worst grade the photos allow, on the common 1–10 card grading scale.
highFloat!lowFloat!scaleString!
Identification
The result of identifying a card from a photo.
candidates[IdentificationCandidate!]!- Ranked alternatives with the evidence for each.
cardCard- The best match (null for NO_MATCH).
confidenceFloathints[String!]!- What would settle an ambiguous result (e.g. tilt to show the holo).
modelString!- Vision model that read the card.
printingPrinting- The exact printing, when the visible cues leave only one.
printings[Printing!]!- Printings of the card still consistent with the photo.
qualityPhotoQuality!readingCardReading!slabSlabVerification- When the card is in a graded slab: where to verify its cert.
statusIdentificationStatus!timingsMsJSON!
IdentificationCandidate
cardCard!imageSimilarityFloat- Cosine similarity to the card's reference scan; null if it wasn't among the nearest.
reasons[String!]!scoreFloat!- 0–1, combining what was read with image similarity.
textScoreFloat!- How well the printed text (number, set size, set code, name, language) matches.
Image
kindString!- large (card scan), logo, symbol or artwork.
sourceString!- Where the image originally came from.
urlString- Null when this image is not currently served.
ImportError
messageString!rowInt!
ImportMapping
fieldString!- order_id, sold_on, title, sku, set_name, number, quantity, item_price, shipping_charged, shipping_cost, fees, buyer or event.
headers[String!]!
Legalities
Tournament format legality.
expandedBooleanstandardBoolean
LocalizedName
localeString!- Language code, e.g. en, fr, ja, zh-tw.
nameString!
MarketQuote
A price from a provider you queried with your own key. Quotes cover the whole TCGplayer product, so check `printing`.
asOfISO8601DateTimeconditionString- Raw condition, e.g. Near Mint. Null for graded quotes.
currencyString!gradeStringgraderString- PSA, BGS, CGC or SGC for graded sales.
priceFloatprintingString- Provider's printing label, e.g. Normal, Reverse Holofoil, Holofoil.
providerPriceProvider!salesCountInt- Number of sales behind a graded price.
MarketplaceLink
A link to look up live prices yourself. We do not fetch or store these marketplaces' prices.
exactBoolean!- True when the link goes to this exact product; false when it is a search.
marketplaceString!- tcgplayer, cardmarket, ebay_sold or pricecharting.
urlString!
Mutation
Manage price alerts and the webhook endpoints they post to, and your Pullbook seller ledger.
addExtraCost[PullbookItem!]!- Spread one bill (a grading submission, say) evenly over items, to the cent.
-
Arguments
itemIds: [ID!]!amount: Float!note: String
addPullsPullbookPurchase!- Add what came out of a purchase: cards by code, and a count of bulk cards. fromItemId puts them inside one of the purchase's sealed items (opening one unit of it). The cost is re-split.
-
Arguments
purchaseId: ID!pulls: [PullInput!]bulk: IntfromItemId: ID
createEventPullbookEvent!- A stream or card show to group sales by.
-
Arguments
name: String!kind: PullbookEventKind!heldOn: ISO8601Date!cost: Float
createPriceAlertPriceAlert!- Watch a printing's Cardmarket trend price. Name the card by code and, when it has several printings, the printing by key (see Card.printings). The printing must have a Cardmarket product.
-
Arguments
cardCode: String!printingKey: Stringcondition: PriceAlertCondition!threshold: Float!webhookEndpointId: ID!
createPullbookCheckoutString!- A Stripe Checkout link for a paid plan. Open it in a browser to pay; your plan changes once Stripe confirms.
-
Arguments
plan: String!pro, dealer or founding.interval: String!month or year (founding is yearly only).
createPurchasePullbookPurchase!- Log something you bought. SEALED needs sealedProductId (a SealedProduct id); its units become an item you can open. Amounts are in your ledger's currency.
-
Arguments
kind: PullbookPurchaseKind!name: StringDefaults to the sealed product's name.purchasedOn: ISO8601Date!price: FloatRequired unless costUnknown.costUnknown: BooleanYou don't know what you paid (cards you've had for years): amounts are 0, items count toward holdings' value but not gain, and tax lots say so.shipping: Floattax: FloatsealedProductId: IDquantity: Intsource: Stringnotes: String
createSalePullbookSale!- Record a sale. Fees come from the channel's schedule unless you pass fees. Counts toward your plan's monthly sales.
-
Arguments
channel: PullbookChannel!soldOn: ISO8601Date!lines: [SaleLineInput!]!shippingCharged: FloatshippingCost: Floatfees: FloateventId: IDexternalOrderId: Stringbuyer: Stringnotes: String
createWebhookEndpointWebhookEndpointWithSecret!- Register an https URL to receive events. Returns the signing secret, shown only this once.
-
Arguments
url: String!
deleteEventID!- Delete a stream or show (its sales are kept). Returns its id.
-
Arguments
id: ID!
deleteItemID!- Remove an unsold item. Returns its id.
-
Arguments
id: ID!
deletePriceAlertID!- Stop an alert. Returns its id.
-
Arguments
id: ID!
deletePurchaseID!- Delete a purchase and its items (not once something from it has sold). Returns its id.
-
Arguments
id: ID!
deleteSaleID!- Delete a sale; its items go back in stock. Returns its id.
-
Arguments
id: ID!
deleteWebhookEndpointID!- Delete an endpoint and the alerts that post to it. Returns its id.
-
Arguments
id: ID!
finishImportPullbookImport!- Map the columns of an import that is NEEDS_MAPPING, and run it.
-
Arguments
id: ID!mapping: [ImportMappingInput!]!
importSalesPullbookImport!- Import a sales export (CSV text, up to 2 MB / 5,000 rows). Columns are found by name for Whatnot, eBay and TCGplayer exports, or by a mapping you pass (or saved from an earlier file with the same headers). Re-importing is safe.
-
Arguments
csv: String!channel: PullbookChannel!filename: Stringmapping: [ImportMappingInput!]
openItemPullbookItem!- Open one unit of a sealed item. Returns the opened unit.
-
Arguments
id: ID!
pullbookBillingPortalString!- A Stripe link to change or cancel your paid plan. Open it in a browser.
resolveSaleLinePullbookSaleLine!- Settle a sold line: itemId sells that inventory item; costBasis says it wasn't from your ledger (and what it cost); unmatch: true puts its item back and the line back in review.
-
Arguments
id: ID!itemId: IDcostBasis: Floatunmatch: BooleancardCode: StringSay which card a REVIEW line is (with itemId, then sell that copy).
rotateWebhookSecretWebhookEndpointWithSecret!- Replace an endpoint's signing secret. The old one stops working immediately.
-
Arguments
id: ID!
sendTestWebhookWebhookDelivery!- POST a signed ping event to an endpoint now (no retries) and return how it answered.
-
Arguments
id: ID!
updateEventPullbookEvent!-
Arguments
id: ID!name: Stringkind: PullbookEventKindheldOn: ISO8601Datecost: Float
updateItemPullbookItem!- Set an item's value for splitting cost, its condition or grade, or what was spent on it alone.
-
Arguments
id: ID!valueOverride: FloatPer unit, on the Cardmarket (€) scale. Pass null to use the market price.clearValueOverride: Booleantrue: go back to the market price (same as valueOverride: null).extraCost: FloatextraCostNote: Stringcondition: Stringgrade: String
updatePullbookSettingsPullbook!- Change your ledger's currency (only before you've logged purchases) or the bulk card weight, or note which paid plan you'd like (PRO, DEALER or FOUNDING). To buy one, use createPullbookCheckout.
-
Arguments
currency: StringbulkWeight: FloatupgradeInterest: String
updatePurchasePullbookPurchase!- Edit a purchase. Changing what it cost re-splits the cost over unsold items.
-
Arguments
id: ID!name: StringpurchasedOn: ISO8601Dateprice: FloatIgnored while the purchase is costUnknown; send costUnknown: false with it.shipping: Floattax: FloatcostUnknown: Booleansource: Stringnotes: String
PackSlot
countInt!slotString!- common, uncommon, reverse or rare.
PhotoBox
Where a card is in the photo, as fractions (0–1) of the photo's width and height from the top left.
heightFloat!widthFloat!xFloat!yFloat!
PhotoQuality
cardFoundBoolean!- Whether the card's outline was found and straightened.
glareFractionFloat!- Share of the card that is blown-out highlight.
sharpnessFloat!- Variance of the Laplacian; under ~100 is blurry.
shortEdgePxInt!
Price
A daily price snapshot. Cardmarket prices one product per card; reverse-holo printings report its holo columns.
asOfISO8601Date!attributionString!- Show this wherever the price is displayed.
avgFloatavg1Floatavg30Floatavg7FloatcurrencyString!fxDateISO8601Date- When converted: the date of that rate.
fxRateFloat- When converted: units of `currency` per euro used (European Central Bank reference rate).
lowFloatsourcePriceSource!trendFloat
PriceAlert
Watches one printing's Cardmarket trend price (EUR) and POSTs to a webhook endpoint when the condition is met. Checked once a day after Cardmarket's daily price guide is imported.
cardCard!conditionPriceAlertCondition!createdAtISO8601DateTime!idID!lastTriggeredOnISO8601DateprintingPrinting!thresholdFloat!- EUR for TREND_ABOVE / TREND_BELOW; percent for CHANGE_ABOVE_PERCENT.
webhookEndpointWebhookEndpoint!
Printing
One collectible variant of a card: the unit marketplaces sell and price.
cardCard!cardmarketProductIdIntfinishString!- normal, holo, reverse, firstEdition…
foilString- Foil pattern, e.g. cosmos.
idID!- ID of the object.
keyString!- Stable variant id within the card.
marketPrices[MarketQuote!]!- Live USD prices from a provider you have a key for (see PriceProvider). Results are cached for 6 hours per key.
-
Arguments
provider: PriceProvider!
marketplaceLinks[MarketplaceLink!]!- Where to check live prices yourself: TCGplayer, Cardmarket, eBay sold listings, PriceCharting.
pricePrice- Latest daily price from Cardmarket, in euros unless you ask for another currency (converted at the ECB rate for its date). For live US marketplace prices, follow marketplaceLinks.
-
Arguments
source: PriceSourcecurrency: Currency
priceHistory[Price!]!-
Arguments
source: PriceSourcefrom: ISO8601Dateto: ISO8601Datecurrency: CurrencyEach day converted at that day's rate.
sizeStringstamps[String!]!subtypeString- Print run or variation: unlimited, shadowless, 1999-2000-copyright, or a known misprint (e.g. missing-expansion-symbol).
tcgplayerProductIdInt
PullRate
Per-pack odds of pulling a card of this rarity, from a published opening study.
ciString- Published confidence interval, e.g. ±0.36%.
observedOnISO8601DateoddsString- As published, e.g. "1 in 81".
patternString- Set for reverse-holo patterns (pokeball, masterball): odds of that pattern rather than a rarity.
probabilityFloat!- Chance per pack, 0–1.
rarityString!- Matches Card.rarity.
samplePacksInt- Packs opened in the study (published as a floor, e.g. "more than 3,500").
slotString!- rare, reverse_1 or reverse_2 (the two reverse-holo slots, either of which can upgrade).
sourceString!sourceUrlString!
Pullbook
Your Pullbook ledger: what you bought, what came out of it, and what it cost you.
bulkWeightFloat!- What one bulk card weighs when cost is split, on the Cardmarket (€) scale.
currencyString!- Every amount in the ledger is in this currency.
events[PullbookEvent!]!- Streams and shows, newest first.
holdingsPullbookHoldings!- What you hold, what it cost and what it's worth at market prices.
importPullbookImport- One upload, to check on a running import.
-
Arguments
id: ID!
imports[PullbookImport!]!- Sales exports you've uploaded, newest first.
inventory[PullbookItem!]!- Items not sold or opened, most expensive first.
planString!purchasePullbookPurchase-
Arguments
id: ID!
purchases[PullbookPurchase!]!-
Arguments
kind: PullbookPurchaseKind
reportPullbookReport!- What you made, grouped; only settled sales count.
-
Arguments
groupBy: PullbookReportGroup!year: IntSales in this calendar year; all time when left out.
reviewQueue[PullbookSaleLine!]!- Sold lines waiting to be matched to your inventory.
salePullbookSale-
Arguments
id: ID!
sales[PullbookSale!]!- Newest first.
-
Arguments
channel: PullbookChannelfrom: ISO8601Dateto: ISO8601DateeventId: IDneedsReview: Boolean
salesPerMonthLimitInt- null = unlimited.
salesThisMonthInt!- Sales recorded this calendar month (what the plan limit counts).
taxLots[PullbookTaxLot!]!- Every item sold in a year, oldest first (paid plans): not tax advice. Sales with an item waiting in review aren't included (see taxLotsInReview).
-
Arguments
year: Int!
taxLotsInReviewInt!- Sales that year left out of taxLots because an item is waiting in review.
-
Arguments
year: Int!
upgradeInterestString- The paid plan you said you're interested in.
PullbookEvent
A stream or card show. Its profit is its sales' net, minus their cost basis, minus what the event cost.
costFloat!costBasisFloat!heldOnISO8601Date!idID!kindPullbookEventKind!nameString!netFloat!profitFloat!- Settled sales' net − their cost basis − the event's cost. Sales still in review aren't counted until they're settled.
salesCountInt!salesInReviewInt!
PullbookHolding
Something you still hold, at market value in your ledger's currency.
asOfISO8601Date- The price's date.
costFloat- What it cost you (costBasis); null when its purchase is costUnknown.
costUnknownBoolean!gainFloat- value − cost; null without both.
itemPullbookItem!valueFloat- Cardmarket's trend (else average) times quantity, converted from euros at the rate for the price's date; null without a price or a rate.
PullbookHoldingDay
dateISO8601Date!valueFloat!- What today's holdings were worth that day.
PullbookHoldingGroup
kindString!- sealed or singles (cards and bulk).
quantityInt!valueFloat!
PullbookHoldings
What you hold, what it cost and what it's worth today. Market values are estimates, not offers.
asOfISO8601Date- The newest price date.
costUnknownQuantityInt!costUnknownValueFloat!- Value of items from purchases marked costUnknown (in value, never in gain).
currencyString!gainFloat!- On items with both a value and a known cost.
gainPercentFloat- gain as a percent of what those items cost.
groups[PullbookHoldingGroup!]!history[PullbookHoldingDay!]!- Value of today's holdings on each day with prices.
-
Arguments
days: Int
paidFloat!- What you paid for items with a known cost.
ratesLoadedBoolean!- False until exchange rates are loaded: values are null and totals 0.
rows[PullbookHolding!]!- Most valuable first.
-
Arguments
kind: Stringsealed or singles.
unpricedQuantityInt!- Items with no market price (bulk, or not on Cardmarket), left out of value.
valueFloat!- Market value of everything with a price.
PullbookImport
An uploaded sales export. needs_mapping: its date, item and price columns weren't found by name, so call finishImport with a mapping (see headers and missingFields). running: it's being imported; read it again in a few seconds.
channelPullbookChannel!createdAtISO8601DateTime!createdCountInt!- Sales recorded.
duplicateCountInt!- Orders already imported, skipped.
errorCountInt!errors[ImportError!]!filenameString!headers[String!]!- The file's column names.
idID!mapping[ImportMapping!]!missingFields[String!]!- Required fields not mapped yet: sold_on, title, item_price.
overLimitCountInt!- Orders not imported because the plan's monthly sales were used up.
reviewCountInt!- Sold lines waiting to be matched (viewer.pullbook.reviewQueue).
rowsCountInt!statusString!- needs_mapping, running, done or failed (failed imports can be uploaded again: recorded orders are skipped).
PullbookItem
One line of a seller's inventory. cost is its share of the purchase's cost, split by market value; extraCost is what was spent on it alone (grading, say). Money is in the ledger's currency (Pullbook.currency).
cardCardconditionStringcostFloat!costBasisFloat!- cost + extraCost.
extraCostFloat!extraCostNoteStringgradeStringidID!kindPullbookItemKind!labelString!openedBoolean!- An opened sealed item: no longer inventory; see its pulls.
openedFromIdID- The sealed item this came out of.
printingPrintingpurchaseIdID!quantityInt!sealedProductSealedProductsoldBoolean!valueOverrideFloat- Your value per unit for splitting cost, on the Cardmarket (€) scale; null uses the market price.
PullbookPurchase
Something a seller bought. Its totalCost (price + shipping + tax) is split across its items.
costUnknownBoolean!- You marked it "I don't know what I paid": its amounts are 0.
createdAtISO8601DateTime!idID!items[PullbookItem!]!- Everything that came with it, including pulls from opened sealed items.
kindPullbookPurchaseKind!nameString!notesStringpriceFloat!purchasedOnISO8601Date!quantityInt!sealedProductSealedProductshippingFloat!sourceStringtaxFloat!totalCostFloat!unpricedItems[PullbookItem!]!- Items with no market price, weighted as an average item.
PullbookReport
costUnknownNetFloat!- Net from items with no known cost: in profit at a cost of 0.
groupPullbookReportGroup!inReviewInt!- Sales left out because an item is waiting in review.
rows[PullbookReportRow!]!totalPullbookReportRow!yearInt
PullbookReportRow
One group's settled sales. Amounts are in your ledger's currency.
costBasisFloat!- What the items that sold cost you.
costUnknownBoolean!- PURCHASE: it's marked cost unknown, so spent, costBasis and profit aren't real figures.
eventCostFloat- EVENT and MONTH: what the streams and shows cost.
inStockFloat- PURCHASE: the cost of what's left of it today.
keyString- The purchase or event id, a product key (card:…, sealed:…, bulk) or the month (YYYY-MM-01); null for sales with nothing to group by.
labelString!netFloat!- What the buyers paid, after fees and shipping.
profitFloat!- net − costBasis − eventCost. Items with no known cost count at a cost of 0.
quantityInt!salesInt!spentFloat- PURCHASE: what it cost in all, extra costs like grading included, whatever the year.
PullbookSale
One order. net = gross + shippingCharged − fees − shippingCost, in your ledger currency.
buyerStringchannelPullbookChannel!costBasisFloat!createdAtISO8601DateTime!eventPullbookEventexternalOrderIdStringfeesFloat!feesSourceString!- schedule, manual or csv.
grossFloat!idID!lines[PullbookSaleLine!]!needsReviewBoolean!netFloat!notesStringprofitFloat- null while a line is in review: its cost isn't known yet.
shippingChargedFloat!shippingCostFloat!soldOnISO8601Date!
PullbookSaleLine
One thing sold. proceeds is its share of the sale's net (split by price); profit is proceeds − cost basis.
candidates[PullbookItem!]!- Your unsold copies of this card, oldest first (for REVIEW lines).
cardCardcostBasisFloatidID!itemPullbookItempriceFloat!proceedsFloat!profitFloatquantityInt!saleIdID!statusPullbookSaleLineStatus!titleString!
PullbookTaxLot
One item sold: a summary of your records, not tax advice.
acquiredOnISO8601Date- null when it wasn't from your ledger.
costBasisFloat!costUnknownBoolean!- From a purchase marked cost unknown: costBasis is 0 and gain is the whole proceeds, so don't report them as they are.
descriptionString!gainFloat!proceedsFloat!quantityInt!soldOnISO8601Date!termString!- long (held more than a year), short, or unknown.
RedFlag
One sign that a card may be fake: what the photo shows against what the real card has.
confidenceFloat!expectedString!kindString!- e.g. hp, attack_name, nonexistent_card, font, energy_symbol, spelling, colour, back.
seenString!severityString!- strong or medium.
sourceString!- catalog (printed text vs our data), visual (photo vs the real card's scan), back, or measured.
SealedContent
One line of what's inside a sealed product.
accessoryKindString- sleeves, energy, damage_dice, coin, code_card, players_guide, …
cardCardlineTypeSealedLineType!printingPrinting- Set when the exact printing is known, e.g. a Pokémon Center-stamped promo.
productSealedProduct- For SEALED lines: the product inside.
quantityInt!setSet- For PACK lines: which set's packs.
textString- The source wording for this line.
SealedProduct
A sealed product: booster pack, box, Elite Trainer Box, tin, collection, case…
cardmarketProductIdIntcontents[SealedContent!]!contentsStatusContentsStatus!expectedValueExpectedValue!- What the contents are worth on average (packs at their set's per-pack EV, plus priced promos). Compare with price and msrp; note currencies.
-
Arguments
currency: Currency
idID!- ID of the object.
imageExternalImage- Product photo, hosted by TCGplayer (linked, not copied).
kindString!- booster_pack, sleeved_pack, booster_box, half_box, booster_bundle, etb, pc_etb (Pokémon Center ETB), blister_1, blister_3, checklane_blister, mini_tin, tin, display, build_battle, prerelease_kit, collection, premium_collection, ultra_premium_collection, deck, promo_pack, art_bundle, case
marketplaceLinks[MarketplaceLink!]!msrpFloatmsrpCurrencyStringmsrpSourceString- Where the MSRP comes from. Standard ETBs have no official MSRP; we use a major retailer's list price.
nameString!pricePrice- Latest Cardmarket price, when we could match the product: euros unless you ask for another currency.
-
Arguments
currency: Currency
regionRegion!releaseDateISO8601DatesetSettcgplayerProductIdIntupcString
Series
A run of sets, e.g. Scarlet & Violet.
nameString!sets[Set!]!slugString!
Set
An expansion or promo set.
cardsCardConnection!- Cards in collector-number order.
-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.
codeString!- Our set id: TCGdex's id, prefixed with asia: for Asian sets.
digitalBoolean!- True for Pokémon TCG Pocket sets: app-only cards with no physical printing or market price.
expectedValueExpectedValue!- Expected value of one booster pack at today's Cardmarket prices, in euros unless you ask for another currency.
-
Arguments
currency: Currency
externalIds[ExternalId!]!idID!- ID of the object.
legalitiesLegalities!localizedNames[LocalizedName!]!logoImagenameString!-
Arguments
locale: StringDefaults to the set's primary language.
packLayout[PackSlot!]!- Cards per slot in one booster pack (standard SV/ME layout unless the set differs).
printedTotalInt- The number after the slash on cards.
ptcgoCodeString- Code used by Pokémon TCG Online/Live, e.g. DAA.
pullRates[PullRate!]!- Per-pack odds by rarity, from published opening studies. Empty when none is on file.
regionRegion!releaseDateISO8601DatesealedProducts[SealedProduct!]!- Sealed products of this set (boxes, ETBs, tins…).
seriesSeriessymbolImagetcgplayerGroupIdInttotalInt- All cards including secret rares.
SlabVerification
Where to verify a graded slab's cert number with its grader, and whether the number is even possible for that grader. We don't look certs up ourselves: always check the grader's own page, since a fake slab can carry a real cert copied from another card.
certString!directLinkBoolean!- True when verifyUrl opens this cert; false when it's a form to fill in.
formatDescriptionStringformatValidBoolean- False when the number can't be one of this grader's certs (a red flag); null for an unknown grader.
graderString- PSA, CGC, BGS, SGC or TAG (null if unrecognised).
graderNameStringnoteStringverifyUrlString- The grader's verification page.
Species
A Pokémon species (one National Pokédex number). Regional, Mega and Gigantamax variants are its forms.
cardsCardConnection!- Cards featuring this species, newest sets first.
-
Arguments
after: StringReturns the elements in the list that come after the specified cursor.before: StringReturns the elements in the list that come before the specified cursor.first: IntReturns the first _n_ elements from the list.last: IntReturns the last _n_ elements from the list.includeCameos: BooleanAlso include cards where it only appears in the artwork (mostly Trainers).
evolutionLine[Species!]!- Every species in the same evolution chain, by Pokédex number.
evolvesFromSpeciesevolvesTo[Species!]!forms[Form!]!generationIntgenusString- e.g. Flame Pokémon.
idID!- ID of the object.
isLegendaryBoolean!isMythicalBoolean!localizedNames[LocalizedName!]!- Name in every language we know.
nameString!- Name in the requested locale, falling back to English.
-
Arguments
locale: String
nationalDexInt!- National Pokédex number.
slugString!- PokéAPI identifier, e.g. mr-mime.
Stat
nameString!- hp, attack, defense, special-attack, special-defense, speed.
valueInt!
TypeModifier
A weakness or resistance.
typeString!valueString- e.g. ×2, -30.
UsageDay
dayISO8601Date!requestsInt!
Viewer
The account making this request, its plan limits and usage.
credentialString- What authenticated this request: an API key's name, or the connected app's name.
dailyLimitInt!- Requests a day, shared by all the account's keys and connected apps.
emailString!perMinuteLimitInt!planString!priceAlertLimitInt!priceAlerts[PriceAlert!]!pullbookPullbook!- Your Pullbook seller ledger (created on first use).
usage[UsageDay!]!- Requests per day for the last 30 days, oldest first.
usageTodayInt!- Requests counted today (UTC).
visionPerDayInt!- Photo checks (identifyCard, assessCondition) a day.
visionRemainingInt!visionUsedTodayInt!webhookEndpointLimitInt!webhookEndpoints[WebhookEndpoint!]!
Wear
Measured whitening along one edge or in one corner.
kindString!- edge or corner.
locationString!- left, right, top, bottom, top_left, top_right, bottom_right, bottom_left.
severityString!- none, light, moderate, heavy or not_measurable.
whiteningFloat- Share of the band that is worn white; null where the border is itself white or silver.
WebhookDelivery
One POST to a webhook endpoint, retried up to 5 times with backoff.
asOfISO8601Date- The price date that triggered it.
attemptsInt!createdAtISO8601DateTime!deliveredAtISO8601DateTimeerrorStringeventString!idID!- Also sent as the X-RarityDB-Delivery header.
payloadJSON!responseCodeIntstatusString!- pending (still retrying), succeeded or failed.
WebhookEndpoint
An https URL that receives signed event POSTs. The signing secret is only shown when it's created or rotated.
consecutiveFailuresInt!createdAtISO8601DateTime!deliveries[WebhookDelivery!]!- The 20 most recent, newest first.
failingSinceISO8601DateTime- Set after 5 failed deliveries in a row; cleared by the next success.
idID!urlString!
WebhookEndpointWithSecret
secretString!- Verify X-RarityDB-Signature with this. Shown only now; rotate it if lost.
webhookEndpointWebhookEndpoint!
Inputs
CardFilter
All given fields must match.
name: String— Case-insensitive substring of the card name.setCode: Stringregion: Regionsupertype: SupertypenationalDex: Int— Cards featuring this Pokédex number.type: String— Energy type, e.g. Fire.rarity: Stringillustrator: StringregulationMark: StringstandardLegal: Booleandigital: Boolean— false = physical cards only; true = TCG Pocket only.
ImportMappingInput
field: String!— One of order_id, sold_on, title, sku, set_name, number, quantity, item_price, shipping_charged, shipping_cost, fees, buyer, event.headers: [String!]!— The column(s) holding it; several fee columns are added up.
PullInput
A card that came out of a purchase.
cardCode: String!printingKey: String— Which printing, when the card has several (see Card.printings).quantity: Int
SaleLineInput
One thing sold: an inventory item (itemId), a card (cardCode: your oldest unsold copy is used), or just a title (it waits in review).
itemId: IDcardCode: Stringtitle: Stringquantity: Intprice: Float!— What the buyer paid for this line, before shipping.
Enums
AuthenticityVerdict
Never 'genuine': a photo can't prove a card is real.
LIKELY_FAKE— Strong evidence the card is counterfeit (see redFlags).NO_RED_FLAGS— Everything we could check matches the real card. Not proof that it's real.CANT_TELL— Not recognised, nothing to compare with, too little could be read, or a single medium red flag (not enough on its own).
CardOrder
RELEASE_DATE_DESC— Newest sets first, then card number.RELEASE_DATE_ASC— Oldest sets first, then card number.NAME— Alphabetical by card name.
ContentsStatus
VERIFIED— Checked by hand against the product listing.PARSED— Read automatically from the retailer description; quantities are reliable, promo identity usually missing.UNPARSED— We know the product but not its contents.
Currency
A currency to show prices in. Cardmarket prices are euros; others are converted at the European Central Bank's reference rate for the price's date.
USDEURGBPCADAUDJPY
FormKind
DEFAULTREGIONAL— Alolan, Galarian, Hisuian or Paldean form.MEGAGMAX— Gigantamax form.OTHER
IdentificationStatus
MATCH— One card stands out. `printing` is set when the visible cues narrow it to one printing.AMBIGUOUS— Several cards are plausible; see `candidates` and `hints`.NO_MATCH— No card in the catalog fits what was read.
PriceAlertCondition
TREND_ABOVE— Fires the day the Cardmarket trend price rises to the threshold (EUR) or above.TREND_BELOW— Fires the day the Cardmarket trend price falls to the threshold (EUR) or below.CHANGE_ABOVE_PERCENT— Fires each day the trend price moves up or down by at least the threshold, in percent.
PriceProvider
Third-party price APIs you can query with your own key, sent as an X-Provider-Key-<Name> header (e.g. X-Provider-Key-Justtcg). We never store the key.
JUSTTCG— JustTCG: raw prices by condition and printing (USD).POKEMONPRICETRACKER— PokemonPriceTracker: TCGplayer market price per printing plus graded eBay sales (USD).
PriceSource
CARDMARKET— Cardmarket (EU) daily price guide, in EUR.
PullbookChannel
WHATNOT— Whatnot: 8% of the item price + 2.9% of price and shipping + $0.30.EBAY— eBay: 13.25% of price and shipping + $0.30 ($0.40 over $10).TCGPLAYER— TCGplayer: 10.75% of the item price + 2.5% of price and shipping + $0.30.IN_PERSON— A card show or local sale: no fees unless you enter them.OTHER— Anywhere else: no fees unless you enter them.
PullbookEventKind
STREAM— A live stream (Whatnot, TikTok…).SHOW— A card show.
PullbookItemKind
CARD— A card (a hit), possibly several copies.BULK— A count of bulk cards.SEALED— A sealed product; once opened its cost passes to its pulls.
PullbookPurchaseKind
SEALED— A sealed product from the catalog (pass sealedProductId).LOT— A mixed lot or collection.SINGLES— Singles bought as they are.BREAK— A spot in someone else's break.
PullbookReportGroup
PURCHASE— Each purchase: what it cost, what sold from it, and what's left.EVENT— Each stream or show, minus what it cost.PRODUCT— Each card, sealed product or bulk.MONTH— Each month, minus that month's stream and show costs.
PullbookSaleLineStatus
MATCHED— Sold from your inventory; its cost basis is frozen.REVIEW— Waiting to be matched to an item (resolveSaleLine).UNMATCHED— Not from your ledger; the cost basis was entered by hand.
Region
INTERNATIONAL sets are printed in English and European languages; ASIA sets are Japanese, Korean, Chinese, Indonesian and Thai releases with their own set lists.
INTERNATIONALASIA
SealedLineType
PACK— Booster packs of one set.CARD— A specific card, usually a promo. `card` is set when we know exactly which.SEALED— Another sealed product, e.g. the bundles inside a case.ACCESSORY— Sleeves, dice, coins, energy, code cards and the like.VARIABLE— Contents that vary, e.g. assorted packs from several sets.
Supertype
The three kinds of card.
POKEMONTRAINERENERGY
Unions
Entity
Anything search or resolveId can return. One of: Card, Set, Species, Printing, SealedProduct.