Skip to content
Prepaid, no subscription trap. Top up a balance and we draw the monthly fee from it.
tcggraph

List sets

Sets across every game, newest first.

GEThttps://api.tcggraph.com/v1/sets1 credit · metering

meta carries page, limit, totalCount, totalPages and hasMore, like the card lists, but no priceSource: sets carry no prices.

Query parameters

Any other query parameter is a 400 naming it and listing these, so a misspelt one is never silently ignored. api_key is accepted on every endpoint as an alternative to the header.

ParameterTypeDescription
gamestringOnly this game. Also narrows which gameData fields are accepted as filters.

One of: pokemon, magic-the-gathering, one-piece, yugioh, disney-lorcana, star-wars-unlimited, digimon, grand-archive, dragon-ball-super

Default: every game

namestringPart of the set name, or a whole set code; case-insensitive. name=151 and name=sv3pt5 both find 151.
languagestringThe set's language, or all. Japanese Pokémon sets are their own rows under ja; a translated printing of an English set is not a set of its own. Case-insensitive, with jp, kr and sp accepted.

One of: en, de, fr, it, es, pt, ja, ko, ru, zhs, zht, th, id, ph, qya, dw, grc, he, ar, la, sa, all

Default: en

releasedAfterstringReleased on or after this day, YYYY-MM-DD. Sets without a date are excluded.
releasedBeforestringReleased on or before this day, YYYY-MM-DD.
sortstring- for descending; cards is the card count. Sets without a date sort last. Ties break on code.

One of: released, -released, name, -name, cards, -cards

Default: -released

pageintegerPage number, from 1. Below 1 reads as 1. A page past the end returns an empty data with hasMore: false.

Default: 1

limitintegerRows per page, 1 to 100. Out-of-range values are clamped, not refused; meta.limit reports the size used.

Default: 20

Response

200 A page of sets.

FieldTypeDescription
dataSet[] (Set reference)The sets.
metaobjectPaging.
meta.pageintegerThe page returned.
meta.limitintegerThe page size used.
meta.totalCountintegerSets matching, across every page.
meta.totalPagesintegerAt least 1.
meta.hasMorebooleanWhether a later page has rows.

Examples

Real responses from the production API, recorded on 2026-09-24 by the script that also checks every field above against them. Arrays are shown in full.

Newest Pokémon sets

curl "https://api.tcggraph.com/v1/sets?game=pokemon&limit=3" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
200 · X-Credits-Cost: 1
{
  "data": [
    {
      "code": "me55",
      "game": "pokemon",
      "name": "30th Celebration",
      "language": "en",
      "releasedAt": "2026-09-16",
      "cardCount": 161
    },
    {
      "code": "me55c",
      "game": "pokemon",
      "name": "30th Celebration: Classic Collection",
      "language": "en",
      "releasedAt": "2026-09-16",
      "cardCount": 30
    },
    {
      "code": "me5",
      "game": "pokemon",
      "name": "Pitch Black",
      "language": "en",
      "releasedAt": "2026-07-17",
      "cardCount": 120
    }
  ],
  "meta": {
    "page": 1,
    "limit": 3,
    "totalCount": 230,
    "totalPages": 77,
    "hasMore": true
  }
}

Japanese sets from 2025

curl "https://api.tcggraph.com/v1/sets?game=pokemon&language=ja&releasedAfter=2025-01-01&releasedBefore=2025-12-31&sort=released&limit=3" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
200 · X-Credits-Cost: 1
{
  "data": [
    {
      "code": "sv9",
      "game": "pokemon",
      "name": "Battle Partners",
      "language": "ja",
      "releasedAt": "2025-01-24",
      "cardCount": 132
    },
    {
      "code": "svn",
      "game": "pokemon",
      "name": "Battle Partners Deck Build Box",
      "language": "ja",
      "releasedAt": "2025-01-24",
      "cardCount": 45
    },
    {
      "code": "svod",
      "game": "pokemon",
      "name": "SV: ex Starter Set Steven's Beldum & Metagross ex",
      "language": "ja",
      "releasedAt": "2025-02-21",
      "cardCount": 19
    }
  ],
  "meta": {
    "page": 1,
    "limit": 3,
    "totalCount": 19,
    "totalPages": 7,
    "hasMore": true
  }
}

Errors

Every error has the same body; switch on error.code. Any endpoint can also answer 401, 402, 403 or 429 for reasons of key, plan or rate; those are on Errors.

StatusCodeWhen
400invalid_requestA parameter this endpoint does not take. details.suggestion names the one you probably meant.
400invalid_requestA date that is not YYYY-MM-DD, or not a real day.

Misspelt parameter

curl "https://api.tcggraph.com/v1/sets?Game=pokemon" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
400
{
  "error": {
    "code": "invalid_request",
    "message": "Unknown parameter \"Game\". Did you mean game=?",
    "details": {
      "field": "Game",
      "suggestion": "game",
      "allowed": [
        "game",
        "name",
        "language",
        "releasedAfter",
        "releasedBefore",
        "sort",
        "page",
        "limit"
      ],
      "docs": "https://tcggraph.com/docs/rest/list-sets"
    }
  }
}

Bad date

curl "https://api.tcggraph.com/v1/sets?releasedAfter=2025-13-01" \
  -H "Authorization: Bearer $TCGGRAPH_API_KEY"
400
{
  "error": {
    "code": "invalid_request",
    "message": "`releasedAfter` must be a date as YYYY-MM-DD.",
    "details": {
      "field": "releasedAfter",
      "got": "2025-13-01"
    }
  }
}