Skip to content

Releases: PrijsProfeet/supermarkt-api

2026-10-03 — je API-account: verbruik, keys en een Pro-proef

Choose a tag to compare

@birdmeister birdmeister released this 03 Oct 08:53

Je API-account: verbruik, keys en een Pro-proef op één plek. Op
www.prijsprofeet.nl/api-account/ log je in
met het e-mailadres van je key (niet met de key zelf). Je ziet er je verbruik van de
laatste 30 dagen, maakt een nieuwe key (de oude werkt dan nog 24 uur door), trekt een
key in, en vraagt vanaf een gratis key een Pro-proef aan. De beschrijving bovenaan
/docs en in deze spec verwijst er nu naar.

Geen wijziging aan de API zelf. Alleen de beschrijving in de spec veranderde; er
verandert geen endpoint, veld of waarde.

2026-10-02 — /partner/usage geeft verbruik per dag

Choose a tag to compare

@birdmeister birdmeister released this 02 Oct 08:05

/partner/usage geeft nu je verbruik per dag over 30 dagen. Het veld
daily_usage telt je aanroepen per Nederlandse kalenderdag, oudste eerst, per
endpointgroep (search, products, deals, match, shelf_prices,
price_history, forecast, overig) en per statusklasse. Twee klassen zijn apart:
429 (je loopt tegen je limiet aan) en 403_plan (je vraagt betaalde data zonder
betaald plan). Kunnen we de historie even niet lezen, dan is het veld null, nooit
een lege lijst.

plan noemt voortaan het plan dat geldt: een verlopen trial leest free, en
/partner/usage werkt na het verlopen gewoon door.

Uitbreiding, geen nieuwe beperking. Er komt een veld bij; er verdwijnt geen veld.

2026-10-01 — /shelf-prices geeft image_url

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 14:59

/shelf-prices geeft nu ook image_url. Een productfoto bij de schapprijs, waar
de keten er een meelevert: PLUS, Ekoplaza, Colruyt en Delhaize. Bij de andere ketens
is het veld null. Hetzelfde veld als op /products en /search.

Uitbreiding, geen nieuwe beperking. Er komt een veld bij; er verdwijnt geen veld
en er verandert geen waarde.

2026-10-01 — /shelf-prices noemt de eenheid van unit_price

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 14:37

/shelf-prices noemt nu de eenheid van unit_price. Elke rij draagt een veld
unit: kg, L of stuk, dezelfde woorden als op /products en /search. Tot nu
toe gaf /shelf-prices wel de prijs per eenheid maar niet welke eenheid, zodat je die
zelf uit quantity moest afleiden, in de spelling van elke keten. unit is null
waar unit_price dat ook is.

Uitbreiding, geen nieuwe beperking. Er komt een veld bij; er verdwijnt geen veld
en er verandert geen waarde.

2026-10-01 — retailer-parameters noemen de sleutels van elke host

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 12:01

De retailer-parameters zeggen nu welke sleutels ze per host aannemen. De spec
beschreef retailer per endpoint anders: /search noemde vier Nederlandse ketens,
/products/retailer/{retailer} drie, /shelf-prices de tien Nederlandse, en de rest
niets. Een Belgische sleutel stond nergens, terwijl die per host verschilt.

Het is de sleutel uit het retailer-veld van elk antwoord, niet de URL-slug van de
site:

  • www.prijsprofeet.nl: albert_heijn, jumbo, aldi, lidl, ekoplaza, plus,
    dekamarkt, hoogvliet, vomar, dirk
  • www.prijsprofeet.be: delhaize, albert_heijn_be, colruyt, carrefour,
    aldi_be, lidl_be, jumbo_be

Dus albert_heijn_be op .be, ook al staat de pagina daar op
/aanbiedingen/albert-heijn/. Alle acht retailer-parameters dragen nu dezelfde
tekst, en die volgt de lijst met actieve ketens. Een sleutel die de host niet voert,
staat op /products en /search in retailer_filter.ignored.

Alleen documentatie. Er verandert geen endpoint, veld of antwoord.

2026-10-01 — current_only houdt ook de schapprijs

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 11:25

current_only=true op /match/* houdt nu ook de schapprijs. De parameter
belooft "alleen wat je vandaag kunt kopen", maar hield alleen lopende acties over
(promotion_status: "active"). De rijen met "shelf", de actuele reguliere prijs
bij een keten, vielen weg, terwijl je die vandaag gewoon betaalt. Een keten zonder
lopende actie zag er daardoor uit als afwezig, ook als hij met zijn schapprijs de
goedkoopste was. Gemeten op 1 oktober over 300 lopende acties met een match:
current_only=true gaf er 102 een leeg antwoord, met de schapprijs erbij nog 3.

is_current_deal blijft wat het was: true alleen op een lopende actie, want een
schapprijs is geen deal. Wil je alleen acties, filter dan op dat veld.

Volgde je het advies van 8 september? Daar stond dat current_only=true alleen
rijen met een productpagina oplevert. Dat klopt niet meer: een shelf-rij kan
product_id: null dragen. Wil je alleen rijen met een product_id, filter dan op
is_current_deal of op product_id zelf. Het voorbeeld in
examples/matching.py rekent "vandaag te koop" nu als
active of shelf.

Uitbreiding, geen nieuwe beperking. Je krijgt meer rijen terug; er verdwijnt
geen veld en er verandert geen waarde.

2026-10-01 — de spec noemt beide winkels

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 10:49

De spec noemt nu beide winkels. De beschrijving bovenaan openapi.json sprak
alleen van "10 Nederlandse supermarkten", terwijl dezelfde spec ook geldt voor
www.prijsprofeet.be/api/v1. Hij noemt nu 10 Nederlandse en 7 Belgische ketens, en
zegt dat de host het land bepaalt: dezelfde paden, hetzelfde schema, en één key
werkt op beide. Dat stond al in de README en onder servers, maar niet in de
beschrijving die /docs en een gegenereerde client als eerste tonen.

Alleen documentatie. Er verandert geen endpoint, veld of antwoord.

2026-10-01 — unit spreekt bij elke keten kg/L/stuk

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 10:05

unit is nu bij elke keten kg, L of stuk. Aldi schreef zijn eigen
spelling: l op 14 van 414 rijen in Nederland, en in België per kg, per l en
per st. op 225 van 273 rijen. Die rijen dragen nu dezelfde woorden als de andere
ketens; unit_price verandert er niet door.

Op 15 Belgische rijen gaf Aldi een eenheidsprijs die niet te vergelijken is:
per wasbeurt, of bijv. 20 g: per kg bij één prijs voor meerdere maten (een
kruidenmix van 20, 40 of 45 g). Daar staan unit en unit_price nu op null, of
op een prijs per liter als de verpakking een inhoud noemt. Om dezelfde reden krijgt
een quantity met een keuze uit maten (200 g/250 g) geen eenheidsprijs meer. In
de spec beschrijft unit nu deze woordenschat; er stond kg, l, stuk, met een
kleine l die de API nooit teruggaf.

Correctie, geen nieuwe beperking. De waarden komen nu overeen met wat de
documentatie al beloofde. Schakel je op unit == "L", dan telt Aldi voortaan mee.
De Aldi-rijen worden bijgewerkt bij de nachtelijke run van 2 oktober.

2026-10-01 — API-voorwaarden 1.11: bronvermelding naar prijsprofeet.be

Choose a tag to compare

@birdmeister birdmeister released this 01 Oct 09:10

API-voorwaarden versie 1.11: bronvermelding naar prijsprofeet.be mag voor de
Belgische data.
Artikel 6 vroeg op Gratis en tijdens een proef altijd een link
naar prijsprofeet.nl, ook als je app alleen de Belgische ketens toont. Wie de
data van www.prijsprofeet.be/api/v1 gebruikt, linkt nu naar prijsprofeet.be
(API-voorwaarden, artikel 6).
Een kant-en-klaar fragment met kopieerknop staat op
prijsprofeet.nl/api en
prijsprofeet.be/api:

Aanbiedingen via <a href="https://www.prijsprofeet.nl">PrijsProfeet</a>

Toont jouw product de bronvermelding en staat het online, dan zetten we het
graag op Gebouwd met PrijsProfeet,
met een gewone link naar je site.

Gunstiger voor jou, geen nieuwe beperking. Een bestaande link naar
prijsprofeet.nl blijft voldoen.

2026-09-30 — API-voorwaarden 1.10: releases tellen mee voor de SLA

Choose a tag to compare

@birdmeister birdmeister released this 30 Sep 15:04

API-voorwaarden versie 1.10: releases en onderhoud tellen mee voor de
Business-SLA.
Artikel 10 sloot "onderhoud en releases" uit van de 99,5%. Dat
doet het niet meer: gaat de API tijdens een update onderuit, dan telt dat als
storing, net als elke andere. Gemeten over 142 releases in de tweede helft van
september gaf de API daarbij geen enkele 5xx en zag de externe probe 2
mislukte metingen op 528, allebei van één los certificaatincident: de
uitzondering scheelde ons een honderdste procent en gaf jou een voorbehoud.
De maandcijfers op GET /api/v1/sla/summary vanaf september zijn zonder
uitzondering berekend; de velden maintenance_minutes, release_windows en
samples.excluded staan alleen nog op juli en augustus, die onder de oude
regel zijn vastgelegd (API-voorwaarden,
artikel 10).

Gunstiger voor jou, geen nieuwe beperking.