PSA Population Report Scraper — Set Pop, PSA 10 & Gem Rate avatar

PSA Population Report Scraper — Set Pop, PSA 10 & Gem Rate

Pricing

from $3.49 / 1,000 psa pop cards

Go to Apify Store
PSA Population Report Scraper — Set Pop, PSA 10 & Gem Rate

PSA Population Report Scraper — Set Pop, PSA 10 & Gem Rate

Scrape PSA population report by set name or pop URL — a PSA pop API alternative for card flippers. Export per-card grade census, PSA 10 pop, gem rate, and set-monitor deltas as JSON.

Pricing

from $3.49 / 1,000 psa pop cards

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a few seconds ago

Last modified

Share

Disclaimer: Unofficial tool for publicly accessible PSA population data. PSA, Professional Sports Authenticator, and Collectors are trademarks of their owners. Not affiliated with, sponsored by, or endorsed by PSA or Collectors Holdings. For informational, research, aggregation, and market-intelligence use only. Respect applicable terms of use and law.

PSA population report scraper for Pokémon TCG, Topps Chrome, and other graded-card sets. Use it as a PSA pop scraper, PSA pop API alternative, and set census export: paste a pop set URL, a heading ID, or a set name such as Surging Sparks. Dataset rows are one card variety eachPSA 10 pop, PSA 9, full grade ladder, gem rate, and optional monitor deltas. Fast HTTP JSON (GetSetItems) — no login field, no headless browser, no paid PSA Cert API. Call from Python, Node.js, cURL, or Apify MCP.

Built for card flippers who decide whether to submit raw copies, dealers watching gem-rate compression, and scheduled set monitors. The official cert API does not return population; this Actor reads the same public set-census JSON the pop report table uses.

Collectibles suite

ActorFocus
PSA Population Report Scraper ◄── you are hereSet-level PSA pop census and gem rate
Whatnot Listings ScraperUS live-commerce listings and shops
eBay Active Listings ScraperLive eBay BIN / auction asking prices
eBay Sold Listings ScraperCompleted eBay sold comps
eBay Sold Price IntelligenceRecommended price and demand score
Goldin Auctions ScraperHigh-end sports cards / TCG hammer + sold
PriceCharting ScraperGuide prices for games, TCG, and comics

Suite next step: after a set pop census, run eBay Sold Listings Scraper on the same titles for sold comps, then eBay Sold Price Intelligence for a recommended price. For live-show inventory, chain Whatnot Listings Scraper.

When to use this Actor

  • You need a PSA population report scraper / PSA pop API alternative that returns flat JSON rows
  • You want bulk set pop (every card in Surging Sparks or Topps Chrome), not a single cert paste
  • You track PSA 10 pop, gem rate, half-grades, and qualifiers for submit / buy decisions
  • You scrape PSA pop with Python, Node.js, or MCP and export JSON / CSV
  • You run a daily set monitor and want deltaPop10 / gemRateChange on a schedule

When not to use this Actor

  • Single-slab cert verification — this Actor is a set census, not a cert lookup
  • Guide prices / sold comps — use PriceCharting Scraper or eBay Sold Listings Scraper
  • US live-commerce firehose — use Whatnot Listings Scraper
  • Official PSA Public API replacement — cert fields still need PSA's cert API; pop is not in that API
  • Buyer PII or submission accounts — public grade counts only

Key features

  • Set URLs — paginate every card in a pop heading (full grade ladder)
  • Set namesSurging Sparks and 2023 Topps Chrome resolve immediately; other names search public pop URLs
  • Heading IDs — reuse IDs stored from a previous run
  • Gem-rate fieldspop10, pop9, total, gemRate on every row
  • Monitor mode — named Key-Value store of previous pops; later scheduled runs attach deltas
  • Changed-only option — bill only spec IDs whose pop10 / total / gem rate moved
  • Flipper filters — max PSA 10 pop, min/max gem rate, subject / variety contains
  • MCP / AI ready — call from assistants via Apify MCP

Input

FieldDescription
setNamesSet search strings (e.g. Surging Sparks, 2023 Topps Chrome)
startUrlsPSA pop set page URLs
headingIdsNumeric heading IDs from the URL
maxItemsRow cap (default 500; 0 = unlimited). Large Chrome sets can exceed 60k cards
maxSetsHow many URL matches to scrape per set name (default 1)
isPsaDnaPSA/DNA autograph line instead of standard grades
includeSetTotalEmit a set_total row for the set-wide census
monitorModePersist snapshots; attach deltaPop10 / gemRateChange
emitChangedOnlyWith monitor mode, push only cards whose pop moved
proxyConfigurationRESIDENTIAL recommended on Apify

Set URL example:

{
"startUrls": [
{ "url": "https://www.psacard.com/pop/tcg-cards/2024/pokemon-ssp-en-surging-sparks/285178" }
],
"maxItems": 500,
"includeSetTotal": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Named set + daily monitor:

{
"setNames": ["Surging Sparks"],
"maxItems": 500,
"monitorMode": true,
"monitorStoreName": "ssp-en-pop",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

FieldDescription
recordTypecard or set_total
specIdPSA spec ID for the card / variety
cardNumberPrinted number
subjectPlayer or Pokémon name
varietyReverse Holo, SIR, Refractor, …
setName / setYear / setCategorySet metadata from the URL
headingId / setUrlPop heading and canonical set URL
pop10 / pop9 / pop8 / totalFlattened census
gemRatePSA 10 / total
psaPopFull ladder (auth through grade10, half-grades, Q)
deltaPop10 / deltaTotal / gemRateChangeMonitor deltas
changedTrue when pop10, total, or gem rate moved
scrapedAtUTC timestamp
{
"recordType": "card",
"specId": 12168745,
"cardNumber": "240",
"subject": "Hydreigon EX",
"variety": "Special Illustration Rare",
"setName": "Pokemon Ssp EN Surging Sparks",
"setYear": "2024",
"setCategory": "tcg-cards",
"headingId": 285178,
"pop10": 3334,
"pop9": 4610,
"total": 8849,
"gemRate": 0.376766,
"psaPop": {
"auth": 1,
"grade8": 785,
"grade8_5": 20,
"grade9": 4610,
"grade10": 3334,
"total": 8849
}
}

Use cases

Use caseWhat you get
Submit / raw buyPSA 10 pop + gem rate for every card in a hot TCG set
Chrome / sports set censusFull grade ladder for Topps Chrome (raise maxItems)
Gem-rate compressionSchedule monitorMode and watch deltaPop10
SIR / parallel scarcityvarietyContains + maxPop10
Comps after popChain eBay sold listings on the same subject

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/psa-pop-report-scraper').call({
setNames: ['Surging Sparks'],
maxItems: 500,
monitorMode: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/psa-pop-report-scraper").call(
run_input={
"startUrls": [
{"url": "https://www.psacard.com/pop/tcg-cards/2024/pokemon-ssp-en-surging-sparks/285178"}
],
"maxItems": 500,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[:5])

cURL

curl "https://api.apify.com/v2/acts/crawloop~psa-pop-report-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"setNames":["Surging Sparks"],"maxItems":500}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

  • "Run PSA Population Report Scraper for Surging Sparks and return the 20 lowest gem-rate SIRs as JSON"
  • "Scrape 2023 Topps Chrome pop with PSA Population Report Scraper, cap at 500 rows, and summarize PSA 10 vs total"
  • "Chain PSA Population Report Scraper then eBay Sold Listings Scraper for Hydreigon EX SIR comps"

FAQ

Does this replace the PSA Cert API?
No. Cert lookup is a different product. Population is not returned by the public cert API. This Actor scrapes set census rows.

Why not one cert number?
A flipper watching Surging Sparks needs every card's gem rate on a schedule. One-cert lookups do not retain. Use monitorMode on the set.

How big is Topps Chrome?
The 2023 baseball Chrome heading is tens of thousands of varieties. Leave maxItems at 500 for a sample, or set 0 only when you want the full dump.

Do I need a PSA login?
The HTML pop pages redirect to Collectors sign-in. This Actor calls the public GetSetItems JSON used by the table, so the input form does not ask for a password.

ActorRole
Whatnot Listings ScraperLive-commerce listings and shops
eBay Sold Listings ScraperMarketplace sold comps
PriceCharting ScraperGuide prices, optional POP on product pages
Goldin Auctions ScraperHigh-end hammer