Current prices

GET /v1/products/{productId}/prices returns a product's current prices from all three sources, keyed by finish.

curl https://public-api.cardnexus.com/v1/products/50212/prices \
  -H "Authorization: Bearer cnk_live_4f2d8c91e5b34a7f9e6c2d1a8b5f7e3c"
{
  "productId": 50212,
  "pricesByFinish": {
    "Standard": {
      "cardmarket": {
        "currency": "EUR",
        "low": 38.90,
        "mid": 44.50,
        "high": 59.99,
        "marketValue": 43.75,
        "change24h": 0.4,
        "change7d": -1.2,
        "change30d": 5.7
      },
      "tcgplayer": {
        "currency": "USD",
        "low": 42.50,
        "mid": 48.00,
        "high": 64.99,
        "marketValue": 47.20,
        "change24h": 0.2,
        "change7d": -0.8,
        "change30d": 6.1
      },
      "cardnexus": {
        "low": { "amount": 38.50, "currency": "EUR" },
        "listingCount": 14,
        "availableQuantity": 26,
        "regions": {
          "eu": {
            "currency": "EUR",
            "low": 38.50,
            "listingCount": 12,
            "availableQuantity": 23,
            "byCondition": {
              "NM": {
                "low": 42.00,
                "listingCount": 7,
                "availableQuantity": 11,
                "byLanguage": {
                  "de": { "low": 45.50, "listingCount": 2, "availableQuantity": 3 },
                  "en": { "low": 42.00, "listingCount": 5, "availableQuantity": 8 }
                }
              },
              "LP": {
                "low": 38.50,
                "listingCount": 5,
                "availableQuantity": 12,
                "byLanguage": {
                  "en": { "low": 38.50, "listingCount": 5, "availableQuantity": 12 }
                }
              }
            }
          },
          "na": {
            "currency": "USD",
            "low": 47.00,
            "listingCount": 2,
            "availableQuantity": 3,
            "byCondition": {
              "NM": {
                "low": 47.00,
                "listingCount": 2,
                "availableQuantity": 3,
                "byLanguage": {
                  "en": { "low": 47.00, "listingCount": 2, "availableQuantity": 3 }
                }
              }
            }
          }
        }
      }
    },
    "Foil": {
      "cardmarket": {
        "currency": "EUR",
        "low": 72.00,
        "mid": 81.50,
        "high": 99.00,
        "marketValue": 79.90,
        "change24h": 0.1,
        "change7d": 2.2,
        "change30d": 3.1
      }
    }
  }
}

pricesByFinish is keyed by the product's finishes (e.g. Standard, Foil) — the same values as the product's finishes array in GET /v1/products/{productId}. A source block is absent when it has no data, and a product with no prices and no live listings returns an empty pricesByFinish object.

The same three blocks appear on the product itself — pricesByFinish on GET /v1/products/{productId} and prices on sealed products carry this exact shape.

The cardmarket and tcgplayer blocks

The marketplace's most recent daily price snapshot. cardmarket prices are in EUR, tcgplayer prices in USD.

Field Type Description
currency string EUR for cardmarket, USD for tcgplayer.
low / mid / high number? Lowest, median, and highest observed price, decimal major units. Absent when not observed.
marketValue number? Aggregate market price — the value shown as the canonical price on cardnexus.com.
change24h / change7d / change30d number? Percent change of marketValue vs. that point in the past. null when there's not enough history.
byCondition object? Per-condition price detail, present when condition-level data is available for this marketplace. Each condition can carry low, listingCount, availableQuantity, and a per-language byLanguage breakdown.

The cardnexus block

The listings live on the CardNexus marketplace at the moment of the request. The top level is the marketplace-wide view; regions breaks the same numbers down per market region, each in its region's currency.

Field Type Description
low object The cheapest live listing for this finish anywhere on the marketplace, converted to EUR at the current exchange rate: { "amount": 38.50, "currency": "EUR" }.
listingCount number How many live listings the finish has, across every region.
availableQuantity number Total quantity for sale across those listings.
regions object The same numbers per market region, keyed eu and na. A region with no live listings has no key.

Each region:

Field Type Description
currency string EUR for eu, USD for na. Every one of the region's prices is in this currency; listings from sellers in the region priced in another currency are converted into it at the current exchange rate.
low number The cheapest live listing from sellers in this region, decimal major units.
listingCount number How many live listings sellers in this region have.
availableQuantity number Total quantity for sale across those listings.
byCondition object The same three numbers per condition (NM, LP, MP, HP, DMG), each with a per-language byLanguage breakdown.

Prices from one region are never mixed into the other region's.

Graded listings count toward the finish-level and region-level numbers but have no condition bucket, and a listing without a stored language counts toward its condition's totals but has no language bucket — so the buckets can add up to less than their parent's totals.

Rate limit

Requests count against the pricing-snapshot limit: 600 requests per hour. For prices across a whole game, use the prices feed instead of paging through products.