Technical specification for developing a feed to transfer a catalog to Pricer24
Purpose of the document
This article describes the technical requirements for the JSON feed (file) used to transfer your product catalog to Pricer24.
General principles for working with feeds, supported data formats, and transfer methods are described in this article.
General Requirements
You provide the feed URL, and Pricer24 regularly downloads the file with your product catalog from this link.
- Compression: not required. If needed, use gzip.
- Size limit: none.
The feed (file) must contain the complete and up-to-date product catalog. After the file is downloaded, Pricer24 automatically compares it with the current catalog and updates only what is needed.
Only the products that are present in the feed (file) at the time it is downloaded are considered up to date.
JSON feed example:
This is an example of what a feed may look like. The detailed structure and requirements for the feed fields are described below.
{
"categories": [
{ "id": "1000", "parent_id": null, "name": "Groceries" },
{ "id": "1001", "parent_id": "1000", "name": "Confectionery" },
{ "id": "1002", "parent_id": "1001", "name": "Chocolate" }
],
"price_types": [
{ "id": "1", "name": "Warsaw Store 1" },
{ "id": "2", "name": "Warsaw Store 2" },
{ "id": "3", "name": "Krakow Store 1" },
{ "id": "4", "name": "Online" }
],
"products": [
{
"id": "153",
"category_id": "1002",
"name": "Baltic Cocoa Dark Chocolate 70% 100g",
"vendor": "Baltic Cocoa",
"vendor_code": "BC-DC70-100",
"barcode": "0000000000001",
"link": "https://example.com/products/baltic-cocoa-dark-chocolate-70-100g",
"image_link": "https://example.com/products/baltic-cocoa-dark-chocolate-70-100g.jpg",
"availability": "+",
"prices": [
{ "price_type_id": "1", "price": 9.99, "currency": "PLN" },
{ "price_type_id": "2", "price": 9.49, "currency": "PLN" }
]
},
{
"id": "154",
"category_id": "1002",
"name": "Vistula Milk Chocolate with Hazelnuts 100g",
"vendor": "Vistula Sweets",
"vendor_code": "VS-MH-100",
"barcode": "0000000000002",
"link": "https://example.com/products/vistula-milk-chocolate-hazelnuts-100g",
"image_link": "https://example.com/products/vistula-milk-chocolate-hazelnuts-100g.jpg",
"availability": "-",
"prices": [
{ "price_type_id": "3", "price": 8.00, "currency": "PLN" },
{ "price_type_id": "4", "price": 8, "currency": "PLN" }
]
}
]
}
Feed structure
At the top level, the JSON feed consists of three arrays: categories, price types, and products.
- categories: product category structure
- price_types: dictionary of price types referenced by product prices
- products: detailed product catalog
{
"categories": [ ... ],
"price_types": [ ... ],
"products": [ ... ]
}
The categories[ ] array:
The categories[ ] array is used to transfer all product categories in the same hierarchy as they exist in your catalog, for example: Pet food → Cat food → Dry cat food → …
The nesting depth should match your own catalog.
The relationship between categories at different levels is set through parent_id.
Data format of the categories[ ] array:
Field | Data type | Required | Description |
id | string | Yes | Product category code (identifier). Unique within the array. Must remain unchanged in each subsequent feed. |
parent_id | string / null | Yes | Identifier of the parent category. For a root category, the value must be null. |
name | string | Yes | Product category name |
Example of the categories[ ] array:
"categories":
[
{ "id": "1000", "parent_id": null, "name": "Groceries" },
{ "id": "1001", "parent_id": "1000", "name": "Confectionery" },
{ "id": "1002", "parent_id": "1001", "name": "Chocolate" },
...
...
{ "id": "100Х", "parent_id": "100(Х-1)", "name": "Dark Chocolate"},
{ "id": "100(Х+1)", "parent_id": "100Х", "name": "Dark Chocolate 100g" }
]
The price_types[ ] array:
In the price_types[ ], you define the price types you want to synchronize with our system.
These can be standard price types or prices at specific retail locations or sales channels.
For example:
- retail price
- recommended retail price
- promotional price
- wholesale price
- purchase price
- price of a specific sales channel
Data format of the price_types[ ] array:
Field | Data type | Required | Description |
id | string | Так | Price type code (identifier). Unique within the array. Must remain unchanged in each subsequent feed. |
name | string | Так | Price type name. For example: "Retail price", "Promotional price", "RRP", "Warsaw Store", "Online". |
Examples of the price_types[ ] array:
[ { "id": "1", "name": "My price" } ]
[ { "id": "1", "name": "Retail price" },
{ "id": "2", "name": "Promotional price" },
{ "id": "3", "name": "RRP" } ]
[ { "id": "XXXX", "name": "Krakow Store" },
{ "id": "YYYY", "name": "Online" } ]
The products[ ] array:
The products[ ] array is the main part of the feed: this is where all your products, their characteristics, availability, and prices are transferred.
Data format of the products[ ] array:
Поле | Тип даних | Обов’язкове | Опис |
id | string | Yes | Product code (identifier). It is key for updating the product in Pricer24. It must be unique and permanent for the same product. Pricer24 uses it to update the same product in subsequent feed versions. |
category_id | string | Yes | Code (identifier) of the category the product belongs to. Must match one of the ids in the categories[] array. |
name | string | Yes | Product name |
vendor | string | No | Product manufacturer name |
vendor_code | string | No | Product article number (manufacturer code). Transferred if available. |
barcode | string | No | Product barcode (EAN/UPC) |
link | string (URL) | No | Link to the product page on your website |
image_link | string (URL) | No | Link to the product image |
availabilty | boolean / string | No | Current product availability status |
prices | array<object> | No | Array of product prices (price type, price value, currency) |
It is by the id that Pricer24 determines whether an existing record should be updated or a new one should be created.
The product name can be refined, translated, or expanded, but the id should not be changed if the product remains the same.
In this case, the setup will have to be done again, which will lead to avoidable financial costs.
The prices[ ] array inside the product object:
The product.prices[ ] array contains all prices you transfer for one specific product.
Each price must reference one of the price types described in the root price_types[ ] array.
First, you describe all price types in the root price_types[ ] array, and then, for each product (in product.prices[ ] ), you transfer prices with a reference to the corresponding id from the price_types[ ] dictionary..
product.prices.price_type_id ← price_types.id
Data format of the product.prices[ ] array:
Field | Data type | Required | Description |
price_type_id | string | Yes | Price type identifier. Must match one of the ids in the price_types[] array |
price | number | Yes | Product price for this price type. The value must be a number. Use a dot as the decimal separator, for example 189.99 |
currency | string | Yes | Price currency according to the ISO 4217 ("UAH", "PLN", "USD", "EUR" … ) |
The availability field - transfer rules
The availability field shows whether the product is in stock. The value can be transferred in the format already used in your catalog.
Examples:
Format | Product in stock | Product out of stock |
boolean | true | false |
string | "+" | "-" |
string | "1" | "0" |
string | "yes", "in_stock", "Х", … | "no", "out_of_stock", … |
```
Updated on: 21/05/2026
Thank you!