Developers
Palworld TCG public API
Read-only JSON for the card database, prices, the community deck list and the aggregated meta statistics. CORS is on for every route. No auth, no key, no signup.
Base URL
https://dev.palworldtcg.gg/api/v1Every endpoint below is relative to this URL. All responses are JSON with a stable envelope: { data, meta } for lists, { data } for single items, { error, message } on failures.
Rate limits and caching
The card, set, price and deck routes have no per-key limit. Please be a good citizen: cache responses locally, use ETag/If-None-Match, and don't hammer the endpoints in a tight loop. Every route ships aggressiveCache-Control headers (5 minutes for cards, 1 hour for sets and prices, 1 minute for decks) so Vercel's edge cache absorbs most traffic before it reaches our origin.
/meta is the exception: it is capped per IP per day, because its snapshot only changes daily. See below.
If we start seeing abuse, we'll flip on IP-based limits without notice. Build defensively.
/api/v1/cardsList cards with filters and pagination.
| Param | Default | Notes |
|---|---|---|
| page | 1 | 1-indexed page number. |
| per_page | 50 | Max 100. |
| q | - | Free-text: matches name, pal_name, card_number, effect_text. |
| set | - | Set code (e.g. TD01, BP01). |
| color | - | Comma list, any-of match: Red,Blue. |
| type | - | Comma list: Pal,Gear,Structure,Event,Soul. |
| cost_min | - | Integer. |
| cost_max | - | Integer. |
| keyword | - | Ability keyword (Quick, Assault). |
| lucky | - | true / false. |
| include_parallels | false | Include TSP/TSR/SEC/SR/SP alternate art. |
| status | revealed | Pass "any" to include prototype/announced/etc. |
Example
https://dev.palworldtcg.gg/api/v1/cards?set=TD01&type=Pal&cost_min=1&cost_max=3/api/v1/cards/{slug}Single card. Includes usage_count (how many public decks reference it).
Example
https://dev.palworldtcg.gg/api/v1/cards/td01-001-grizzbolt-rumbling-tank/api/v1/setsList every announced set, ordered by release date.
| Param | Default | Notes |
|---|---|---|
| page | 1 | 1-indexed page number. |
| per_page | 50 | Max 100. |
Example
https://dev.palworldtcg.gg/api/v1/sets/api/v1/sets/{code}Set metadata plus its full card list.
Example
https://dev.palworldtcg.gg/api/v1/sets/TD01/api/v1/pricesEvery tracked printing's price — the cheaper of TCGplayer and eBay, in cents. No pagination; one snapshot, rewritten daily.
Example
https://dev.palworldtcg.gg/api/v1/prices/api/v1/decksCommunity-shared decks. Only rows the author marked public.
| Param | Default | Notes |
|---|---|---|
| page | 1 | 1-indexed page number. |
| per_page | 25 | Max 100. |
| color | - | Comma list, any-of match: Red,Blue. |
| sort | updated | "updated" or "new". |
Example
https://dev.palworldtcg.gg/api/v1/decks?color=Red,Blue&sort=new/api/v1/decks/{share_id}Single deck including its full payload (main + soul entries).
Example
https://dev.palworldtcg.gg/api/v1/decks/a3f9e8d201/api/v1/metaThe meta: every archetype's representative decklist and win rate, plus the matchup matrix, card performance, play order and composition. Rate limited; see below.
| Param | Default | Notes |
|---|---|---|
| scope | all | "all", "ranked" or "casual". all = ranked + casual. |
| window | 30 | "7", "30" or "all" — trailing days; "all" is the weekly all-time snapshot. |
| archetype | - | An archetype key. Returns that one, with its card stats and matchups. |
Example
https://dev.palworldtcg.gg/api/v1/meta?scope=ranked&window=30About /meta
This is the same aggregated data the /meta pages render. Every archetype carries decklist — its representative 50-card main deck as { slug, count } entries, the medoid of that archetype's population — alongside win rates with confidence intervals, the head-to-head matrix, play order and composition bands.
Those decklists are centroids computed over thousands of games, not anybody's saved deck: there are no per-game rows, no players and nothing that can be joined back to a person. Player-shared decks are a separate thing, and they live at /decks.
Add ?archetype=<key> to drill into one. That adds the archetype's own card performance, its matchup row, and cards_seen: every card recorded across its decks, which is a wider pool than the representative list — a card played in most builds but absent from that one deck would otherwise be invisible.
It is rate limited to a small number of requests per IP per day, because the snapshot is only regenerated about once a day — one call gets you everything, and a second call the same day almost always returns identical bytes. Read generated_at to tell whether it actually moved, and cache the rest. Over the limit you get a 429 with X-RateLimit-Limit.
Unknown scope or window values are rejected with a 400 rather than quietly falling back to the default — asking for ranked numbers and silently receiving the whole population is the one mistake that would not announce itself.
Field reference
Card fields, in the order they appear in list responses: slug, set_code, card_number, name, pal_name, card_type, subtype, color, cost, power, strike, rarity, effect_text, keywords, work_keywords, is_lucky, image_url, thumbnail_url, status. The single-card endpoint adds japanese_name, durability, effect_text_ja, flavor_text, attack_name, orientation, art_url_full, revealed_at, source_url, usage_count.
Machine-readable and agents
For scripts, bots, and AI agents, the same API is described in machine-readable form:
- /openapi.json OpenAPI 3.1 description of every endpoint.
- /.well-known/api-catalog RFC 9727 catalog linking the spec, docs, and terms.
- /.well-known/agent-skills/index.json task-oriented skills (search cards, look up a card, browse decks).
- /llms.txt a plain-text site map for language models.
This page and the homepage also support Markdown content negotiation: send Accept: text/markdown to get a Markdown view instead of HTML.
Terms
The API surfaces the same data that powers the site itself. You're free to use it in personal projects, community tools, Discord bots, and open-source stuff. If you build something cool, tell us so we can link it. Please don't:
- Re-serve a copy of our card database as your own competing site.
- Scrape the API to train a model without asking us first.
- Attribute card art to yourself. All card art belongs to Bushiroad / Pocketpair.
See our terms of use for the full editorial stance.