🔵 IN THIS GUIDE: How to pull Disney Lorcana card data and TCGplayer + CardMarket prices from the PokéWallet API, using real responses captured on October 21, 2026. The catalog is free on every plan. Whole-set prices and analytics need Ultra or the 7-day trial, and Pro does not cover them.

Quick Answer: The PokéWallet API serves Disney Lorcana under https://api.pokewallet.io/lor/…, covering 24 sets, from The First Chapter to Hyperia City. Sets, cards, search and images are free, including on the free tier (100 requests/hour, 1,000/day, no credit card), and card lookups and search already include each card's current prices. Whole-set prices and analytics (statistics, completion value, trending sets, top cards) require the Ultra plan at €29/month or the 7-day trial. Pro is not enough. Prices come from TCGplayer (USD) and CardMarket (EUR) and refresh once a day, and the same key covers 11 other card games.

Lorcana has a healthy developer scene for card data. Deckbuilders, collection apps and Discord bots all need card text, ink colors and images, and good sources for those already exist. Prices are harder. Lorcana sells on both sides of the Atlantic, so a collector in Europe and one in the US look at different marketplaces, in different currencies, with different names for the same foil.

This guide shows the Lorcana endpoints exactly as they responded on October 21, 2026, using real field names and real numbers. We start with the free catalog, move to the Ultra price and analytics endpoints, and finish with JavaScript and Python you can paste in. Along the way we cover the Lorcana-specific details that break a first integration: numeric set codes, "Cold Foil" on one marketplace and "foil" on the other, numbers sent as strings, and a CardMarket block that can be null.

If you read our Riftbound API guide, the shape is the same with a different path prefix. For the overview of all 12 games, start from the TCG price API hub.

Key Takeaways

  • 🆓 The catalog is free. /lor/sets, /lor/sets/:set, /lor/cards/:id, /lor/search and /lor/images/:id work on every plan, and card lookups and search already return that card's current TCGplayer and CardMarket prices.
  • 💰 Whole-set prices and analytics need Ultra. /lor/prices/:set, statistics, completion value, trending and top cards are Ultra-only (€29/month) or on the 7-day trial. Pro unlocks only Pokémon and One Piece.
  • 🔢 Lorcana set codes are numbers. Attack of the Vine! is set_code "13" and set_id "24666". Store the set_id so the two never get mixed up.
  • ✨ "Cold Foil" on TCGplayer is "foil" on CardMarket. Lowercasing the variant name is not enough to join the two marketplaces. You need a small mapping.
  • 🧮 Enchanted and Iconic cards are 98.5% of a set's cost. Of the $6,842.65 TCGplayer estimate for one copy of every Attack of the Vine! card, the 18 Enchanted and 2 Iconic cards account for $6,740.99.
  • 🔤 Expect strings and nulls. cost_ink, strength, willpower and lore_value arrive as strings, ink_type can be "Amethyst;Sapphire", and a card's cardmarket block can be null.
  • 📉 No price history for Lorcana. History is Pokémon-only. You get CardMarket rolling averages (avg1, avg7, avg30) and 7-day changes from the trending and growth endpoints.
  • 🔑 One key, 12 games. The key you create for Lorcana also reads Pokémon, One Piece, Magic, Yu-Gi-Oh!, Riftbound and six more games.


What the API Covers

Disney Lorcana uses the game code lor, and every Lorcana endpoint sits under https://api.pokewallet.io/lor/. On October 21, 2026 the sets endpoint reported 24 sets ("total": 24).

Those 24 entries are the fourteen main sets, from The First Chapter ("1", August 2023) to Hyperia City ("14", October 16, 2026), plus the three Illumineer's Quest products (Q1–Q3) and the promo groups. A few rows from the live response show the range:

Setset_codeset_idCardsRelease date
The First Chapter1229372322023-08-18
Attack of the Vine!13246662522026-07-17
Hyperia City142474002026-10-16
Illumineer's Quest: Deep TroubleQ123528402024-05-17
Lorcana Challenge Promoslcp-23null

Three things to plan for:

  1. Main-set codes are bare numbers stored as strings. "13" is a set_code, and 24666 is a set_id. A function that accepts either will eventually receive the wrong one, so store the set_id.
  2. Promo groups have negative set_ids and no release date. Errata Cards is -1, Lorcana Challenge Promos -2, Promos Year 2 -3, Prerelease & Box Promos -5.
  3. Sealed products show up before cards do. Hyperia City reports card_count: 0 in the set list, yet /lor/sets/24740 already returns 9 products, all with product_type: "sealed": booster pack, booster box, Illumineer's Trove, starter set, gift box and their cases. If you track new releases, watch card_count move off zero.

Every card carries the shared catalog fields (name, set_code, card_number, rarity, card_type, variants, card_text) plus Lorcana's own:

FieldExample valueNotes
ink_type"Amber", "Amethyst;Sapphire"Dual-ink cards are semicolon-separated
cost_ink"4"String, not integer
strength / willpower / lore_value"2" / "4" / "2"Strings
classification"Storyborn;Hero;Toy"Semicolon-separated
property"Toy Story", "Frozen"The Disney franchise
character_version"Helping a Friend"The subtitle after the character name
inkwell_iconon_card"No""Yes"/"No" string, not a boolean
promo_type, flavor_text, move_cost—Present only on some cards

Prices come from TCGplayer in USD and CardMarket in EUR, refreshed once a day. There's no eBay data and no grading data. If you're new to the two marketplaces, our TCGplayer vs CardMarket vs eBay comparison explains how they differ for buyers and sellers. It's written for One Piece, but the marketplace logic is the same.

Your First Request

Create a free account at /auth/login and copy your key from the dashboard. Every request sends it in the X-API-Key header:

curl -H "X-API-Key: YOUR_API_KEY" \
  "https://api.pokewallet.io/lor/search?q=Helping"

The search matched 4 cards. Here's the first result (card text trimmed):

{
  "query": "Helping",
  "results": [
    {
      "id": "lor_c90d1341d751d70cfa4e0f5185655b07157821be2491b59a6d3e5a2d0b7ad781ced4871d9b135bf47694ccaab5cb",
      "card_info": {
        "name": "Woody - Helping a Friend",
        "set_name": "Attack of the Vine!",
        "set_code": "13",
        "set_id": "24666",
        "card_number": "1/207",
        "rarity": "Rare",
        "card_type": "Character",
        "variants": ["Normal", "Cold Foil"],
        "ink_type": "Amber",
        "cost_ink": "4",
        "property": "Toy Story",
        "strength": "2",
        "willpower": "4",
        "lore_value": "2",
        "classification": "Storyborn;Hero;Toy",
        "character_version": "Helping a Friend",
        "inkwell_iconon_card": "No"
      },
      "tcgplayer": {
        "prices": [
          { "sub_type_name": "Normal", "market_price": 0.3, "low_price": 0.1,
            "mid_price": 0.4, "high_price": 4.81, "direct_low_price": null,
            "updated_at": "2026-10-20T13:53:23.893772+00:00" },
          { "sub_type_name": "Cold Foil", "market_price": 0.7, "low_price": 0.46,
            "mid_price": 0.77, "high_price": 4.44, "direct_low_price": null,
            "updated_at": "2026-10-20T13:53:23.893772+00:00" }
        ],
        "url": "https://www.tcgplayer.com/product/702669/lorcana-tcg-attack-of-the-vine-woody-helping-a-friend"
      },
      "cardmarket": {
        "product_name": "Woody - Helping a Friend",
        "prices": [
          { "variant_type": "normal", "avg": 0.24, "low": 0.02, "trend": 0.25,
            "avg1": 0.25, "avg7": 0.27, "avg30": 0.24,
            "updated_at": "2026-10-20T13:53:18.767524+00:00" },
          { "variant_type": "foil", "avg": 1.06, "low": 0.35, "trend": 1.08,
            "avg1": 0.8, "avg7": 1.41, "avg30": 0.91,
            "updated_at": "2026-10-18T12:52:04.210506+00:00" }
        ],
        "product_url": "https://www.cardmarket.com/en/Lorcana/Products/Singles/Attack-of-the-Vine/Woody-Helping-a-Friend"
      }
    }
  ],
  "pagination": { "page": 1, "limit": 20, "total": 4, "total_pages": 1 },
  "metadata": {
    "total_count": 4, "tcg": 4, "cardmarket": 3,
    "tcg_only": 1, "cardmarket_only": 0, "both_sources": 3, "truncated": false
  }
}

Four details before you go further:

  1. The id is the stable key. Lorcana IDs start with lor_. The same search also returns a second "Woody - Helping a Friend", the Holofoil promo from Disney Lorcana Promo Cards, with its own id and a TCGplayer market price of $18.70. Key on id, never on the name.
  2. The variant names don't match across marketplaces. TCGplayer says "Cold Foil", CardMarket says "foil". Promo cards use "Holofoil" on TCGplayer.
  3. cardmarket can be null. metadata reports tcg_only: 1, and that card is the promo Woody: its cardmarket field is null, not an empty object. Guard every read.
  4. updated_at is per variant, per marketplace. On this card the CardMarket foil price last changed on October 18 and the normal price on October 20. It records the last change, not the last check.

Free Endpoints

All five catalog endpoints work on every plan. On the free tier you get 100 requests/hour and 1,000/day, enough to build and test a full integration.

EndpointWhat it returns
GET /lor/setsAll Lorcana sets with set_code, set_id, card_count, sealed_count, release_date
GET /lor/sets/:setOne set's details plus a paginated list of its cards and sealed products
GET /lor/cards/:idOne card with full card_info and its current TCGplayer and CardMarket prices
GET /lor/search?q=Name search across all Lorcana sets, prices included
GET /lor/images/:idCard image

The set endpoint takes either the set_code or the set_id. If a set_code is ambiguous, the API answers with the candidates instead of guessing. For Attack of the Vine!, /lor/sets/24666 reports "total_cards": 270, while the set list and the analytics endpoints count 252. The difference is the set's 18 sealed products, which the set endpoint lists alongside the cards. Filter on product_type ("card" or "sealed") when you only want singles. Paging parameters are in the Lorcana API documentation.

One thing surprises people: in the set card list, the prices arrays come back empty. Each card still has its tcgplayer.url and cardmarket.product_url, but no numbers. Card lookups and search include prices, and bulk prices for a whole set come from /lor/prices/:set, which is an Ultra endpoint. Don't loop /lor/cards/:id over 252 cards to rebuild that feed: on the free tier, that's a quarter of your daily quota spent on one set.

When you render card_text, sanitize it first. It contains raw HTML (<strong>, <em>, <br>) and, on some cards, Windows line breaks (\r\n).

Ultra Endpoints: Prices & Analytics

These five endpoints need Ultra (€29/month, 7,000 requests/hour, 70,000/day) or the 7-day trial, which you start from the dashboard after you log in. Pro only unlocks Pokémon and One Piece. All figures below were captured on October 21, 2026.

GET /lor/prices/:set: bulk set prices

/lor/prices/24666 returns one row per card per variant, with TCGplayer and CardMarket side by side ("source": "both"). For Attack of the Vine! that came to "total": 471 rows across three variants: Normal, Cold Foil and Holofoil. Use it for nightly syncs, because one call replaces hundreds.

GET /lor/sets/:set/statistics

The Attack of the Vine! summary:

MetricTCGplayer (USD)CardMarket (EUR)
Average price$27.67€10.04
Cheapest card$0.05€0.02
Most expensive$1,906.55€1,206.98
Top cardBelle & Beast - Certain as the Sun (Iconic)Belle & Beast - Certain as the Sun (Iconic)
Trend—down

Two parsing notes. The averages arrive as strings ("avg_market_price": "27.67") while the minimums and maximums are numbers. And the rarity breakdown is 75 Common, 56 Uncommon, 52 Rare, 18 Super Rare, 18 Epic, 12 Legendary, 18 Enchanted, 2 Iconic, plus 1 card with rarity "None". With 20 high-end cards in the set, the average describes a typical card badly.

GET /lor/sets/:set/completion-value

What one copy of every Attack of the Vine! card costs at base finish:

SourceLowMarket / AvgHigh
TCGplayer (USD)$5,090.19$6,842.65 (market)$31,139.21
CardMarket (EUR)€2,958.94€2,998.66 (avg)—

The rarity breakdown adds up exactly to the TCGplayer market estimate:

RarityCardsTotal cost
Common75$5.19
Uncommon56$10.66
Rare52$13.85
Super Rare18$9.61
Legendary12$15.37
Epic18$46.19
Enchanted18$3,205.10
Iconic2$3,535.89
None1$0.79

Everything from Common to Epic costs about $101 together. The two Iconic cards alone are 51.7% of the bill, and Enchanted plus Iconic make up 98.5%. For a collection app, that's the number worth showing: a playable set is cheap, and a master set means chasing 20 cards.

CardMarket also returns a trend_estimate (€212.89), which is far below even the low estimate, so don't present it as the price of a full set. The API also states "Cross-currency comparison not available": don't convert one column to compare it with the other.

GET /lor/analytics/top-cards

With no parameters, it ranks by TCGplayer price across all of Lorcana:

CardSetPrice
Elsa - Ice Maker (Foil)Disney Lorcana Promo Cards$3,979.00
Mickey Mouse - Brave Little Prince (Iconic)Fabled$3,875.00
Buzz Lightyear - Jungle Ranger (Iconic)Wilds Unknown$3,621.08
Down in New Orleans (Foil)Disney Lorcana Promo Cards$3,500.00
Minnie Mouse - Sweetheart Princess (Iconic)Fabled$3,083.33

With ?metric=growth&source=cm, it ranks by 7-day CardMarket growth:

CardSetPrice7-day change
Yzma - AlchemistDisney Lorcana Promo Cards€23.96+210.4%
Ursula's PlanUrsula's Return€15.50+147.2%
Jafar - Newly Crowned (Enchanted)Archazia's Island€199.57+129.9%
Captain Hook - The Pirate King (Enchanted)Reign of Jafar€220.11+127.8%

Growth rankings swing week to week and favour cards with thin volume. Read a +210% on a €24 promo as "something moved", not as a trend, and check avg7 and avg30 on the card before alerting anyone.

GET /lor/sets/trending

Set-level movement over "period": "7d", from CardMarket:

SetChangeAvg nowAvg beforeTop movers
Illumineer's Quest: Deep Trouble (Q1)+17.4%€4.78€4.07Minnie Mouse - Wild-Eyed Diver +108.2%, Ursula - Ruler of Lorcana −64.0%
Archazia's Island (7)−5.7%€2.53€2.68Minnie Mouse - Storyteller −18.8%, Mushu - Majestic Dragon +15.8%
Disney100 Promos (D100)+5.5%€9.31€8.82Maleficent - Uninvited +15.7%

On the TCGplayer side, every set currently returns "status": "work_in_progress" with "TCGPlayer price history not yet available". Code for that object rather than a number.

Code Examples: JavaScript & Python

Both examples read the key from an environment variable and only use fields that appear in the responses above. The documentation also has Node.js and Go snippets. There's no official SDK, so you call the endpoints over plain HTTP.

JavaScript: search a card and compare both marketplaces

const BASE_URL = "https://api.pokewallet.io";
const API_KEY = process.env.POKEWALLET_API_KEY;

if (!API_KEY) throw new Error("Missing POKEWALLET_API_KEY");

// TCGplayer variant name -> CardMarket variant_type
const CARDMARKET_VARIANT = {
  Normal: "normal",
  "Cold Foil": "foil",
  Holofoil: "foil",
};

async function api(path) {
  const res = await fetch(`${BASE_URL}${path}`, {
    headers: { "X-API-Key": API_KEY },
  });
  if (!res.ok) {
    throw new Error(`GET ${path} failed: ${res.status} ${await res.text()}`);
  }
  return res.json();
}

async function comparePrices(query) {
  const { results } = await api(`/lor/search?q=${encodeURIComponent(query)}`);

  return results.map((card) => {
    const tcg = card.tcgplayer?.prices ?? [];
    const cm = card.cardmarket?.prices ?? []; // cardmarket can be null

    const variants = card.card_info.variants.map((variant) => {
      const t = tcg.find((p) => p.sub_type_name === variant);
      const c = cm.find((p) => p.variant_type === CARDMARKET_VARIANT[variant]);
      return {
        variant,
        tcgplayerMarketUsd: t?.market_price ?? null,
        cardmarketTrendEur: c?.trend ?? null,
      };
    });

    return {
      id: card.id,
      name: card.card_info.name,
      setId: card.card_info.set_id,
      inks: (card.card_info.ink_type ?? "").split(";").filter(Boolean),
      cost: Number(card.card_info.cost_ink), // sent as a string
      variants,
    };
  });
}

comparePrices("Helping")
  .then((rows) => console.log(JSON.stringify(rows, null, 2)))
  .catch((err) => console.error(err.message));

For Woody - Helping a Friend from Attack of the Vine!, this prints Normal at $0.30 / €0.25 and Cold Foil at $0.70 / €1.08. The promo Woody comes back with a TCGplayer price and cardmarketTrendEur: null.

Python: what does a full set cost? (Ultra)

import os
import requests

BASE_URL = "https://api.pokewallet.io"
API_KEY = os.environ.get("POKEWALLET_API_KEY")
if not API_KEY:
    raise SystemExit("Missing POKEWALLET_API_KEY")

def api(path: str) -> dict:
    res = requests.get(f"{BASE_URL}{path}", headers={"X-API-Key": API_KEY}, timeout=15)
    res.raise_for_status()
    return res.json()

def completion_report(set_id: str) -> None:
    data = api(f"/lor/sets/{set_id}/completion-value")
    tcg = data["completion_cost"]["tcgplayer"]
    cm = data["completion_cost"]["cardmarket"]
    breakdown = data["breakdown_by_rarity"]
    total = sum(r["total_cost"] for r in breakdown.values())

    print(f"{data['set_info']['name']} — {data['set_info']['total_cards']} cards")
    print(f"TCGplayer market: {tcg['market_estimate']:,.2f} {tcg['currency']}")
    print(f"CardMarket avg:   {cm['avg_estimate']:,.2f} {cm['currency']}")
    for rarity, row in sorted(breakdown.items(), key=lambda kv: kv[1]["total_cost"], reverse=True):
        share = row["total_cost"] / total * 100 if total else 0
        print(f"  {rarity:<10} {row['count']:>3} cards  {row['total_cost']:>10,.2f}  ({share:.1f}%)")

if __name__ == "__main__":
    try:
        completion_report("24666")  # Attack of the Vine!
    except requests.HTTPError as err:
        print(f"Request failed: {err}")

Against Attack of the Vine! this reproduces the table above, with Iconic first at 51.7% and Enchanted second at 46.8%. For a full tracker with storage and alerts, the BerryWallet price tracker tutorial walks through the architecture. Swap /op/ for /lor/ and the pattern carries over.

How It Compares to the Alternatives

Lorcana is well served for card data, and it's worth saying so plainly.

Lorcast is a well-established Lorcana-only option. Its public API at api.lorcast.com serves cards, sets and images, and its documentation says prices are included and updated once a day. It asks clients to keep 50–100 ms between requests and to cache data for at least 24 hours, and its documentation doesn't mention an API key. Its card object carries two price fields, prices.usd and prices.usd_foil, both in US dollars, with no euro price. If you're building a deckbuilder or a card browser for a US audience, it's a strong, focused choice.

Scrydex, the paid successor to PokémonTCG.io, also lists Lorcana among its games. Its plans are credit-based, from $29/month, and its FAQ says CardMarket is still being evaluated.

Where PokéWallet fits:

  • Both marketplaces in one response, normalized per variant. If your users are in Europe, CardMarket EUR prices matter as much as TCGplayer USD.
  • Set-level analytics ready-made: completion value, statistics, trending sets and top cards, without building your own aggregation.
  • A free catalog, so you can build the card side before paying for anything.

What we don't have: price history for Lorcana, eBay sold listings, graded prices and intraday updates. If your product depends on any of those, we're not the right tool today.

Our real advantage is breadth. The same key reads 12 games: Pokémon, One Piece, Magic: The Gathering, Yu-Gi-Oh!, Lorcana, Flesh and Blood, Dragon Ball Super, Digimon, Star Wars Unlimited, Cardfight!! Vanguard, Riftbound and Cyberpunk. A local game store selling Lorcana next to Pokémon and Magic doesn't want three integrations. For how multi-source apps are usually structured, see our architecture guide for TCG collection apps.


Frequently Asked Questions

Is there a Disney Lorcana API?

Yes, more than one. PokéWallet serves Lorcana at https://api.pokewallet.io/lor/ with sets, cards, search and images, plus TCGplayer and CardMarket prices: 24 sets as of October 21, 2026, including Hyperia City and the Illumineer's Quest products. Lorcast is a popular community API focused on Lorcana card data. Our full reference is in the Lorcana API documentation.

Is the Lorcana API free?

The catalog is: sets, cards, search and images, on the free tier with 100 requests/hour and 1,000/day and no credit card, and card lookups include current prices. Whole-set prices, set statistics, completion value, trending sets and top cards need Ultra (€29/month) or the 7-day trial.

Does the Pro plan include Lorcana prices?

No. Pro (€20/month) unlocks the paid endpoints for Pokémon and One Piece only. Lorcana and the other nine games need Ultra, which also includes everything in Pro. The plans are compared on the pricing page.

How do I get Lorcana card prices from TCGplayer and CardMarket?

For a single card, call /lor/cards/:id or /lor/search?q=: both return a tcgplayer block in USD and a cardmarket block in EUR on any plan. For a whole set, call /lor/prices/:set with the set_id (for example 24666 for Attack of the Vine!) and an Ultra or trial key.

Why don't Cold Foil prices match between TCGplayer and CardMarket?

They're named differently. TCGplayer lists "Cold Foil" (and "Holofoil" for promos), while CardMarket uses "foil". Map the names explicitly before joining the two, and remember one is in USD and the other in EUR.

How often are Lorcana prices updated?

Once a day, for both marketplaces. The updated_at field shows when a price last changed, not when it was last checked, so a stable common can carry an older timestamp and still be current.

What is the most expensive Lorcana card right now?

In our October 21 data, the top TCGplayer card was Elsa - Ice Maker (Foil), a Disney Lorcana Challenge promo, at $3,979, followed by Mickey Mouse - Brave Little Prince (Iconic) from Fabled at $3,875. Within Attack of the Vine!, Belle & Beast - Certain as the Sun (Iconic) leads at $1,906.55 on TCGplayer and €1,206.98 on CardMarket.

Does it include Lorcana price history or graded prices?

No. Price history is Pokémon-only, and there's no PSA, CGC or eBay data. For Lorcana you get CardMarket's rolling averages (avg1, avg7, avg30) on each card and the 7-day changes from the trending and growth endpoints.


💬 Price disclaimer: All prices and statistics in this article come from live PokéWallet API responses captured on October 21, 2026, sourced from TCGplayer (USD) and CardMarket (EUR). Card prices change daily, and this is not financial advice. Details about Lorcast and Scrydex come from their own documentation, checked on the same day.


Start Building with the PokéWallet API

Everything in this guide (the Attack of the Vine! completion cost, the two Woodys, the Cold Foil mapping) came from a handful of calls with one key. Start on the free catalog, and turn on the 7-day trial when you're ready for whole-set prices.

  • 🔑 One API key for 12 trading card games — Pokémon, One Piece, Magic, Yu-Gi-Oh!, Lorcana, Riftbound and more
  • 💰 TCGplayer (USD) and CardMarket (EUR) prices, refreshed daily
  • 🆓 Catalog endpoints free on every plan — sets, cards, search and images
  • ⚡ Ultra unlocks prices and analytics for every game — try it free for 7 days from your dashboard
  • 💬 Developer support in our Discord

Get Started:


This article is for informational purposes only and is not financial advice. Details reflect information available at the time of writing; release dates, pricing and set contents are subject to change. Card prices are volatile — always verify current market pricing before buying or selling.