Every official card, as one clean record

Search, sync and display cards from Naruto, One Piece, Star Wars: Unlimited, and Pokémon with one response shape. The catalog and its images are free. You pay only for price history, a commercial license and an SLA.

nameCHAKRA CARD
image_statusmissing
categoryChakra
textWhen using Chakra, turn this card face-down.
C-001naruto en
CHAKRA CARD, C-001, as the API serves it. Every part of the card is a field of one record, the same shape for every game.

Run it before you sign up

Your first request needs no key. Name your app and a way to reach you in the User-Agent: default library agents are rejected.

OpenAPI 1.17.0
curl "https://api.rarity.dev/v1/cards?game=naruto&limit=1" \
  -H "User-Agent: your-app/1.0 (you@example.com)"
200 OK, first record of the responserevealed 2026-07-29
{
  "game": "naruto",
  "lang": "en",
  "name": "CHAKRA CARD",
  "collector_number": "C-001",
  "category": "chakra"
}

The set list

What the API does, numbered as a set numbers its cards. Every entry is a real operation of the published contract, with the same envelope, errors and pagination across games.

  1. 001/007Search every game with one queryA Scryfall-style query language plus filters for game, language, set, rarity, color and type. One response shape for every game.GET/v1/cards?game=pokemon&q=name:charizard
  2. 002/007Resolve a whole deck in one callUp to 100 cards by id per request, for deck lists, carts and collection imports.POST/v1/cards/collection
  3. 003/007Download the full catalogGzipped JSONL with record count and SHA-256. Timestamped, immutable URLs you can cache forever.GET/v1/bulk/cards
  4. 004/007Sync only what changedA monotonic cursor over every created and updated card. Stay current without downloading everything again.GET/v1/changes?since=<cursor>
  5. 005/007Get told when a card is publishedSigned webhooks with retries, delivered at least once. Payloads carry ids, so you always fetch the current record.POST/v1/webhooks
  6. 006/007Keep your ids when the catalog movesIds are opaque and stable. When two records are merged or one is withdrawn, the migration ledger says what happened.GET/v1/migrations
  7. 007/007Read market prices in euroCardmarket prices on the card record. Each source lists its market, currency, freshness and the games it covers.GET/v1/catalogs/price_sources

What people build with it

The catalog does the boring part, so your product can be about the game.

  • Deck buildersSearch by rules text and type, load a saved deck of up to 100 cards in one call, show the images.
    • GET/v1/cards
    • POST/v1/cards/collection
  • Discord and Twitch botsAnswer a card name in chat without a key, and post new cards the moment a webhook arrives.
    • GET/v1/cards
    • POST/v1/webhooks
  • Collection trackersMirror the catalog from the bulk file, keep it current with the change feed, value it in euro.
    • GET/v1/bulk/cards
    • GET/v1/changes
  • Shops and price toolsMap your stock to stable ids, one per print and variant, and read Cardmarket prices on each.
    • GET/v1/migrations
    • GET/v1/catalogs/price_sources

House rules

The rules you would otherwise find out the hard way, written down. The full contract is in the OpenAPI document.

  • The free plan cannot bill youNo card on file, no monthly quota, no overage. At the limit the API answers HTTP 429 with Retry-After.
  • Cached responses cost nothingSend If-None-Match with the last ETag. A 304 does not count against any limit.
  • Images outside the rate limitCard images come from their own CDN with long-lived URLs, so a gallery page never spends your request budget.
  • Errors you can branch onEvery error carries a stable code, and the param and value at fault when there is one. Messages are for humans.
  • Official reveals onlyA card enters after the publisher shows it, with the source_url on the record. No leaks, no guessed text.
  • Six months' notice on price changesWritten into the terms, with grandfathering for existing customers when a change takes effect.

Pricing that never charges for the cards

Every plan has the complete catalog and every image. Billing is not active yet, so Rarity is free to use today.

Compare every plan

Questions

Do I need an API key?

No. Without a key you get 30 requests a minute and 1,000 a day. A key, issued by email, doubles the per-minute limit and raises the daily one to 5,000. Every request needs a User-Agent that names your app and a contact.

Can I use Rarity in a commercial product?

Free is for non-commercial use. The Maker plan and above include a commercial license. Billing is not active yet: until it is, ask for written commercial permission at api@rarity.dev.

Will the catalog ever become paid?

No. Card data and images stay free on every plan. Paid plans sell price history, freshness, markets, a commercial license and an SLA.

Can I build a simulator with it?

No. The terms do not allow card images from Rarity in a playable simulator or in a product whose main job is to reproduce gameplay, free or paid.

Where do the images come from?

From official card lists where the publisher has one, otherwise from a marketplace. Every record says which in image_status, along with watermarked, low resolution and missing, so you decide what to show.

Which game comes next?

A game is added when builders need it and it has no decent programmatic source. Tell us what you are building at api@rarity.dev.

Make your first request in the next minute

No signup form. Ask for a key when you want higher limits: tell us what you are building and you get one by email.

Request a free key