# psa-cert — PSA certificate verification Verifies PSA cert numbers against the public page `https://www.psacard.com/cert/` (Firecrawl render, Scrapfly fallback; the site serves a Cloudflare challenge to plain HTTP). One request per cert — the cert space is never enumerated. APR and the population report proper are login-gated and never touched. - **Input**: `ctx.options.seeds` (cert numbers or `psacard.com/cert/...` URLs), `config.certs`, or `lookup(url)`. `certUrl(cert)` builds the canonical verify URL; `certFromUrl(url)` accepts `/cert/`, `/cert//psa`, `/en-CA/cert/`. - **Output**: `catalog_item` (description, set/brand, subject, card number, year, category, grade + qualifier, `identifiers.psa_cert` + `psa_spec_id`, cert images, PSA Estimate in metadata) and a partial `population_report` (`byGrade = { : n, higher: m }`, `metadata.population_scope = grade_and_higher`). - **Not found** → zero records, no throw. - Fixtures: `data/fixtures/psa-cert/` (live captures, trimmed `
`). Rebuild: `pnpm tsx connectors/firecrawl/_g2-grading-lib/capture.ts psa-cert charizard-psa10=69211238 not-found=99999999`.