Articles on: For developers
This article is also available in:

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)


⚠ IMPORTANT ! Product and category identifiers (id) must remain unchanged in each subsequent feed throughout the entire period of working with Pricer24.


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.


Changing the id of a product or category that has already been transferred may lead to the loss of previous matches between your products and competitors’ offers.

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_idprice_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

Was this article helpful?

Share your feedback

Cancel

Thank you!