ForHosting KIT · Maison, cuisine et loisirs

Prix au 100 g : comparez les produits, trouvez le moins cher

Un paquet de 500 g à 1,5 et un sac de 2000 g à 3 reviennent à 0,3 et 0,15 aux 100 g : le grand sac l'emporte malgré son prix affiché. Indiquez prix et poids net de chaque emballage pour voir le moins cher. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.

Les rayons d’épicerie alignent rarement des emballages égaux : une marque distributeur de cinq cents grammes, une poche premium de quatre cents grammes et un sac vrac de deux kilogrammes affichent des prix différents, si bien que l’étiquette la plus basse n’est souvent pas la meilleure affaire. Ce calculateur de prix pour cent grammes normalise chaque option sur la même base de masse, renvoie un prix unitaire clair pour chaque produit et met en évidence le choix le moins cher au coût pour cent grammes, afin que acheteurs, planificateurs de menus et applications de comparaison décident sans calcul mental.

Que envoyer : produits, prix et poids en grammes

Chaque entrée est un objet avec un prix rayon non négatif et un poids net positif en grammes. Optionnellement name, label, title, product ou sku fournissent une étiquette lisible pour reçus et tableaux d’interface ; si vous omettez le nom, le moteur attribue Produit 1, Produit 2, etc. dans l’ordre de la liste. Au moins un produit est requis ; un tableau vide échoue à la validation avant toute division.

Les prix négatifs sont rejetés car une comparaison rayon normale n’utilise pas les remboursements comme prix unitaires. Toute la validation s’exécute avant le calcul du prix unitaire, ainsi une mauvaise liste ne renvoie jamais de lignes à demi remplies. Convertissez vous-même les kilogrammes en multipliant par mille avant l’appel : ce produit reste volontairement sur une base gramme pour la clarté SEO et des contrats stables.

Décisions dans le rayon du supermarché

Les acheteurs saisissent deux ou trois formats d’emballage avec les prix rayon et voient aussitôt quelle option est vraiment la moins chère pour 100 grammes avant de remplir le caddie.

Planification de menus et achats en volume

Cuisiniers à domicile et acheteurs en gros comparent packs familiaux et petites poches sur une base de masse équitable pour les menus hebdomadaires et le réassort du garde-manger.

Que se passe-t-il si le poids est nul ou négatif ?

Le prix au 100 g est indéfini sans masse positive ; les poids nuls et négatifs sont rejetés et non facturés.

Faut-il des noms de produits ?

Les noms sont facultatifs. Si vous omettez name (ou label/title), le moteur étiquette les lignes Produit 1, Produit 2, etc., tout en calculant les prix unitaires.

Comment calculer le prix aux 100 grammes ?

Divisez le prix affiché par le poids en grammes et multipliez par 100. Un paquet de 500 g à 1,5 revient à 0,3 aux 100 g, ce qui permet de le comparer à n'importe quel autre format.

Et si le poids est indiqué en kilos ?

Multipliez-le d'abord par 1000 et saisissez le résultat en grammes : un sac de 2 kg fait 2000 g. C'est en gardant tous les produits en grammes que la comparaison reste juste.

Que se passe-t-il si deux produits sont à égalité ?

S'ils ont exactement le même prix aux 100 g, celui qui figure en premier dans votre liste est retenu comme le moins cher. Dans l'exemple, deux paquets sont à égalité à 0,3 aux 100 g.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/life/price-per-100g

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/life/price-per-100g \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"products":[{"name":"Store brand pasta","price":1.5,"weight_g":500},{"name":"Premium pasta","price":1.2,"weight_g":400},{"name":"Bulk pasta","price":3,"weight_g":2000}]}'
{
  "products": [
    {
      "name": "Store brand pasta",
      "price": 1.5,
      "weight_g": 500
    },
    {
      "name": "Premium pasta",
      "price": 1.2,
      "weight_g": 400
    },
    {
      "name": "Bulk pasta",
      "price": 3,
      "weight_g": 2000
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "life.price_per_100g",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Le moteur est des mathématiques pures et déterministes : des listes de produits identiques produisent toujours le même JSON, sans appels réseau, graines aléatoires ni dérive d’horloge. Un poids nul ou négatif échoue avec invalid_input car le prix unitaire est indéfini sans masse positive.

Que envoyer : produits, prix et poids en grammes

Envoyez un corps JSON avec un tableau products obligatoire ; les alias items, options, list et goods sont acceptés lorsque votre client utilise déjà un autre nom de champ. Le prix peut arriver comme nombre ou chaîne numérique ; les alias cost, amount et shelf_price se mappent à la même valeur pour que caisses et catalogues gardent des clés familières. Le poids doit être la masse nette comestible ou vendable en grammes, pas le carton extérieur ; les alias weight, grams, mass_g, net_weight_g et weight_grams sont pris en charge. Poids nul et poids négatif lèvent invalid_input avec un message indiquant que le poids doit être en grammes positifs — le piège classique lorsqu’un flux de codes-barres laisse la masse vide ou inversée. Les prix ou poids extrêmement grands sont plafonnés pour que les calculs de l’isolate Worker restent bornés.

Comment le prix au 100 g est calculé et comment l’option la moins chère est choisie

Pour chaque produit le moteur applique la formule habituelle du commerce de détail : le prix pour cent grammes égale le prix rayon divisé par le poids en grammes, puis multiplié par cent. Une liste d’un seul produit renvoie encore ce produit comme cheapest avec une économie nulle, utile aux pipelines qui veulent toujours la même forme de réponse. Le prix rayon est renvoyé arrondi à deux décimales façon reçu, tandis que weight_g est le nombre positif validé que vous avez envoyé. Chaque ligne de résultat inclut son index basé sur zéro, le nom d’affichage, price, weight_g et price_per_100g. L’objet cheapest est la ligne au plus bas price_per_100g ; si deux packs sont exactement à égalité, l’entrée antérieure de la liste l’emporte pour un résultat pleinement déterministe. Lorsque deux produits ou plus sont présents, savings_vs_most_expensive_per_100g indique de combien le gagnant est inférieur au prix unitaire le plus cher sur la même base de cent grammes — pratique pour des badges du type économisez tant pour cent grammes. Le champ method est toujours price_per_100g et unit est toujours per_100g pour que le code en aval puisse brancher sans renifler les formes. Produits manquants, listes vides, price ou weight manquants, champs non numériques, poids nul et poids négatif échouent avec invalid_input et ne sont pas facturés après le rejet.

Usage de l’API, tarification, parcours d’achat et limites pratiques

Appelez le calculateur gratuit de prix au 100 g dans le navigateur lorsque vous êtes en rayon, planifiez les courses de la semaine ou enseignez la lecture du prix unitaire sans installer une autre application. Gardez des listes de taille d’achat ordinaire ; le plafond de produits publié protège le runtime de l’isolate tout en couvrant des comparaisons de caddie complet. La promesse du produit est une comparaison transparente du prix unitaire sur une base de cent grammes, pas le scraping en direct de pages concurrentes — ces intentions appartiennent aux outils d’extraction et de surveillance des prix avec d’autres termes de recherche et moteurs. Utilisez l’API prépayée lorsqu’un service de menus, un bot d’épicerie, un coach budgétaire, une aide aux achats en volume ou un normaliseur de catalogue a besoin d’un contrat KIT stable à $0.002 par élément réussi ; les échecs de validation ne consomment jamais le solde après le rejet du moteur. Associez ce endpoint à des convertisseurs de devises uniquement lorsque tous les prix rayon partagent déjà une monnaie — cette capacité ne convertit pas le change ni n’applique taxe, offres multipacks ou remises de fidélité. Les auteurs qui livrent des SDK peuvent mapper le tableau products en tableaux de comparaison et afficher cheapest.name plus cheapest.price_per_100g dans une bannière de synthèse.

Applications budget et bots d’épicerie

Applications de dépenses et chatbots appellent un endpoint prépayé stable au lieu de réimplémenter le calcul du prix unitaire et les gardes de poids nul dans chaque langage client.

Comment calculer le prix au 100 g pour plusieurs produits ?

Envoyez un JSON avec un tableau products. Chaque élément nécessite price et weight_g (grammes). La réponse liste price_per_100g pour chaque ligne et un objet cheapest au plus bas prix unitaire.

Le calculateur de prix au 100 g est-il gratuit ?

L’outil navigateur s’exécute gratuitement sur votre appareil. Les appels API utilisent le solde KIT prépayé à $0.002 par élément réussi ; les échecs de validation ne sont pas facturés.

Et si deux produits ont le même prix unitaire ?

Le premier produit de votre liste avec ce price_per_100g minimal est renvoyé comme cheapest, de sorte que les égalités se résolvent de façon déterministe.

Consulter la documentation complète du KIT →