If you are a Channel Partner, your Personal Index File (PIF) and Personal Catalog File (PCF) are generated specifically for your catalog. They contain the products from your assortment that have been matched to the Icecat catalog, together with the corresponding product data available in your selected languages.
Many partners still download these files manually from the icecat.biz interface. As a result, someone needs to remember to retrieve them regularly, and the data in your system is only as up to date as the most recent manual download.
This manual explains how to retrieve both files directly over HTTP, allowing your system to download them automatically on a schedule.
What you get
What you need before you start
How long it takes: about ten minutes for the first link, then it runs on its own.
For regular updates to work, this option must be selected:
Automatic updates are only available for files that Icecat can retrieve again from the original source. A file uploaded directly from your computer is treated as a one-time snapshot and cannot be refreshed automatically.
To enable regular updates, provide a URL or FTP location that Icecat can access and that you keep up to date.
Once your file has been uploaded and matched, click Request Daily Updates.
⚠️ This button is not available for files uploaded directly from your computer. To enable it, upload your catalog again using a URL or FTP location.
This sends a request to your account manager, who will enable daily updates for your catalog. Once daily updates are enabled, you will also gain access to the two endpoints described below.
You can submit this request once every seven days. If you try again sooner, you will be notified that your request has already been submitted.
💡 After daily updates are enabled, your Personal Index File (PIF) and Personal Catalog File (PCF) are regenerated automatically after each daily product matching run. No manual action is required.
To retrieve them, follow MyIcecat → Access Tokens:
Your API token grants access to your products and Personal Files. Treat it like a password: anyone who has the token can access the same files you can.
Store the token securely in your server configuration. Do not expose it in web pages, emails, or client-side code that runs in a browser. If you suspect that the token has been exposed, replace it in MyIcecat.
https://icecat.biz/index.cgi?login_form=user_import_report;api_token=<API_TOKEN>
What to replace in this link
<API_TOKEN>
2b1a4c6d-9f3e-4a7b-8c2d-5e6f70819a2b
Replace the whole placeholder, angle brackets included. Leave everything else exactly as it is — login_form=user_import_report is a fixed value, not something you fill in.
login_form=user_import_report
So the link above becomes:
https://icecat.biz/index.cgi?login_form=user_import_report;api_token=2b1a4c6d-9f3e-4a7b-8c2d-5e6f70819a2b
If your link still contains a < or a > anywhere, it will not work. That is by far the most common mistake.
<
>
That is the whole request — the Personal Index File has no language or format options. It is always delivered as CSV, under the file name PIF.csv, and it already covers every language in your subscription: the file has one path(...) column per language.
PIF.csv
path(...)
Columns, in order:
prod_id
supplier_name
ean_upc
path(<language>)
timestamp
Your product ID
error_message
⚠️ Check the file before you import it. If your Personal Index File is not ready yet, the endpoint still answers with status 200 and returns a CSV that contains only the header row. Treat a file with no data rows as “not ready”, keep your previous copy, and try again later.
https://icecat.biz/index.cgi?login_form=csv_content;csv_file=/products_csv_lists_new/<IcecatUserID>_<LanguageCode>.<FileFormat>;api_token=<API_TOKEN>
<IcecatUserID>
00000
<LanguageCode>
INT
<FileFormat>
csv
xlsx
Replace each whole placeholder, angle brackets included. Everything else stays untouched — login_form=csv_content and the folder /products_csv_lists_new/ are fixed parts of the address, not values you choose. Keep the underscore between the User ID and the language code, and the dot before the format.
login_form=csv_content
/products_csv_lists_new/
Putting those four values in gives you:
https://icecat.biz/index.cgi?login_form=csv_content;csv_file=/products_csv_lists_new/00000_INT.csv;api_token=2b1a4c6d-9f3e-4a7b-8c2d-5e6f70819a2b
If your link still contains a < or a > anywhere, it will not work.
If you would rather not assemble it by hand, use the link builder in the section Build your links — it fills in all four values for you.
Download any Personal Catalog File from the site and look at its name. If the file is called 00000_INT.csv, your IcecatUserID is 00000.
00000_INT.csv
Use the short code of the language, for example INT, EN, DE, FR, NL_BE. Only the languages included in your subscription will return a file. The full list is in the Icecat Locales and Language Code Table.
EN
DE
FR
NL_BE
❗ Use CSV for automation. CSV is what the daily update produces, so a CSV link keeps working on its own. Excel files are only created when you generate them yourself on icecat.biz, and your next daily update replaces the Excel file with a CSV one — after which an Excel link stops returning anything. Excel is for people; CSV is for your system/machines.
Fill in your details and copy the two links straight into your own system. Nothing you type here leaves your browser.
Copy it from MyIcecat → Access Tokens. Treat it like a password.
Only the languages included in your subscription will return a file.
These links contain your api-token. Anyone who has them can download everything you can. Never publish them and never put them in code that runs in a browser.
Both endpoints answer a normal GET, so any HTTP client works. Two things to get right:
GET
Let your client unpack the file. The files are transferred compressed. With curl, add --compressed, otherwise you will save a compressed file under a .csv name:
curl
--compressed
.csv
curl --compressed -o pcf.csv "https://icecat.biz/index.cgi?login_form=csv_content;csv_file=/products_csv_lists_new/00000_INT.csv;api_token=<API_TOKEN>"
Ask whether anything changed, before downloading. Both endpoints answer a HEAD request with Last-Modified and Content-Length and no file body. Compare Last-Modified with the last file you stored and skip the download when it has not moved:
HEAD
Last-Modified
Content-Length
curl -I "https://icecat.biz/index.cgi?login_form=csv_content;csv_file=/products_csv_lists_new/00000_INT.csv;api_token=<API_TOKEN>"
💡 You may write the link with & instead of ; between the parameters if that suits your tooling better — both work, and the parameter names are not case-sensitive. The order of the parameters does not matter either.
&
;
The endpoints are older than our current REST APIs and they answer failures with an HTML page, not with a JSON error. Check the response before you import anything:
.xlsx
Read further: Icecat, Manuals