Public JSON API

Sports Cards API

Three read-only endpoints, no auth, CORS-open. Refreshed weekly by the GitHub Action after each eBay sold-comp pull.

GEThttps://raw.githubusercontent.com/Keyvaniath/bpleone-sports-cards-desk/main/docs/signals.json

signals.json

Top BUY / STRONG BUY signals from the watchlist with composite scores, prices, trends, pop counts, and eBay query strings.

{
  "generated_at": "2026-05-15T07:38:27Z",
  "card_count": 114,
  "live_count": 0,
  "verdict_counts": { "STRONG BUY": 0, "BUY": 13, "HOLD": 77, ... },
  "top_buys": [
    { "id": "F023", "player": "Bryce Underwood", "sport": "Football",
      "set_year": "2025 Panini Prizm Draft Picks", "grade": "PSA 10",
      "anchor": 95, "live": null, "trend30d": 60.0,
      "t_buy": 70, "t_sell": 180, "pop": 300,
      "verdict": "BUY", "composite": 76.2,
      "ebay_query": "2025 Panini Prizm Draft Picks Bryce Underwood PSA 10" },
    ...
  ]
}
View live data →
GEThttps://raw.githubusercontent.com/Keyvaniath/bpleone-sports-cards-desk/main/docs/stats.json

stats.json

Aggregate breakdowns across the watchlist: by-sport metrics, tier mix, top 5 gainers/losers (30d), upcoming catalysts within 30 days.

{
  "generated_at": "...",
  "card_count": 114,
  "parallel_count": 36,
  "sealed_count": 17,
  "vintage_grade_count": 36,
  "catalyst_count": 14,
  "total_book_value": 1414280,
  "verdict_counts": { ... },
  "by_sport": {
    "Baseball": { "count": 36, "book_value": 325515, "buys": 3, "avg_score": 55.3, "trend30d_avg": 7.7 },
    ...
  },
  "by_tier": { "T1": 48, "T2": 54, "T3": 12 },
  "top_gainers_30d": [...],
  "top_losers_30d": [...],
  "upcoming_catalysts": [...]
}
View live data →
GEThttps://raw.githubusercontent.com/Keyvaniath/bpleone-sports-cards-desk/main/docs/feed.xml

feed.xml (RSS 2.0)

RSS feed of current BUY signals. Subscribe in any reader (Feedly, NetNewsWire, Inoreader). One item per BUY-graded card with composite + eBay link.

<rss version="2.0">
  <channel>
    <title>bpleone Sports Cards — BUY Signals</title>
    <item>
      <title>BUY: Bryce Underwood (PSA 10) — composite 76.2</title>
      <link>https://bpleone.com/sports-cards/#F023</link>
      <description>...</description>
      <pubDate>Fri, 15 May 2026 07:38:27 +0000</pubDate>
      <category>Football</category>
    </item>
  </channel>
</rss>
View RSS →

Refresh cadence

All three endpoints regenerate inside the same GitHub Action:

Sunday 22:00 UTC weekly →
  live_prices.py (eBay sold-comp scrape)
  → build_signals.py
  → build_stats.py
  → build_rss.py
  → commit docs/* + push

Manual trigger: workflow_dispatch in the repo's Actions tab.