Catalog Feeds
Overview
Catalog feeds are bulk downloads of Tradepost's product catalog — one gzip JSON file per asset type, regenerated daily. Use them to sync our catalog into your own systems instead of paginating through the API.
Requires a partner API key via the X-API-Key header — see Authentication.
Get Catalog Feeds
Returns the latest feed per asset type with a presigned download URL.
query GetCatalogFeeds($input: GetCatalogFeedsInput!) {
getCatalogFeeds(input: $input) {
feeds {
assetTypeId
assetType
format
schemaVersion
uri
uriExpiresAt
compressedSizeBytes
compressedMd5
recordCount
lastUpdated
}
error { message code }
}
}
Input Fields
| Field | Type | Required | Description |
|---|---|---|---|
| assetTypes | [String!] | No | Restrict to specific asset types by name (e.g., ["SEALED_TCG"]). Omit to list every available feed |
| assetTypeId | UUID | No | Restrict by asset type ID instead of name |
{ "input": { "assetTypes": ["SEALED_TCG"] } }
Response Fields
| Field | Description |
|---|---|
uri | Presigned download link for the feed file. Expires at uriExpiresAt — request a fresh descriptor rather than storing the URL |
compressedMd5 | MD5 of the gzip file, for integrity checks after download |
compressedSizeBytes | Download size |
recordCount | Number of product records in the file |
schemaVersion | Version of the feed file schema |
lastUpdated | When the file was generated. Compare against your last sync to skip unchanged feeds |
Downloading
curl -s https://platform-api.tradepost.co/graphql \
-H "Content-Type: application/json" \
-H "X-API-Key: tp_live_your_key_here" \
-d '{"query":"query($input: GetCatalogFeedsInput!){ getCatalogFeeds(input:$input){ feeds { assetType uri compressedMd5 recordCount lastUpdated } error { message code } } }","variables":{"input":{}}}'
Then download and decompress the uri:
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 (e.g., a Pokemon expansion) and its configurations are the individual sealed products:
{
"schemaVersion": 1,
"assetType": "SEALED_TCG",
"generatedAt": "2026-07-08T06:00:00Z",
"keys": [
{ "keyId": "29ac7644-e506-4a42-9b74-1681da3ae7b1", "keyType": "SEALED_TCG_CONDITION", "value": "UNOPENED", "displayName": "Unopened", "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": {
"description": null,
"brand": "Pokemon",
"productType": "BOX",
"format": "Collection",
"packCount": null,
"cardsPerPack": null,
"language": "English",
"retailPriceUsdCents": 12999,
"releaseDate": "2024-11-08T00:00:00Z"
}
}
]
}
]
}
| Field | Description |
|---|---|
keys | The asset type's shared key set, when one applies to every record (e.g., sealed TCG condition keys). Use these key IDs with Key Fair Values and keyCriteria |
assets[] | One entry per asset (the set for sealed TCG), with its products nested |
configurations[].assetConfigurationId | Pass to Key Fair Values and other configuration-scoped queries |
configurations[].externalIds | Source-system identifiers for matching against your own catalog |
configurations[].data | Asset-type-specific fields. The set of fields is fixed per asset type within a schemaVersion — e.g., sealed TCG carries brand, productType, format, packCount, cardsPerPack, language, retailPriceUsdCents, releaseDate |
Identity and media fields (name, slug, externalIds, imageUrl, imageVariants) are the same for every asset type; only the contents of data vary by type. The manifest's recordCount is the total number of configurations across all assets.
Fields may be null when unknown. New fields may be added within a schemaVersion; breaking changes increment it.
Available Feeds
| Asset Type | Cadence |
|---|---|
SEALED_TCG | Daily |
More asset types will be added over time — poll the descriptor rather than hardcoding the list.
© 2026 Tradepost Markets Inc. All rights reserved.