How we price
Every price here is a completed sale — never a seller's ask. This page holds every rule between a raw sold listing and the number, and every point where we refuse to print one. For the live audit of what those rules cover, see how accurate are we?; when a published number changes, corrections.
What counts as a sale
Fixed-price, paid, non-suspect — nothing else. We collect completed sales from eBay US; snapshot sources: ebay-us-sold, ebay-us-sold-single, ebay-us-sold-variation. A green "Sold" badge is not proof a price changed hands, so three listing kinds that look like sales never enter:
- Best-Offer-accepted sales. eBay shows the original asking price, not the private amount actually paid — counting it would let an ask masquerade as a sale.
- Unpaid or cancelled "sales." A number nobody paid is not a market price.
- Shill and manufactured run-ups. A bid meant to set a reference, not to buy, is quarantined before anything is priced.
So our count of verified sales can be lower than the sold tally eBay itself shows. We are declining the sales we cannot stand behind, not missing them, and where that thins a card's sample the card page says so (more: is that eBay sold price even real?). Asking prices appear only in a clearly separated "what sellers are asking" strip — never as the headline.
Source-backed sales keep their evidence
Each published sale keeps its source identity and durable receipt ID. When the marketplace provides a public listing URL, that link survives to the chart and sales table too. A legacy row without authoritative source metadata is withheld from a receipt-complete table rather than presented as linked evidence.
From sales to a price
A card's headline is a US completed-sale median estimate for that printing. The primary estimator is a recency-weighted median over the trailing 30-day kept-sale sample; when that cannot be formed, the fallback is the plain median of the selected 7d, 30d or 90d window. Every displayed sample count, range, sale date and receipt set belongs to that estimator's named price basis — never to a different selection window. Before either median, every sale passes:
- Bootleg & non-card guard — counterfeit code families, accessories and lots are dropped.
- Outlier fence — sales outside 4× of the sample median are discarded.
- Spike quarantine — a lone sale far above the trailing median is held back for days before it can count.
- Dedup — the same sale observed twice is one sale; we never manufacture sample depth.
- Retraction voiding — a "sold" listing that reappears active (non-payment / relist) never settled, so it is voided.
Confidence — sample depth, never hidden
- HIGH — 10 or more completed sales. Shown as a plain price.
- MEDIUM — 4–9 completed sales. Shown as a plain price.
- LOW — 1–3 sales. Never shown as a bare number, anywhere — not in tables, search, share images or the API; only as "~$X — rough number, only a few sales".
- NONE — no verified sales. The page says "no verified solds — tracking live" rather than inventing a figure.
The never-bare rule is enforced in code: the build fails rather than render a thin price plain. Recency is a separate FRESH / STALE / RECENCY UNKNOWN axis — a deeply-sampled card can still be stale, and you see both facts, never a blended score.
Freshness has a contract
The site rebuilds from a fresh snapshot daily. A snapshot older than 26 hours puts a stale banner on every page rather than quietly serving yesterday's market as today's. The snapshot's timestamp is printed in the footer of every page (“Data last updated”).
Dates, honestly
A real sale time is "sold on". A time we merely observed the sale is "last verified". We never fabricate a sale date, and never build a price-movement claim ("up 20% this week") on an inferred one. The same restraint covers what we don't show at all: graded values and pack expected-value stay absent until the sold data exists. They are not guessed at.
What did we throw away?
Every sale we decline is counted, not just dropped — an honest price site should be able to answer what it excluded and why. Totals below are summed across every tracked printing's every bucket in this snapshot; a reason at zero means it exists as a rule but has not fired on the current corpus.
offer-masked— 1,389foreign-market— 851lot— 318cross-market— 2own-store— 1bootleg— 0retracted— 0self-listing— 0unpriced— 0unresolved— 0
Full rule-by-rule detail (what each reason means, and the exact check behind it) lives in the engine's own design notes; the counts here are the live, generic tally — a new exclusion reason appears here automatically, with no page change required.
When we get it wrong, we say so in public
Corrections and methodology changes that moved a published number are logged, dated, on corrections — including the calls we got wrong first. A sale we recorded wrongly is never rewritten or deleted: it is cancelled out by a dated entry naming it, its reason and its evidence, and undoing that means adding another entry, never erasing one. Spotted a bad price? contact@palworldprices.com reaches a person.
Why not just eyeball eBay sold listings? A raw sold search mixes every printing — base, SP, SSP at 10× the price — with lots, foreign-market listings and proxies. We do that separation for every card, and publish source-backed receipt IDs plus public listing links when available. Prefer to follow along? Every card and set publishes an RSS/JSON feed of new sales, free, no account.
What we measure about you
The same honesty rule points at ourselves. This site keeps no account, sets no cookie, and loads nothing from any other company — no analytics SDK, ad tech, social pixel, or third-party CDN. Nothing about you leaves this domain, so nothing you do here can be joined to anything you do anywhere else.
We count nine anonymous actions on our own server: a card page read, a chase-tier card page read (the tier only, never which card), a receipt clicked, a search submitted, a card starred, a guide read, a feed opened, the feedback form opened, the collection value chart viewed. Each arrives as the action's name and nothing else — no card, no search text, no page address, no referrer, no stored IP, no fingerprint, no clock time finer than the day. It goes straight into a daily total, so there is no record of you to look up, hand over, or lose.
One extra word rides along: whether this browser is here for the first time, coming back, or has been coming back for three weeks or more. That is judged from a short list of visit dates your own browser keeps for four weeks and never sends us; two people who visited on the same days store byte-identical lists. Clearing your browser data erases it. We measure it because a price tool is graded on whether people come back, and we would rather grade ourselves on a real number than a flattering one.
Opting out takes no button. Do Not Track or Global Privacy Control in your browser means we send and store nothing. Browsing with JavaScript off does the same, and every page works fully without it. Either way the site behaves identically.