PSA Population Data API

Population by grade, gem rates, and per-card freshness for 24,000+ English Pokémon cards. Keyed by the same product IDs PriceCharting uses, so there's no matching step.

One endpoint, everything graded

GET https://www.pokeinvest.io/api/population/961147
X-API-Key: your_key

{
  "db_id": "961147",
  "name": "Mewtwo GX #78",
  "set_name": "Pokemon Shining Legends",
  "population": {
    "psa_10": 2628, "psa_9": 6132, "psa_8": 3806,
    "psa_7": 792,  "psa_6": 272,  "psa_5": 162,
    "psa_4": 89,   "psa_3": 63,   "psa_2": 28, "psa_1": 97,
    "total": 14072
  },
  "gem_rate_pct": 18.68,
  "psa_last_updated": "2026-01-04"
}
  • IDs you already have — the card ID is the PriceCharting product ID, and it's in every PokeInvest card page URL.
  • Honest freshness — populations refresh era by era; every response carries that card's last-updated date so you always know what you're looking at.
  • Simple errors — 401 bad key, 404 unknown card, 429 past your monthly cap. Nothing exotic.
$29/month

10,000 calls a month · resets on the 1st · cancel anytime

Card checkout via Stripe. Your key arrives by email within a minute of paying.

Questions

How fresh is the population data?

Populations are rescraped era by era. Current sets refresh every few weeks; older sets can go a few months between refreshes. That's why every response includes psa_last_updated for the exact card — no guessing.

Which cards are covered?

24,000+ English Pokémon cards with PSA population data, out of 52,000+ tracked cards. Cards without population data return the card with null population fields rather than an error.

How do I find a card's ID?

It's the PriceCharting product ID. If you already work with PriceCharting data you have it; otherwise it's visible on PokeInvest card pages.

How do I cancel?

Self-serve: manage your subscription here — we email you a secure billing link where you can cancel, change your card, or grab invoices. Your key keeps working until the end of the period you've paid for. Or just reply to any email from us and say cancel.

Need more than 10k calls or different data?

Email [email protected] — pricing endpoints, higher limits, and bulk exports are all conversations I'm happy to have.