# What Is a YML Product Feed and How to Export One From Your Store

> A YML product feed is one XML file that describes your whole catalog: products, prices, stock and attributes. Here is how it is built, how each platform exports it, and what an AI assistant needs from it.

Published: 2026-08-27 | Author: Vendigit
Canonical: https://vendigit.com/journal/what-is-yml-product-feed

A YML product feed is a single file that lists every product in your store: its name, price, stock status, photos, category and attributes. Marketplaces, price comparison sites and ad platforms read it to show your products. An AI shopping assistant can read it too, and answer your customers from it. If you sell in Ukraine, your platform almost certainly produces one already. This guide explains what is inside a YML file, how to get its link out of the common platforms, and what to check before you hand it to anyone.

## What a product feed is

A product feed is a machine-readable copy of your catalog. Your storefront is built for people: pages, menus, photos. A feed is built for software: one product after another, each with the same set of fields.

Your store generates the feed from its own database, usually at a fixed web address. Whoever needs your catalog (Rozetka, Prom, Hotline, Google Merchant Center, an AI assistant) downloads that address on a schedule. You change a price in the admin, the feed changes, and every consumer picks it up on its next download.

## What YML is

YML stands for Yandex Market Language. The format was created years ago for a price comparison service, and it stuck: today it is the common catalog format of Ukrainian e-commerce. Rozetka publishes [its own YML requirements for sellers](https://sellerhelp.rozetka.com.ua/p185-pricelist-requirements.html), Prom exports and imports it, and most Ukrainian platforms can generate it.

Technically, YML is ordinary XML with an agreed set of tags. As Prom's support pages put it, YML is based on the XML standard. Anything that reads XML can read YML.

## The structure of a YML product feed

Here is a short, valid example:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2026-11-03 09:00">
  <shop>
    <name>Paint Corner</name>
    <url>https://paintcorner.com.ua</url>
    <currencies>
      <currency id="UAH" rate="1"/>
    </currencies>
    <categories>
      <category id="10">Paints</category>
      <category id="11" parentId="10">Wood paints</category>
    </categories>
    <offers>
      <offer id="DX450" available="true">
        <name>Wood paint DX-450, 2.5 l, walnut</name>
        <url>https://paintcorner.com.ua/dx-450-walnut</url>
        <price>1299</price>
        <oldprice>1450</oldprice>
        <currencyId>UAH</currencyId>
        <categoryId>11</categoryId>
        <picture>https://paintcorner.com.ua/img/dx450.jpg</picture>
        <vendor>Arbor</vendor>
        <vendorCode>DX-450-W</vendorCode>
        <description><![CDATA[Water-based paint for outdoor wood.]]></description>
        <param name="Volume">2.5 l</param>
        <param name="Colour">Walnut</param>
        <param name="Use">Outdoor</param>
      </offer>
    </offers>
  </shop>
</yml_catalog>
```

The parts that matter:

| Element | What it holds | Why it matters |
|---|---|---|
| `<yml_catalog date="…">` | The root, with the time the file was built | Tells you how fresh the file is |
| `<shop>` | Store name, URL, currencies | Context for everything below |
| `<categories>` | Your category tree; `parentId` links a subcategory to its parent | Lets a reader rebuild "Paints > Wood paints" |
| `<offers>` / `<offer>` | One `<offer>` per product or variant | The products themselves |
| `id` attribute | A stable unique code | How a reader recognises the same product next time |
| `available` attribute | `true` or `false` | In stock or not |
| `<price>`, `<oldprice>`, `<currencyId>` | Current price, the crossed-out price, currency | The numbers customers ask about most |
| `<categoryId>` | Which category the offer belongs to | Links the offer to the tree above |
| `<picture>`, `<url>` | Photo and product page | What a card or link shows |
| `<vendor>`, `<vendorCode>` | Brand and article number | Brand questions, exact matches |
| `<param name="…">` | One attribute per tag: volume, colour, size, material | The answers to "is it for outdoor use?" |

Rozetka's spec adds practical rules worth following for any consumer: UTF-8 encoding, offer ids made of Latin letters and digits that never change, and special characters such as `&` and `<` escaped in text. Bilingual stores often add `name_ua` and `description_ua` next to the main fields.

`param` deserves a second look. Most customer questions are about attributes, not names: "do you have it in 5 litres?", "is this one waterproof?". A feed with rich `param` tags can answer those. A feed with only name and price cannot.

## Other feed formats you will meet

YML is not the only option. The same catalog can also be described as:

- **Google Merchant XML.** An RSS or Atom file where fields carry a `g:` prefix: `g:id`, `g:title`, `g:price`, `g:availability`, `g:image_link`. It is described in Google's [product data specification](https://support.google.com/merchants/answer/7052112). If you advertise on Google Shopping, you already have one.
- **CSV or TSV.** A table: one row per product, one column per field. Most platforms can export one.
- **JSON.** A list of product objects, common in custom builds and headless stores.

Vendigit accepts all of these: XML (YML, Google Merchant RSS/Atom, or generic XML with repeating product records), CSV/TSV/TXT and JSON.

## How to export a YML feed from your platform

Menus change, so each step below links to the platform's own help page. If your screen looks different, follow the official page.

### Horoshop

Horoshop has two routes. Marketplace feeds (Rozetka, Hotline, Google Shopping, Facebook) live under **Marketing → Marketplaces**: you enable a feed, mark which products go into it, press generate, and open the link from the XML button. The link sits on your own domain. See [Horoshop's article on marketplace feeds](https://help.horoshop.ua/uk/articles/2446965-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BD%D1%96-%D1%84%D1%96%D0%B4%D0%B8-%D0%B4%D0%BB%D1%8F-%D0%B7%D0%BE%D0%B2%D0%BD%D1%96%D1%88%D0%BD%D1%96%D1%85-%D0%BC%D0%B0%D0%B9%D0%B4%D0%B0%D0%BD%D1%87%D0%B8%D0%BA%D1%96%D0%B2) for tariff limits.

The second route is the Prom export: **Products → Export → XML (Prom, main language)**, then Generate. Horoshop's [Prom feed guide](https://help.horoshop.ua/en/articles/4301171-product-feed-for-prom-ua) explains how to pick which attributes go into it per category and how to switch on auto-generation. Setup with Vendigit is covered step by step in [our Horoshop guide](/journal/ai-assistant-for-horoshop).

### Prom.ua

In the Prom seller cabinet, product export lets you choose a YML file and generate a link to it. According to Prom's support pages, export is available on paid packages, and the file is built at the moment the link is requested, so it is always current. See Prom's help article on [exporting products and groups](https://support.prom.ua/hc/uk/articles/360004961057). More in [our Prom.ua guide](/journal/ai-chatbot-for-prom-ua).

### WooCommerce

WooCommerce itself exports products as CSV: **Products → All Products → Export → Generate CSV**, as described in the [official CSV importer and exporter docs](https://woocommerce.com/document/product-csv-importer-exporter/). That gives you a file, not a living link. For a feed URL that updates on its own, stores usually install a product feed plugin that publishes YML or Google Merchant XML on the store's domain. Details in [our WooCommerce guide](/journal/ai-chatbot-for-woocommerce).

### OpenCart

Current OpenCart versions have no built-in YML export. Feeds come from extensions in the [OpenCart Marketplace](https://www.opencart.com/index.php?route=marketplace/extension): there are YML exporters for Ukrainian marketplaces and Google Merchant feed generators. Check that the extension supports your OpenCart version. See [our OpenCart guide](/journal/ai-assistant-for-opencart).

### Shopify and Magento

Neither uses YML natively. Shopify exports a CSV from **Products → Export** ([Shopify help](https://help.shopify.com/en/manual/products/import-export/export-products)); larger exports arrive by email. Magento (Adobe Commerce) exports a CSV from **System → Data Transfer → Export** with the entity type set to Products ([Adobe docs](https://experienceleague.adobe.com/en/docs/commerce-admin/systems/data-transfer/data-export)). Both platforms commonly publish a Google Merchant XML feed through a feed app or extension, and that works just as well. More in [our Shopify and Magento guide](/journal/ai-assistant-for-shopify-and-magento).

## What an AI assistant takes from your feed

When you connect a feed to Vendigit, the feed becomes the assistant's only source of truth about products. Here is what happens with it:

1. **It must live on your domain.** You verify your domain with one DNS record first; the feed URL then has to be on that domain or one of its subdomains. If your feed link sits elsewhere, upload the file instead (up to 20 MB).
2. **Fields are matched automatically.** An AI model reads a few sample products and maps your fields to Vendigit's: id, name, price, old price, currency, availability, category, brand, article, photos, link. If that is unavailable, a table of known field names in English, Ukrainian and Russian (`назва`, `ціна`, `наявність`, `vendorCode`, `g:price`…) does the job. You can review the mapping in the dashboard.
3. **Categories and attributes are rebuilt.** The `<categories>` tree becomes a browsable catalog, and every `param` becomes a product attribute the assistant can search and compare by.
4. **Prices come from the feed, not from the AI.** When the assistant recommends a product, Vendigit fills in its name, price and link on the product card straight from your feed. The model is instructed not to state a price or stock level it didn't find.
5. **The feed is re-read every 6 hours.** URL feeds re-sync automatically. Uploaded files do not; you replace them when the catalog changes.

How often the data really stays fresh depends on your platform as well; we cover that in [how often to update a product feed](/journal/product-feed-sync-frequency).

## A quick check before you share your feed

Open the feed URL in a browser and look for:

- **Every product has an `id` and a name.** Products without them get skipped.
- **Ids are stable.** If ids change on every export, every reader sees a brand new catalog each time.
- **Prices are plain numbers**, like `1299` or `1299.00`, without thousands separators or currency words.
- **Availability is set** for every offer.
- **Categories are linked**: each `categoryId` exists in `<categories>`.
- **Attributes are filled** in `param` tags for the things customers ask about.
- **The file is complete.** A feed that suddenly has half its usual products is usually a broken export, not a sale.

The most common problems and their fixes are in [product feed errors and how to fix them](/journal/product-feed-errors).

## FAQ

### Is YML the same as XML?

YML is XML with a fixed set of tags for shops: `shop`, `categories`, `offers`, `offer`, `price`, `param` and so on. Every YML file is an XML file, but not every XML file is YML.

### Do I need a YML feed specifically to use Vendigit?

No. Vendigit reads YML, Google Merchant XML (RSS or Atom), other XML with repeating product records, CSV/TSV and JSON. Use whatever your platform exports most completely.

### My feed is in Ukrainian and Russian. Is that a problem?

No. Vendigit records the feed's main language and reads extra language versions of names, descriptions and attributes when the feed carries them. Customers get answers in the language they write in.

### Can I upload a file instead of giving a link?

Yes, up to 20 MB in `.xml`, `.yml`, `.csv`, `.txt` or `.json`. A file is never re-synced, though, so a link on your domain is better for anything that changes often.

### How big can a feed be?

A feed fetched by URL can be up to 128 MB (24 MB for JSON). How many products are searchable depends on your plan: 10,000 on Starter, 15,000 on Growth, 50,000 on Business.

If your store already exports a feed, you are most of the way to an assistant that answers "do you have it and how much?" from your own catalog. [Start the 14-day free trial](https://app.vendigit.com/register). No card required.
