Skip to main content

Catalog Feeds

Catalog feeds are bulk downloads of Tradepost's product catalog — one gzip JSON file per asset type, regenerated daily. Use them to sync the catalog into your own systems instead of paginating through the API.

Getting the feed descriptor

Returns the latest feed per asset type with a presigned download URL:

query F($i: GetCatalogFeedsInput!) {
getCatalogFeeds(input: $i) {
feeds {
assetTypeId
assetType
format
schemaVersion
uri
uriExpiresAt
compressedSizeBytes
compressedMd5
recordCount
lastUpdated
}
error { message code }
}
}
FieldTypeDescription
assetTypes[String!]Restrict by asset type name (e.g. ["SEALED_TCG"]); omit to list every available feed
assetTypeIdUUIDRestrict by asset type ID instead of name
Response fieldDescription
uriPresigned download link. Expires at uriExpiresAt — request a fresh descriptor rather than storing the URL
compressedMd5MD5 of the gzip file, for integrity checks after download
compressedSizeBytes / recordCountDownload size and total product configurations in the file
schemaVersionFeed file schema version. New fields may be added within a version; breaking changes increment it
lastUpdatedWhen the file was generated. Compare against your last sync to skip unchanged feeds

Then download and decompress:

curl -s "<uri>" | gunzip > catalog.json

Feed file format

Each file is a gzip-compressed JSON document. Products are grouped by asset — for sealed TCG, an asset is the set (a Pokémon expansion) and its configurations are the individual sealed products:

{
"schemaVersion": 1,
"assetType": "SEALED_TCG",
"generatedAt": "2026-07-08T06:00:00Z",
"keys": [
{ "keyId": "4a9a2cca-c05f-5474-9979-428dc6f41107", "keyType": "SEALED_CONDITION", "value": "MINT", "displayName": "Mint", "ancestors": [] }
],
"assets": [
{
"assetId": "3aa2f9e1-6f36-40e5-a4b7-8de55c9ac2f1",
"name": "Scarlet & Violet: Prismatic Evolutions",
"slug": "pokemon-scarlet-and-violet-prismatic-evolutions",
"configurations": [
{
"assetConfigurationId": "72786f31-2001-48a0-9408-6a30c6e14388",
"name": "Greninja ex Ultra-Premium Collection",
"slug": "pokemon-greninja-ex-ultra-premium-collection",
"externalIds": { "TCG_PLAYER_ID": "477236" },
"imageUrl": "https://cdn.tradepost.co/media/asset-configurations/72786f31-2001-48a0-9408-6a30c6e14388/image/1000x1000.webp",
"imageVariants": {
"200x200": "https://cdn.tradepost.co/media/asset-configurations/72786f31-2001-48a0-9408-6a30c6e14388/image/200x200.webp"
},
"data": {
"brand": "Pokemon",
"productType": "BOX",
"format": "Collection",
"language": "English",
"retailPriceUsdCents": 12999,
"releaseDate": "2024-11-08T00:00:00Z"
}
}
]
}
]
}
FieldDescription
keysThe asset type's shared key set, when one applies to every record. Use these key IDs with Key Fair Values and keyCriteria
assets[]One entry per asset, with its products nested
configurations[].assetConfigurationIdPass to Key Fair Values and other configuration-scoped queries
configurations[].externalIdsSource-system identifiers for matching against your own catalog
configurations[].dataAsset-type-specific fields, fixed per asset type within a schemaVersion

Identity and media fields (name, slug, externalIds, imageUrl, imageVariants) are the same for every asset type; only data varies. Fields may be null when unknown.

Available feeds

Asset typeCadence
SEALED_TCGDaily

More asset types will be added over time — poll the descriptor rather than hardcoding the list.