VaultStore
0% FEES · FOREVER
◈Marketplace◉Dashboard⌘Catalog✶Illustrator Museum✺Communities▥Portfolio⇄Trade Builder⬡My Store▤Orders & Activity◌Offers!Alerts◔Watchlist◫Buylists△Disputes◎Trust⬢Stores✉Messages⇅Movers⬣Advanced★Plans
CURRENT PLANGuest
Sign in to start free.Guest mode
GU
Guest
GUEST · Sign in to start free
Pricing API
DEVELOPERS · PRICING
⌘K
Sign in
MarketplaceDashboardCatalogIllustrator MuseumCommunitiesPortfolioTrade BuilderMy StoreOrders & ActivityOffersAlertsWatchlistBuylistsDisputesTrustStoresMessagesMoversAdvancedPlans
Pricing-as-API

The number the world cites — every field reproducible.

A bearer token gets you fair value, 95% confidence interval, sample size, attributed sources, and per-week velocity for any catalog card. Every response carries a methodology URL pointing at the formulas that produced it. We honestly say “insufficient” when we don’t know — there’s no fabricated number masquerading as a real one.

Use cases

Marketplaces
Anchor every listing to a third-party fair value. Show buyers the comparable spread without standing up your own pricing pipeline.
Insurance carriers
Issue policies against a 95% CI, not a single number. Auditable sample size + license URL on every quote.
Portfolio apps
Mark-to-market for collector portfolios with the same math VaultStore uses on its own portfolio ledger. One call per card.

Sample request

Fair value for a single catalog card
GET /api/v1/cards/{catalog_card_id}/price
Authorization: Bearer vsprice_<your-key>

Sample response

Envelope version 1 — additive within major
{
  "version": "1",
  "card_id": "9f4e…b3a1",
  "name": "Charizard",
  "set_code": "BASE",
  "fair_price_cents": 38912,
  "ci_lower_cents": 36420,
  "ci_upper_cents": 41440,
  "confidence": "high",
  "sample_size": 24,
  "window_days": 60,
  "observed_at": "2026-05-08T19:14:11.000Z",
  "last_sale_cents": 39500,
  "velocity_per_week": 5.8,
  "sources": ["VaultStore", "VaultStore TCG graph"],
  "source_breakdown": { "vaultstore_sale": 8, "tcg_graph": 16 },
  "currency": "USD",
  "license": "https://vaultstore.com/legal/pricing-license",
  "methodology_url": "https://vaultstore.com/pricing/methodology"
}

Field contract

What every field means and when it’s null
  • version — pin this on every consumer. New fields are additive within a major version; field semantics never change without a version bump.
  • fair_price_cents — trimmed median of weighted comparable sales over the last 30 days. Null when confidence === "insufficient".
  • ci_lower_cents / ci_upper_cents— central 95% of the trimmed distribution. Student-t when n < 30, normal-approx 1.96·σ/√n when n ≥ 30. Null with insufficient data.
  • confidence — one of high, medium, low, insufficient. Gate UI on confidence !== "insufficient"before rendering a headline number — that tier explicitly says “we don’t know”.
  • sample_size — comp count after trimming. Useful as a depth signal independent of the confidence tier.
  • window_days — width of the comparable-sales window the trimmed median was computed from. The endpoint reports the window it actually used so consumers can reproduce the math without guessing.
  • last_sale_cents — price of the most recent realized comp in the window. Null when none exists. Pair with observed_at for the freshness of that specific sale.
  • source_breakdown— per-source comp count over the window, keyed by source identifier. Useful for auditing which feeds drove the median. Don’t render these keys directly to end users — route through methodology labels when displaying.
  • velocity_per_week — realized sales per week, averaged over the last 28 days. Null when no sale-typed events exist. A high-velocity card with a tight CI is liquid; low velocity with a wide CI is illiquid even if the median looks confident.
  • sources — attributed source labels we hold an active license to cite. Filtered through external_price_licenses; you can render this array verbatim.
  • observed_at — most recent comp timestamp in the window. Pair with Cache-Control: s-maxage on the response to drive your own freshness display.
  • license — URL of the data-license terms covering this response. Show or link this when you republish the value.
  • methodology_url — link to the public formula stack. Surface this alongside the price so end-users can audit your number without leaving your app.

One-line embed widget

No API key required · IP rate-limited
For blogs, listing pages, and portfolio apps that just want to show a fair value inline without writing JavaScript: drop a script tag and a mount div. The widget calls a public, IP-rate-limited subset of the price endpoint and renders the same numbers — fair value, 95% CI, sample size, velocity, and a link back to the methodology page. No keys, no setup, no config.
<script src="https://vaultstore.com/embed/price.js" async></script>
<div data-vs-price-card-id="9f4e…b3a1"></div>
  • The widget injects inline-styled HTML into each matching div. No shadow DOM, no global CSS, nothing to clash with the host page.
  • SPA hosts can re-scan after route changes by calling window.VaultStorePriceEmbed.refresh().
  • Rate limit: 60 requests / minute per origin IP. Caches at the edge for 5 minutes so a popular blog with N embeds renders all of them on first paint without throttling.

Caching & rate limits

  • Responses ship with Cache-Control: public, s-maxage=N, stale-while-revalidate=M. N defaults to 300 seconds and is brain-tunable per methodology.
  • Per-key rate limits and per-day cost caps are enforced via the standard X-RateLimit-* response headers. Free tier is 1k calls/day; growth tiers raise the ceiling.
  • Errors use the standard envelope: { error: { code, message } } with HTTP status. Auth failures are always 401/403 with code scope_required or tier_required.

Pricing

Per-call, billed monthly
Developer
1,000 calls / month, free during preview
$0
Growth
100k calls / month, history endpoint, dashboard
$0.01 / call
Enterprise
Volume pricing, SLA, dedicated comp ledger
contact

What you can’t buy from the alternatives

  • Auditable provenance — every response carries sample_size, observed_at, sources, and a link to the formula stack. A consumer disputing your number reads methodology and reproduces it.
  • An honest empty state — when comparables are missing, the API says insufficient and returns null. No fabricated headline numbers, no quietly-wide CIs hiding the lack of signal.
  • Velocity — published alongside the price, not an afterthought. You learn liquidity at the same time you learn the median.
  • A drift watchdog — every 24 hours we compare our published number against external comparables on the same cards. When the gap exceeds 5% across 50+ cards an action-tier insight reaches the methodology team. The number gets investigated before the next refresh ships.

→ Read the full methodology