How PCR works

Where the data comes from, how often it refreshes, and the things the site genuinely cannot do.

Data sources

Pricing data comes from eBay's official APIs. Active listings and asking prices come from the Browse API. Recent sold prices come from the Finding API. Both are queried per prospect, per card type.

Stats come from Fangraphs minor league pages and from MLB.com's prospect stat feeds. These are scraped or fetched on a daily schedule and stored in PCR's database.

The prospect ranking is a composite of three sources: MLB Pipeline (top 100, scraped twice for stability), Fangraphs Top 300, and Baseball America Top 100 when available. Each prospect's composite rank is the average of their rank in whichever sources cover them. The catalog rebuilds daily.

The prospect catalog

The site tracks 300 prospects at any given time. The catalog is dynamic, not a fixed list. When a prospect debuts in the majors, gets traded, or drops out of the consensus top 300, they roll off. When a new player enters the top 300 (a new draft class, an international signing, a breakout), they get added.

For each prospect, PCR maintains:

Refresh cadence

The exact schedule of automated refreshes:

What How often Notes
Top 100 prices (active listings) Every 6 hours Four snapshots per day, split into batches to stay under API rate limits.
Ranks 101–300 prices Once per day Runs in the morning, batched in 9 parts.
Minor league stats Once per day Pulled around 11:30am Eastern.
Prospect rankings Daily Composite rebuilds daily at 11:10am Eastern to catch source updates.
Sold listings (historical sales) Once per day Last 90 days of sold listings for each tracked card.

Every page has a "last updated" timestamp visible at the bottom so you can confirm freshness.

Card parser and parallel classification

eBay listing titles are messy. The same Bowman Chrome 1st Bowman auto can be listed as "2024 Bowman Chrome Prospect Auto," "2024 BCP Chrome Auto," "Bowman Chrome 1st Auto," and a hundred other variations. PCR's parser does its best to normalize these into a consistent set of card types and parallels.

The classification hierarchy:

  1. Product: Bowman Chrome, Bowman's Best, Pro Debut, Topps Chrome, etc.
  2. Card type: 1st Bowman auto, regular auto, base card, insert.
  3. Parallel: base refractor, atomic, gold (/50), orange (/25), red (/5), superfractor (1/1).
  4. Grade: raw vs PSA 10, PSA 9, BGS 9.5, SGC 10.

Each card is given a single canonical bucket. Listings that don't match a recognized pattern are dropped from the price calculation so they don't pollute the average.

Verdict labels: underpriced / fair / overpriced

The verdict is a single label per prospect that compares two percentile ranks:

If the gap between the two is meaningfully positive (price is well below performance), the label is underpriced. If it's meaningfully negative (price is well above performance), the label is overpriced. The middle band is fair. The thresholds are intentionally conservative so the label doesn't change every refresh.

To be clear: this is a math observation about the data PCR has. It is not investment advice. Cards can be cheap because the player is injured, has off-field issues, or is fading without it showing up in stats yet. The label is a starting point for your own research, not the answer.

Known limitations

The things the site can't currently do well, kept here so you know what to discount.

Small sample on low-ranked prospects. A prospect ranked 250 might only have two or three active listings of a specific card type at any moment. The displayed average is mathematically real but can swing a lot based on a single new listing. PCR shows sample size next to every price so you can judge confidence yourself.
Parser edge cases. The classifier sometimes mis-tags cards. The known active case is some IP-signed base cards getting bucketed as 1st autos when the seller titles them ambiguously. The team is filtering these out where possible, but the fix is ongoing.
Listings are not sales. Asking prices on active listings are what sellers want, not what buyers will pay. PCR cross-checks against the recent sold prices when available, but for cards that haven't sold recently, the active listing average is what's displayed.
No condition grading for raw cards. A raw card can be NM/Mint or scuffed to hell, and PCR can't tell from a listing photo. Raw prices reflect a blend.
International signings and new draftees lag. If a player just got drafted or signed and hasn't been added to the consensus rankings yet, they won't appear in the catalog. PCR refreshes the list daily to catch these as fast as possible.

If you've spotted something wrong, please tell me. The site only stays honest if collectors flag the mistakes.

Last updated: 2026-05-16