BYTETOOLS

XIVAPI

Free Final Fantasy XIV API with no key: items, quests, recipes, NPCs and every game data sheet, in all four client languages. Tested curl example and real response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the XIVAPI?

XIVAPI is a free, key-free API exposing Final Fantasy XIV's own game data sheets — items, quests, recipes, actions, NPCs, achievements and more — with every localised string available in English, German, French and Japanese from a single request.

XIVAPI does something unusual: it does not invent a schema. What you get back are the game's own EXD data sheet columns, in the game's own PascalCase, with all their oddities intact. That is why an item response opens with `AdditionalData`, `Adjective`, `AetherialReduce` and `AlwaysCollectable` — alphabetical column order from the sheet, not a designed API contract. It is more work to read and vastly more complete than a curated alternative would be, and it means data appears here the moment it exists in the client files.

Two practical consequences. First, localisation is baked into the column names rather than negotiated with a header: you get `Description`, `Description_de`, `Description_en`, `Description_fr` and `Description_ja` as sibling keys on the same object. Second, the default response is enormous — a single item pulls in nested `BaseParam` objects with all their own localised descriptions — so `?columns=` is not an optimisation, it is a necessity. Pick the handful of columns you actually render and the payload drops by orders of magnitude.

Quick facts

Base URL
https://xivapi.com
Authentication
Anonymous access works for the content endpoints. A free key exists for higher rate limits, but nothing here required one.
Rate limit
No rate-limit headers came back on our capture. XIVAPI has historically asked anonymous clients to stay around 20 requests per second and to use a key above that.
Pricing
Free, community-run.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the XIVAPI

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch a Final Fantasy XIV item by id

GET https://xivapi.com/Item/1675

curl
curl 'https://xivapi.com/Item/1675'
JavaScript (fetch)
const res = await fetch("https://xivapi.com/Item/1675");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://xivapi.com/Item/1675", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "AdditionalData": 0,
  "Adjective": 0,
  "AetherialReduce": 0,
  "AlwaysCollectable": 0,
  "Article": 1,
  "BaseParam0": {
    "1HWpn%": 100,
    "2HWpn%": 140,
    "Bracelet%": 67,
    "Chest%": 135,
    "ChestHead%": 220,
    "ChestHeadLegsFeet%": 440,
    "ChestLegsFeet%": 355,
    "ChestLegsGloves%": 355,
    "Description": "Affects physical damage dealt by gladiator's arms, marauder's arms, dark knight's arms, gunbreaker's arms, pugilist's arms, lancer's arms, samurai's arms, reaper's arms, thaumaturge's arms, arcanist's arms, red mage's arms, pictomancer's arms, conjurer's arms, astrologian's arms, sage's arms, and blue mage's arms.",
    "Description_de": "Stärke: Beeinflusst die Höhe des physischen Schadens, den die Waffen der Gladiatoren, Marodeure, Revolverklingen, Faustkämpfer, Pikeniere, Druiden, Thaumaturgen, Hermetiker, Dunkelritter, Samurai, Rotmagier, Piktomaten, Blaumagier, Astrologen, Schnitter und Weisen austeilen.",
    "Description_en": "Affects physical damage dealt by gladiator's arms, marauder's arms, dark knight's arms, gunbreaker's arms, pugilist's arms, lancer's arms, samurai's arms, reaper's arms, thaumaturge's arms, arcanist's arms, red mage's arms, pictomancer's arms, conjurer's arms, astrologian's arms, sage's arms, and blue mage's arms.",
    "Description_fr": "Influence les dégâts physiques des épées, épées à deux mains, haches, armes de corps à corps, armes d'hast, katana, armes de faucheur, rapières, pistolames, bâtons, baguettes, pinceaux, grimoires, globes célestes, armes de sage et armes de mage bleu.",
    "Description_ja": "片手剣・両手

Parameters

ParameterTypeRequiredDescription
columnsqueryOptionalComma-separated column list. Use it — the default response for a single item runs to hundreds of keys. Name,Icon,ItemLevel
languagequeryOptionalPreferred language for unsuffixed string columns: `en`, `de`, `fr`, `ja`. en
idsqueryOptionalComma-separated ids for a batch fetch on a content list endpoint. 1675,1676
limit / pagequeryOptionalPage size and page number on list endpoints. 10

Response fields

(root)object
A flat dump of the game's data sheet row. Column names are the game's PascalCase identifiers, not API-designed field names.
Name / Descriptionstring
The unsuffixed column, filled according to the `language` parameter.
Description_de / _en / _fr / _jastring
Sibling localised columns, present on every translatable field. All four ship in the same response.
BaseParam0 … BaseParamNobject
Nested sheet references expanded inline, each with their own full set of localised descriptions. A major contributor to response size.
Numeric zero fieldsinteger
Columns such as `AdditionalData` and `Adjective` use `0` where you would expect null. Zero means 'none', not 'zero of something'.
Iconstring
Relative path to the icon on XIVAPI's CDN — prefix it with the host to build a usable URL.

What you can build with the XIVAPI

  • Build an FFXIV item database or market board companion
  • Look up crafting recipes and their required materials
  • Render item tooltips with correct icons and item levels
  • Serve a multilingual FFXIV reference without maintaining translations
  • Cross-reference quest and achievement data for a completionist tracker

Common errors and how to fix them

A response with hundreds of keys

Not an error — that is the unfiltered sheet row.

Fix: Add `?columns=` with only the fields you render. This is the single biggest performance win available here.

404

Unknown content type or id.

Fix: Content type names are singular and PascalCase in the path — `/Item/1675`, `/Recipe/...`, `/Quest/...`.

Empty-looking localised fields

The game itself has no translation for that row in that language.

Fix: Fall back through `_en` before showing an empty string; not every row is translated in every client language.

Timeouts on large list queries

List endpoints with no column filter can be very large.

Fix: Combine `columns` with `limit`, and page rather than requesting everything at once.

XIVAPI — frequently asked questions

Does XIVAPI require an API key?

Not for reading game content. Items, recipes, quests and the rest of the data sheets answer anonymously. A free key exists to raise rate limits for heavier use, but it is not needed to get started.

Why are XIVAPI field names so strange?

Because they are Final Fantasy XIV's own data sheet column names, passed through untouched. XIVAPI deliberately does not invent a friendlier schema, which is what lets new game data appear the moment it exists in the client files.

How do I get FFXIV data in other languages?

You already have it. Every translatable column ships with `_de`, `_en`, `_fr` and `_ja` siblings in the same response, and the `language` parameter decides what fills the unsuffixed column. No second request is needed.

How do I make XIVAPI responses smaller?

Use the `columns` parameter. A default single-item response expands nested sheet references with all their localised text; naming the four or five columns you actually display cuts the payload dramatically.

Tools that pair with this API

XIVAPI is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.