Skip to content

Bulk Data Files

TCG Land is publishing a set of different types of bulk data files containing prices info.

This data is published in a daily basis. The publishing time is not exact, and it depends on the duration of few internal processes. In any case, you can be sure that you will be able to find the latest data published at 9am UTC (3am CST/GMT-6).

The data is exposed on three different formats:

Bulk Data CSV file

Endpoint: https://api.tcg.land/bulkdata/v1/mtg_prices-latest.csv

Please, use the header of the CSV file to know the location of every column. We are pretty sure that the order will not change in the same version, but it’s a good practice to use the header to know the location of every column. On this way, in the unlikely case of a change in the order of the columns, you will not have problems.

Format:

Name
TypeRequiredDescription
set_idstringyesCard’s set code. Ex. 10e
card_idstringyesCard’s code. Could contains non-numeric characters, such as letters or ★. Ex. 48★
languagestringyesLanguage of the card. At the moment, only supported: es, en, ph and ja
finishstringyesFinish of the card. Supported values: foil, nonfoil, etched
tcgland_idstringyesUnique ID/SKU for this card in TCG Land’s database. Ex. mtg_single_10e_48★_en
scryfall_idstringyesUnique ID for this card in Scryfall’s database.
oracle_idstringnoCommon Oracle ID for this card in Scryfall’s database.
urlstringyesURL to the card on TCG Land website. Ex. https://www.tcg.land/es/magic/productos/single/en/10e/tenth-edition/48
timestampdateyesUpdate time in ISO 8601 format. Ex. 2024-05-21T07:53:56Z
price_mxnfloatyesPrice in Mexican’s Peso ($MXN currency).
price_usdfloatyesPrice in US Dollars ($USD currency).

Request Example:

Terminal window
curl https://api.tcg.land/bulkdata/v1/mtg_prices-latest.csv -O mtg_prices-latest.csv

Bulk Data JSON file

It contains all prices in a JSON array. Following the json schema used to generate the file, were you can find the description, type, etc.

Endpoint: https://api.tcg.land/bulkdata/v1/mtg_prices-latest.json

Schema:

{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "array",
"items": {
"$ref": "#/definitions/TCGLandPrice"
},
"definitions": {
"TCGLandPrice": {
"title": "TCGLandPrice",
"type": "object",
"additionalProperties": false,
"properties": {
"setId": {
"type": "string",
"description": "Card's set code. Ex. 10e"
},
"cardId": {
"type": "string",
"description": "Card's code. Could contains non-numeric characters, such as letters or ★. Ex. 48★"
},
"language": {
"type": "string",
"enum": [
"es",
"en"
],
"description": "Language of the card."
},
"finish": {
"type": "string",
"enum": [
"foil",
"nonfoil",
"etched"
],
"description": "Finish of the card."
},
"tcglandId": {
"type": "string",
"description": "Unique ID/SKU for this card in TCG Land's database. Ex. mtg_single_10e_48★_en"
},
"scryfallId": {
"type": "string",
"format": "uuid",
"description": "Unique ID for this card in Scryfall's database."
},
"oracleId": {
"type": "string",
"format": "uuid",
"description": "Common Oracle ID for this card in Scryfall's database."
},
"priceMxn": {
"type": "number",
"description": "Price in Mexican's Peso ($MXN currency)."
},
"priceUsd": {
"type": "number",
"description": "Price in US Dollars ($USD currency). "
},
"url": {
"type": "string",
"format": "uri",
"qt-uri-protocols": [
"https"
],
"description": "URL to the card on TCG Land website."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Update time in ISO 8601 format. Ex. 2024-05-21T07:53:56Z"
}
},
"required": [
"cardId",
"finish",
"language",
"priceMxn",
"priceUsd",
"scryfallId",
"setId",
"tcglandId",
"timestamp",
"url"
]
}
}
}

Request Example:

Terminal window
curl https://api.tcg.land/bulkdata/v1/mtg_prices-latest.json -O mtg_prices-latest.json

Bulk Data JSON Lines file

It contains all prices in a JSON Lines file. A Json Line file contains one json per line instead a JSON array. Every line contains a JSON object equivalent to an element of the JSON array in the JSON bulk data file.

Following the json schema used to generate every line of the file, were you can find the description, type, etc.

Endpoint: https://api.tcg.land/bulkdata/v1/mtg_prices-latest.jsonl

Schema:

{
"$schema": "http://json-schema.org/draft-06/schema#",
"type": "object",
"title": "TCGLandPrice",
"properties": {
"setId": {
"type": "string",
"description": "Card's set code. Ex. 10e"
},
"cardId": {
"type": "string",
"description": "Card's code. Could contains non-numeric characters, such as letters or ★. Ex. 48★"
},
"language": {
"type": "string",
"enum": [
"es",
"en"
],
"description": "Language of the card."
},
"finish": {
"type": "string",
"enum": [
"foil",
"nonfoil",
"etched"
],
"description": "Finish of the card."
},
"tcglandId": {
"type": "string",
"description": "Unique ID/SKU for this card in TCG Land's database. Ex. mtg_single_10e_48★_en"
},
"scryfallId": {
"type": "string",
"format": "uuid",
"description": "Unique ID for this card in Scryfall's database."
},
"oracleId": {
"type": "string",
"format": "uuid",
"description": "Common Oracle ID for this card in Scryfall's database."
},
"priceMxn": {
"type": "number",
"description": "Price in Mexican's Peso ($MXN currency)."
},
"priceUsd": {
"type": "number",
"description": "Price in US Dollars ($USD currency). "
},
"url": {
"type": "string",
"format": "uri",
"qt-uri-protocols": [
"https"
],
"description": "URL to the card on TCG Land website."
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Update time in ISO 8601 format. Ex. 2024-05-21T07:53:56Z"
}
},
"required": [
"cardId",
"finish",
"language",
"priceMxn",
"priceUsd",
"scryfallId",
"setId",
"tcglandId",
"timestamp",
"url"
]
}

Request Example:

Terminal window
curl https://api.tcg.land/bulkdata/v1/mtg_prices-latest.jsonl -O mtg_prices-latest.jsonl