Migrating from V6 to V7 (FAQ)
The biggest changes between the old API (V6) and V7 are in how you search for and retrieve products, and in the removal of the "sets". Below are the most frequently asked questions for anyone moving from V6 to V7.
Does V7 use the same database as V6?
No. V7 runs on a new, separate database. Every day a migration runs from the V6 database to the V7 database, keeping the data in V7 up to date.
As a result, V7 has:
- Its own login credentials — your V6 username, password and tokens do not automatically work in V7.
- Its own ids — ids from V6 do not necessarily match those in V7. In V7, always use the ids that V7 itself returns.
- Its own data — V7 works exclusively with the data in its own database. Changes made in V6 only become visible in V7 after the daily migration.
Why was the search call split into lookup + get?
In V6 a single call did everything: POST api/Product/Search searched for
products and returned the full product data in the same response (limited to a
maximum of 50 full products per call).
In V7 this has become two separate steps:
1. Lookup — search for products and get back a list of PS ids (psids).
2. Get — then retrieve the full product data per psid.
This makes searching faster and lighter: you only fetch the full data for the products you actually need.
How do I search for products now? (lookup)
Use one of the lookup routes. Each route searches on a different key and
returns the psids your account is allowed to see (access is baked in — see below).
Append /minimal to the route to get back only the psids (as integers);
that is exactly what you need for the next step.
POST /v7/json/lookup/assortment
POST /v7/json/lookup/assortment/minimal
{
"assortmentId": "…",
"lastUpdatedAfter": "2026-07-01T00:00:00",
"targetMarket": 1,
"pageNumber": 1,
"pageSize": 250
}
Available search keys: gtin, psid, articlenumber,
gln, assortment, brandid and all.
The response splits results into changed, deleted,
notFound, notChanged and superseded.
How do I retrieve the product data? (get)
Request the product sheet per psid:
GET /v7/json/productsheet/{psid}
GET /v7/json/productsheet/{language}/{psid}
Use xml instead of json for an XML response. The language
(nl, en, de, fr) is optional.
Note: the OutputType (how many fields you get back) is no longer part of the URL;
it is determined by your account/token.
What happened to the sets (public, brand, producer, catalog)?
The separate sets no longer exist in V7. In V6 you enabled booleans such as
ShowPublicProductSet or ShowMyCatalogProductSet in the
Search body. In V7 access is baked in: based on your token
(roles, relation and subscriptions) the API automatically determines which products you
may see. So you always get back only the products you are entitled to.
If you want to mimic a specific "set", you do so via the matching lookup route:
| V6 set | V7 |
|---|---|
| Catalog set | lookup/assortment — catalog = assortment |
| Brand set | lookup/brandid (on brandId) |
| Public set (everything) | lookup/all |
| Producer set | No separate call needed — your own products are automatically part of your access |
Note: this part is still evolving and not every V6 set has an exact one-to-one counterpart. Missing a specific scenario? Please get in touch with us.
A typical V7 flow
// 1. Look up the psids (e.g. for an assortment)
POST /v7/json/lookup/assortment/minimal
// → { "changed": [59, 12345, …], … }
// 2. Retrieve the product sheet per psid
GET /v7/json/productsheet/59
GET /v7/json/productsheet/en/59