Methodology: how Deal Score and Sealed EV are computed
Pullnomics has one rule: a listing is a deal only when its shipping-inclusive price sits well below an external market price, never because a seller says so. This page shows the arithmetic, the thresholds, the data behind it and where it falls short. The thresholds in the tables are read from the code that runs the site, so they are what the feed applies; some figures in the text are written out by hand.
Deal Score
Every eBay listing we ingest goes through the same five steps: read the title, identify the card or sealed product, look up the TCGplayer market price, read the condition (a card is scored only when it is stated as Near Mint), and score the landed price against the market price. The seller’s own “was $X” markdown is ignored entirely.
landed = price + shipping (calculated shipping → assume $4.99, lower confidence) discount = 1 − landed / market raw = 100 × clamp(discount / 0.50, 0, 1) Deal Score = raw × (0.5 + 0.5 × confidence) × format weight
A 50% discount earns the full raw score and smaller discounts scale linearly. Confidence then squeezes the range: at 100% confidence you keep the raw score, at 50% you keep three quarters of it. Auctions carry a format weight of 0.7, partly because the current bid is not the final price and partly because eBay pays a commission on an auction only when the bid is placed within 24 hours of the click and the auction is won within 10 days; fixed price and Best Offer listings carry 1.0. Before any of that, a listing must clear every qualifying rule below or it scores 0 and never enters the feed:
| Rule | Threshold | Why |
|---|---|---|
| Minimum discount | 12% below market | Less than that is noise between two price sources. |
| Minimum landed price | $4.00 | Fees and shipping dominate; not worth a click. |
| Condition | stated Near Mint (cards) | The market price is a Near Mint price and the site has no sourced price for a played copy. |
| Minimum market price | $5.00 | Sub-$5 baselines are too noisy to compare against. |
| Minimum confidence | 50% | Below this we are guessing which card it is. |
| Suspicious floor | landed under 10% of market | Almost always a mismatch or a scam, so rejected on purpose. |
| Below every TCGplayer listing | landed under 65% of TCGplayer’s lowest ask | The lowest ask is the cheapest copy for sale in any condition, so a Near Mint copy far under it is evidence against the listing. The first two listings to score 75 or more after the October 9, 2026 condition change were not the card their titles named; they sat at 55% and 58% of the lowest ask. An auction’s current bid is held to the same line, with no claim about the listing. |
| Lowest listing above market | TCGplayer’s lowest ask over 10% above its market | The market is a sale nobody is repeating; the two figures disagree about what the item costs. |
| Market above every listing | TCGplayer’s market over 10% above its highest ask | A discount measured from it can still cost more than any copy TCGplayer offers. |
| Market far above the middle listing | TCGplayer’s market over 25% above its middle listing | At that gap a listing 12% under market still costs more than 10% above the middle copy TCGplayer lists. One very dear listing can hide this from the rule above. |
| Deep discount | 40% or more below market needs confidence above 85%, 70% or more above 95% | A very large discount is itself evidence of a wrong match. |
| Presale | any product not released yet | Its price is a presale price, not a market a discount can be measured from. |
| Cheaper look-alike | another English card with the same name, in another set, of the same Special Illustration Rare or Illustration Rare rarity or with the same card number and artist (a reprint), or the same card filed twice by TCGplayer, priced under 40% of this card (and at least $5.00) | The title cannot show which of the two is for sale. On October 11, 2026, two listings titled and described as the Surging Sparks Pikachu ex 238/191 showed the 30th Celebration Pikachu ex #149 and #150 in their photos, cards with a market about a fifth of its price. Such a card gets no deals, and its page says what to check in the photos. |
Scores of 75 and above are labelled hot, 50 to 74 good. Worked example: a card with a $42.10 market, listed Near Mint at $24.00 plus $5.00 shipping. Landed $29.00; discount 31%; raw score 62; at 90% confidence the Deal Score is 59. The same listing marked Lightly Played, or with no condition stated, gets no score.
Condition
Only a card listing whose condition is stated as Near Mint is scored. The TCGplayer market price the site receives is a Near Mint price, and there is no sourced price for a played copy, so Lightly Played, Moderately Played, Heavily Played and Damaged listings, and listings that state no condition, are shown without a Deal Score. Until October 8, 2026 they were scored against fixed shares of the Near Mint market (LP 85%, MP 70%, HP 50%, Damaged 35%, not stated 90%). Those shares had no source, and on vintage cards they made a played copy look cheaper than it was: on October 4, 2026 Base Set Charizard Lightly Played came to $802.85 by the share against TCGplayer’s own Lightly Played market of $519.12.
In the deal feed, condition comes from words in the title such as NM, LP or “played” (certainty 0.7), otherwise from eBay’s own condition field, where Ungraded or New counts as not stated (0.35) and Used as Lightly Played (0.4). A listing graded there or in the title is not scored. eBay’s card-condition descriptor (Near Mint or Better, Lightly Played and so on) wins over all of these at certainty 1.0, but the search results the feed collects do not carry it. Since October 9, 2026 the feed fetches the full listing once, after each scan, for card listings whose condition reads as not stated or as Near Mint from the title and that would qualify if eBay said Near Mint (up to 40 a scan, best first), and scores them on the descriptor when the listing carries one; a listing read as played from its title is not fetched. Deal Check reads the descriptor from the listing it fetches. Sealed products have no condition.
Confidence
Confidence is one number from 0 to 1 answering a single question: how likely is it that this comparison is right? It starts as the match confidence, which depends on how the title was identified: 0.95 when set, number and card name all agree; 0.9 for number plus printed total plus name; 0.75 for number and name without a recognisable set; 0.7 for set and number when the title gives no card name or only the species; 0.8 or 0.6 for a reprint several sets share (0.8 when the printed total matches); 0.6 for a bare name inside a named set; and 0.85 or 0.7 for sealed products. It is then multiplied by condition certainty (0.6 + 0.4 × certainty) and by these penalties, each applied only when it fits:
- Shipping unknown (calculated at checkout): × 0.9
- Wide market spread (TCGplayer high minus low more than three times the market price): × 0.85
- Market price under $10: × 0.9
- Seller with fewer than 10 feedback: × 0.8; feedback below 95%: × 0.8
- Title implies more than one item: × 0.7
Labels: high at 80% and above, medium from 60%, low below that. Under 50% the listing is not called a deal at all.
Exclusions
Before matching, every title is screened for patterns that make a single-item price meaningless. Any one of these drops the listing:
- Proxies, custom, replica, fan-made and orica cards
- Digital codes and TCG Live / online code cards
- Lots, bulk, “bundle of”, “collection of” and large quantities
- You-pick and choose-your-card listings, where the price belongs to no particular card
- Random, mystery, repack and grab-bag listings
- Merchandise: stickers, metal cards, coins, pins, figures, plush, binders, sleeves, deck boxes, playmats
- Display-only items, playsets and 2x/3x/4x multiples, empty packaging, opened, resealed or weighed product, jumbo cards, pre-orders
Non-English prints are not excluded but are not matched: the matcher reads English listings only. Japanese sealed listings were matched for a short time and then left out, because their discounts measured the Japan-to-US price gap rather than bargains. Graded cards are matched but not scored, so they never enter the feed; Deal Check shows a pasted one with its grade and no score (see limitations).
Data sources
Market prices: TCGplayer market, low, mid and high prices for English and Japanese Pokémon and English One Piece and Riftbound card variants and sealed products, fetched once a day through TCGCSV after its 20:00 UTC refresh. The first price seen for each card variant and product is written to a price-history table, and a new row is added whenever the price has moved by at least 2% or $1 since the last recorded value (prices under $1 are recorded once, and again when they reach $1). That table drives the 180-day charts on card and product pages, the price movers and the monthly reports, so a historic figure on this site can differ from that day’s exact market price by less than 2% or $1.
One price per card: a card has a price for each printing, and wherever the site shows a single figure for it (the card page, lists, search, set statistics, guides, sealed EV and the price a listing is scored against) that figure is its standard printing. A Common, Uncommon or Rare is valued at its regular card and anything rarer at its holo; for older cards Unlimited comes before 1st Edition. Special foil patterns that TCGplayer sells as separate products and names as patterns (Poké Ball, Master Ball, Energy Symbol) are shown as their own rows on the card page and never stand in for the card. When TCGplayer stops reporting a price for a printing, that printing shows no current price rather than its last one; the last one stays in the history chart.
Listings: the eBay Browse API, polled every 3 hours across the Pokémon singles and sealed categories, newest first, within a budget of about 42 calls per run under eBay’s daily call quota. Up to 40 card listings a run are also fetched in full once, to read eBay’s condition descriptor (see Condition). Up to 60 active deals a run, cards and sealed, are also fetched in full to read the seller’s item specifics (language, card name, number and set), and their price and availability are brought up to date. Since October 9, 2026 the site compares those with its own match and counts where they disagree; it does not yet act on them. Active deals whose listing has not been seen for two hours are re-checked after each scan, oldest first, one listing per call and up to 60 a run, and a deal not confirmed as still listed for 15 hours is taken down; sold or ended items expire immediately and listings unseen for seven days are removed. Every eBay link on the site is an affiliate link; the score never depends on it.
Catalog: English Pokémon sets, cards, numbers, rarities, artists and Pokédex numbers from the public pokemon-tcg-data archive, keyed to TCGplayer product ids so prices and cards line up. Sealed products, Japanese Pokémon, One Piece, Riftbound, and English sets the archive does not list come from TCGplayer’s catalog via TCGCSV; Pokémon species names come from PokéAPI. Browse it under Sets, Pokémon and Artists.
Images: English card images, set symbols and set logos as the archive lists them, from the Pokémon TCG API image host and Scrydex; every other card image and every sealed product image from TCGplayer’s image host; listing photos from eBay. All card art belongs to its owners (see the footer).
Sealed EV
The Box value board answers a different question: not “is this listing cheap” but “what is inside the box worth”. Expected value is computed per pack from the set’s pull rates and its current singles prices, then multiplied by the pack count.
EV(pack) = Σ over hit rarities (1 / packs per hit) × mean TCGplayer market price of that rarity in the set
+ baseline for the guaranteed rare, reverse-holo and common slots
EV(product) = packs × EV(pack) (36 booster box · 9 Elite Trainer Box, 8 before Scarlet & Violet · 6 bundle · 1 pack)
EV ratio = EV(product) / TCGplayer market price of the sealed product
Break-even = the product price at which EV ratio = 1.0EV ratio is the one name this site uses for card value per dollar: an EV ratio of 0.45 means the cards in the product are worth 45 cents on average, at TCGplayer market prices before any fee, for every dollar of its market price. EV (gross) is that card value in dollars. Card value counts the booster packs only, never a promo card or other extra in the product.
We use the mean, not the median, for hit rarities because EV is an expectation. The chase share tells you how skewed that expectation is: the fraction of the EV from every tier with its own rate (Double Rares and regular V cards included) that comes from Special Illustration Rare, Hyper Rare, Secret, separate alternate-art and similar tiers. When it is high, the median box lands well under the EV and a few boxes carry the average. P(≥1 hit) is the probability of at least one hit anywhere in the product, from the per-pack odds. A hit is a card from any tier with its own rate except Double Rares, regular V, VMAX and VSTAR cards and a tier every pack holds, so besides Illustration Rares and rarer it includes special tiers such as Paldean Fates’ Shiny Rares (1 in 4 packs), Trainer Gallery cards and ACE SPEC Rares.
The baseline values the common, uncommon and rare slots at each card’s regular printing, with every card capped at $1.00 (commons and uncommons) or $5.00 (rares), and in gross EV each ordinary common and uncommon slot counts at half the mean of those capped prices (a convention, shown as “of which bulk” on each product page). Without the cap, sets that print a pattern-foil parallel of every common, such as Black Bolt and White Flare, would count a $20 parallel as if it filled every common slot. Those parallels have no published pull rate, so they are left out of EV entirely, which makes the figure for those sets conservative.
Companion subsets come out of the same packs, so they count. Crown Zenith’s Galarian Gallery, Shining Fates’ Shiny Vault and the Trainer Galleries of Brilliant Stars, Astral Radiance, Lost Origin and Silver Tempest are listed as separate sets on this site, but their cards are included in the parent set’s EV at the subset’s own published rate. Where the source gives a single rate for “any Trainer Gallery card” (Brilliant Stars and Lost Origin), the bucket is valued at its median card price instead of the mean, because the expensive V, VMAX and gold cards are rarer than the character rares and an even mean would overstate the result.
Pack counts are checked, not assumed. A product gets an EV only when two things are known: how many packs the US product holds, and that every one of them is a pack of the set it is listed under. An Elite Trainer Box holds 9 packs from Scarlet & Violet on, 8 in the Sword & Shield main sets before it, 10 in Crown Zenith, Shining Fates, Champion’s Path, Pokémon GO and Hidden Fates, and a Pokémon Center box two more. Tins and premium collections have no standard size (the ones checked hold 3 to 6 and 5 to 30 packs) and many hold packs of several sets. Each one carries an EV only after its contents were checked against a published description of the US product: the official listing where it could be opened, otherwise a news site that reproduces it, or Bulbapedia. Tins and collections that mix sets carry none. A sealed case carries an EV in the three sizes a distributor’s own order sheet states: 6 booster displays, 10 regular Elite Trainer Boxes or 144 sleeved boosters. Every other case carries none, because nobody states its size: a Pokémon Center Elite Trainer Box case, a retailer’s exclusive case, and booster bundle cases, where sellers call three different things a case (10 bundles, 25, or 60).
Net EV is what you would clear by selling every worthwhile pull: a 15% marketplace fee on each sale, $1.00 shipping per card, and any rarity whose mean price is under $1.00 valued as bulk at two cents. The baseline slots are halved again for the same reason (so in net EV the common and uncommon slots count at a quarter of their capped mean). Net EV is the number to use if you plan to open and sell; gross EV is the number to use if you keep the cards.
Pull-rate sources
Pull rates (packs per hit, by rarity) come from the evolvault.com pull-rate calculator, which aggregates TCGplayer’s opening datasets of 1,000 to 8,000 packs per set together with community counts. We take the midpoint of each published range (fetched 15 September 2026; 30th Celebration, released the next day, was added after its release) and cross-check the headline figures against PokeBeach (Ascended Heroes Special Illustration Rare 1 in 70) and TCGplayer’s own articles (Pitch Black SIR 1 in 80, Mega Hyper Rare 1 in 1,081); all three put those tiers more often than the midpoints used here (1 in 88.5, 1 in 102.5 and 1 in 1,315). Where the source lists no rate for a rarity a set does print (the Double Rares of Surging Sparks, the gold cards of Chilling Reign), that one line uses the era average below and is marked era average. Sets the source has no dataset for fall back to an era average and are flagged era default on the board:
| Era | Default odds (1 hit per N packs) |
|---|---|
| Mega Evolution (ME) | Double Rare 1:5 · Ultra Rare 1:12 · Illustration Rare 1:9 · Special Illustration Rare 1:85 · Mega Hyper Rare 1:1200 · Mega Attack Rare 1:40 |
| Scarlet & Violet (SV) | Double Rare 1:6 · Ultra Rare 1:15 · Illustration Rare 1:12.5 · Special Illustration Rare 1:80 · Hyper Rare 1:140 · Ace Spec Rare 1:20 · Shiny Rare 1:4 · Shiny Ultra Rare 1:12 |
| Sword & Shield (SWSH) | Rare Holo V 1:8 · Rare Holo Vmax 1:22 · Rare Holo Vstar 1:30 · Rare Ultra 1:30 · Rare Secret 1:100 · Rare Rainbow 1:100 · Trainer Gallery Rare Holo 1:9 · Radiant Rare 1:22 · Amazing Rare 1:19 |
Every set with published counts has a page listing each tier the source prints, the average hits in a box and the odds of one named card: pull rates by set.
For five Sword & Shield sets (Chilling Reign, Evolving Skies, Astral Radiance, Lost Origin and Silver Tempest) the source counts alternate-art cards as tiers of their own. The card database has no mark for an alternate-art card: it files an alternate-art V under Rare Ultra and an alternate-art VMAX under Rare Rainbow. So the site keeps its own list of those 44 cards, taken from TCGplayer’s product names and checked against the number of cards the source counts in each tier. The EV gives the listed cards the alternate-art rate, and the regular full arts and rainbow cards share their own tiers’ rates among themselves. Silver Tempest’s full-art Trainers, which the source also counts apart, are handled the same way. Every daily run compares the list with the catalog again; if they disagree, that set keeps its last figures until the list is fixed. Within a tier every card is still taken as equally likely.
Per-set overrides can be stored when better counts are published, and EV is recomputed every day after the price sync so it follows the singles market.
Limitations
- No eBay sold data. The baseline is TCGplayer’s market price. eBay clearing prices can sit above or below it, especially for high-end cards.
- No graded prices. A graded slab is a different product with its own price, which depends on the grade and the company and can be above or below the raw price. We have no graded baseline; every card price on the site is a raw (ungraded) Near Mint market price.
- Shipping is estimated when the seller uses calculated rates ($4.99 to a US address). International buyers pay more; the confidence penalty is the only signal.
- Auctions can still rise. The 0.7 format weight and the auction label flag the risk; they do not predict the closing price.
- Matching is title-based. Reprints, promos and similarly numbered cards occasionally produce a wrong match. Confidence is the safety valve, not a guarantee.
- Market prices refresh once a day, so a sudden spike or crash can be up to 24 hours stale in our baseline.
- Sealed EV is an average. A real box has enormous variance, era-default rates can be badly off for sets with an unusual rarity mix, and there is no Monte Carlo band yet.
- English and Japanese Pokémon cards and English One Piece cards only. Japanese prices are US TCGplayer market prices for the Japanese printings and are kept on separate pages from English prices. Japanese sealed products have no expected value, because their box and pack configurations differ and the site has no Japanese pull-rate data. One Piece sealed expected value is a separate model, covering main booster sets from OP-06 on, with its sources listed on each modelled product’s page. Other languages have no baseline here.
Reporting a bad match
If an eBay button opens the wrong card, a price looks wrong, or a match is off, send the page URL and what it should have been through the contact page. When a pattern is involved we add a rule so the same mistake does not recur.