ShelfBase

Producten zoeken

Substring-zoekopdracht over niet-multipack food- en sportvoedingsproducten met bruikbare voedingsdata. Zoekt in weergavenaam, canonieke naam, merk en EAN. Case-insensitive. Gepagineerd, met harde cap van 50 resultaten per pagina.

GET/v1/products/search

Query-parameters

VeldTypeBeschrijving
qstringZoekterm. Leeg of ontbrekend → geeft alle publieke niet-multipack producten met voedingsdata gepagineerd terug.
countrystringOptioneel ISO 3166-1 alpha-2 primaire-marktfilter, bijvoorbeeld NL, BE, DE of GB.
pageintegerNul-geïndexeerd paginanummer. Standaard 0.
limitintegerPagina-grootte. Standaard 20, max 50.

Aanvraag

curl "https://shelfbase.app/api/v1/products/search?q=whey+protein&country=NL&limit=5" \
  -H "Authorization: Bearer sb_live_..."

Respons

{
  "data": [
    {
      "ean": "8718907400435",
      "name": "Optimum Nutrition Gold Standard 100% Whey, Vanilla Ice Cream, 2.27kg",
      "brand": "Optimum Nutrition",
      "countries": ["NL"],
      "nutrition_per_100": { ... },
      "ingredients": { ... },
      "allergens": ["MILK", "SOY"],
      "updated_at": "2026-05-10T03:12:44Z"
    }
  ],
  "total": 247,
  "page": 0,
  "limit": 5
}

Response-velden

VeldTypeBeschrijving
dataProduct[]Array van product-records. Zelfde vorm als de lookup-by-EAN response.
totalintegerTotaal aantal matches over alle pagina's.
pageintegerEcho van de gevraagde pagina.
limitintegerEcho van het gevraagde limit (na cap op 50).

Matching-gedrag

  • Substring-match (geen full-text search). De opgegeven zoekterm moet als tekstfragment voorkomen in minstens één van de doorzochte velden.
  • Case-insensitive op alle tekstvelden.
  • EAN-matching is prefix-tolerant — gedeeltelijke cijferreeksen matchen.
  • Alle resultaten hebben bruikbare voedingsdata; producten zonder voedingsdata worden niet teruggegeven.
  • Multipack-records worden uit zoekresultaten gefilterd.
  • Met country worden alleen producten teruggegeven waarvan de primaire markt matcht. Dit is catalogusdekking, geen live voorraadstatus.
  • Geen fuzzy-matching. Spelfouten matchen niet.

Fouten

  • 401 — ontbrekende of ongeldige sleutel.
  • 400 — ongeldig country-formaat.
  • 429 — quotum overschreden.