Skip to content
feedlab Request early access

Knowledge base

Feed formats

A feed format is the file structure a product feed is published in, such as CSV, RSS 2.0 XML or Parquet. The format decides how a feed can break rather than what it contains, and each page here carries the escaping rules and a complete valid example.

Product feed file formats documented by feedlab
Format Extension What it is
Content API for Shopping The Content API for Shopping is not a file format but the alternative to one: instead of publishing a feed Google fetches on a schedule, your system sends individual products to Merchant Center as JSON over HTTP. It is the only way to update Google between scheduled fetches.
Google Sheets A Google Sheets feed is a spreadsheet the channel reads directly, with a header row naming the attributes and one row per product. It removes every escaping problem a delimited file has, and it replaces them with a person who can edit the catalogue by hand.
JSONL .jsonl .ndjson A JSONL feed is one JSON object per line, each describing a single product, with no enclosing array. It is the only text format documented here that can carry nested values such as a variant dictionary, and it is read by streaming a line at a time rather than parsing the whole file.
Parquet .parquet Parquet is a binary columnar format with a declared schema, which makes it the most compact and the most strictly typed way to submit a product feed. OpenAI prefers it, and it is the only format documented here where the field types are part of the file rather than a convention.
Text (CSV) .csv .txt A CSV feed is a plain-text file with one header row naming the attributes and one row per product, fields separated by commas. It is the most widely accepted feed format and the easiest to produce, and its weakness is that any comma, quote or newline inside a value can split a row.
Text (TSV) .tsv .txt A TSV feed is the same structure as a CSV with tabs separating the fields instead of commas. Because a tab almost never appears inside product data, it needs far less quoting than a CSV, which makes it the more robust of the two delimited formats and the only one Microsoft Advertising accepts.
XML (Atom 1.0) .xml .atom An Atom 1.0 product feed carries each product as an entry element directly inside the feed root, with attributes in the Google namespace. It is accepted wherever RSS is and is stricter about the elements wrapping the products, requiring a feed id, title and updated timestamp.
XML (RSS 2.0) .xml .rss An RSS 2.0 product feed wraps each product in an item element inside a channel, with attributes carried as elements in the Google namespace. It is the most widely accepted XML format, and unlike a delimited file it cannot be broken by a comma or a line break in a description.

Frequently asked questions

Which feed format should I use?

Whichever your channel prefers, and among several accepted options the one with the fewest ways to fail. Tab-delimited text needs less escaping than CSV, and XML cannot be broken by a comma in a description but is several times larger.

Does the format affect what I can put in a feed?

Mostly no, with one exception: only JSONL and Parquet can carry nested structures such as a variant dictionary. Everything else is the same attributes written differently.

Should a product feed be compressed?

Where the channel accepts it, yes. A product feed is highly repetitive text that compresses to a small fraction of its size, and OpenAI requires compression for its text formats.