Prix de l'or par carat : 24K, 22K, 18K et comment les calculer
Ce que signifient 24K, 22K et 18K, le lien avec les titres 916 et 750, comment calculer le prix au gramme de l'or par carat et l'obtenir via une API.
Carat, titre et pureté
Le carat mesure la pureté de l'or, et non son poids. L'or pur titre 24 carats : la teneur en or d'un alliage est donc son nombre de carats divisé par 24. L'or 18 carats se compose de 18 parts d'or et de 6 parts d'autres métaux, comme l'argent, le cuivre, le zinc ou le palladium, qui rendent l'alliage plus dur, modifient sa couleur et réduisent son coût.
Le mot carat (noté K, kt ou ct) prête pourtant à confusion. En français, il désigne à la fois la pureté de l'or et l'unité de 200 milligrammes qui sert à peser les pierres précieuses. L'anglais américain distingue karat (pureté) et carat (poids des pierres), tandis que l'anglais britannique emploie souvent carat dans les deux cas. L'endpoint MetalAPI s'appelle /carat, selon cet usage plus large, mais il renvoie des prix de l'or par pureté, et non par poids de pierre.
La formule qui relie un prix par carat au marché de l'or est courte :
prix au gramme de l'or à K carats = prix au comptant par once troy ÷ 31,1034768 × K ÷ 24
Cet article explique chaque élément de cette formule, montre comment faire le calcul vous-même et comment obtenir le résultat via l'API, puis examine ce qui sépare le prix de l'or par carat du prix d'un bijou fini.
Pureté par carat et titre en millièmes
De nombreux pays marquent l'or par son titre en millièmes, c'est-à-dire le nombre de parts d'or pour mille, à la place du carat ou en complément. Les deux échelles se correspondent directement :
| Carats | Pureté (K ÷ 24) | Teneur en or | Titre (millièmes) |
|---|---|---|---|
| 24K | 1,0000 | 100 % | 1000 (lingots à 999 ou 999,9) |
| 23K | 0,9583 | 95,8 % | 958,3 |
| 22K | 0,9167 | 91,7 % | 916,7 (poinçon 916) |
| 21K | 0,8750 | 87,5 % | 875 |
| 20K | 0,8333 | 83,3 % | 833,3 |
| 18K | 0,7500 | 75,0 % | 750 |
| 16K | 0,6667 | 66,7 % | 666,7 |
| 14K | 0,5833 | 58,3 % | 583,3 (poinçon 585) |
| 12K | 0,5000 | 50,0 % | 500 |
| 10K | 0,4167 | 41,7 % | 416,7 (poinçon 417) |
| 9K | 0,3750 | 37,5 % | 375 |
| 8K | 0,3333 | 33,3 % | 333,3 (poinçon 333) |
Deux détails comptent lorsque vous transformez ce tableau en prix :
- Les poinçons sont des minimums. Un poinçon 585 signifie au moins 58,5 % d'or, un peu plus que 14 ÷ 24 = 58,33 %. Chaque pays fixe ses propres normes et tolérances : le titre réel d'une pièce peut donc se situer légèrement au-dessus de la fraction correspondant au carat.
- L'or pur n'est pas tout à fait à 1,0000. Les lingots d'investissement titrent généralement 999,9 ou 999. Le prix 24K de MetalAPI utilise une pureté d'exactement 1, ce qui le rend égal au prix au comptant.
Les carats qui comptent dépendent de l'endroit où vous vendez. Le 22K et le 21K sont traditionnels en bijouterie en Asie du Sud et dans une grande partie du Moyen-Orient, le 18K et le 14K sont répandus en Europe et en Amérique du Nord, et le 9K est courant au Royaume-Uni. Prenez en charge ce que vos clients achètent réellement.
Calculer soi-même les prix par carat
L'or au comptant est coté à l'once troy d'or pur. Pour obtenir un prix au gramme par carat, convertissez l'unité, puis appliquez la pureté. Avec le prix au comptant d'exemple de la documentation MetalAPI, 3 997,89 USD l'once troy (une illustration, pas un prix en direct) :
- Prix au gramme de l'or pur : 3 997,89 ÷ 31,1034768 = 128,5351 USD.
- Prix au gramme de l'or 22 carats : 128,5351 × 22 ÷ 24 = 117,8239 USD.
- Prix au gramme de l'or 18 carats : 128,5351 × 18 ÷ 24 = 96,4014 USD.
Le même calcul en JavaScript, avec une seconde fonction qui part du titre plutôt que du carat :
const GRAMS_PER_TROY_OZ = 31.1034768;
/** Prix au gramme de l'or à un carat donné (24 = or pur). */
export function karatPricePerGram(spotPerTroyOz, karat) {
return (spotPerTroyOz / GRAMS_PER_TROY_OZ) * (karat / 24);
}
/** Prix au gramme pour un titre en millièmes, comme 585 ou 916. */
export function finenessPricePerGram(spotPerTroyOz, fineness) {
return (spotPerTroyOz / GRAMS_PER_TROY_OZ) * (fineness / 1000);
}
const spot = 3997.89; // prix d'exemple, USD par once troy
for (const k of [24, 22, 21, 18, 14, 10, 9]) {
console.log(`${k}K`, karatPricePerGram(spot, k).toFixed(4));
}
// 24K 128.5351, 22K 117.8239, 21K 112.4683, 18K 96.4014, 14K 74.9788, 10K 53.5563, 9K 48.2007
console.log("585", finenessPricePerGram(spot, 585).toFixed(4)); // 75.1931Partez d'un prix au comptant déjà exprimé dans votre devise de vente (base=EUR, base=INR, etc.), afin que le prix de l'or et le taux de change correspondent au même instant. Convertir un prix au gramme en dollars avec un taux de change relevé à un autre moment ajoute une erreur qui n'a rien à voir avec l'or.
Si vous fixez vos prix d'après le poinçon plutôt que d'après le carat, utilisez la fonction basée sur le titre. L'écart entre 583,3 et 585 représente environ 0,3 % de la valeur du métal : peu de chose au gramme, mais visible sur une chaîne lourde. Quel que soit votre choix, appliquez-le de façon cohérente et documentez-le.
Obtenir les prix par carat avec l'endpoint /carat
MetalAPI fait ce calcul pour vous avec /carat, disponible sur tous les plans payants à partir de Lite. Il accepte les paramètres suivants :
carat:24(par défaut),23,22,21,20,18,16,14,12,10,9,8ouall.base: la devise des prix,USDpar défaut.unit:troy_ozpar défaut ;gramest le choix habituel en bijouterie.date: une dateYYYY-MM-DDfacultative pour obtenir les prix par carat d'un jour passé.
curl "https://metalapi.com/api/v1/carat?carat=22&unit=gram&base=EUR" \
-H "X-API-Key: $METALAPI_KEY"La réponse, avec les valeurs d'exemple de la référence de l'API :
{
"success": true,
"carat": "22",
"date": "2026-10-24",
"base": "EUR",
"timestamp": 1792834892,
"rates": {
"XAU22K": { "price": 105.5297, "unit": "gram", "carat": "22", "purity": 0.916667 }
}
}Avec carat=all, vous obtenez tous les carats en une seule requête, pour le même coût qu'un seul carat. Chaque entrée a pour clé XAU<karat>K et contient le prix, l'unité, le carat et la pureté appliquée. Cet exemple est abrégé :
{
"success": true,
"carat": "all",
"date": "2026-10-23",
"base": "USD",
"timestamp": 1792765800,
"rates": {
"XAU24K": { "price": 128.53515, "unit": "gram", "carat": "24", "purity": 1 },
"XAU22K": { "price": 117.82389, "unit": "gram", "carat": "22", "purity": 0.916667 },
"XAU18K": { "price": 96.401361, "unit": "gram", "carat": "18", "purity": 0.75 },
"XAU14K": { "price": 74.978836, "unit": "gram", "carat": "14", "purity": 0.583333 }
}
}Lire tous les carats en dirhams des Émirats au gramme depuis Node.js 18 ou une version ultérieure :
const params = new URLSearchParams({ carat: "all", unit: "gram", base: "AED" });
const res = await fetch(`https://metalapi.com/api/v1/carat?${params}`, {
headers: { "X-API-Key": process.env.METALAPI_KEY },
});
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code} ${data.error.type}: ${data.error.info}`);
for (const row of Object.values(data.rates)) {
console.log(`${row.carat}K: ${row.price.toFixed(2)} ${data.base} per ${row.unit}`);
}Sur le plan Free, /carat renvoie l'erreur 106 (plan_restriction) accompagnée d'une upgrade_url. Un carat non pris en charge renvoie 210 (invalid_carat). Sur Free, vous pouvez toujours appliquer la formule ci-dessus au prix de l'or fourni par /latest, avec l'actualisation quotidienne du plan Free.
Des prix dans votre devise locale
Les bijoux s'achètent et se vendent en devise locale ; définissez donc base sur la devise de la boutique : INR pour les roupies, AED pour les dirhams, TRY pour les livres turques, GBP pour les livres sterling. Les 57 devises prises en charge fonctionnent toutes, et comme l'or et le taux de change proviennent d'un même instantané, les chiffres sont cohérents entre eux.
# Tous les carats en roupies indiennes au gramme
curl "https://metalapi.com/api/v1/carat?carat=all&unit=gram&base=INR" \
-H "X-API-Key: $METALAPI_KEY"
# 22K en livres turques au gramme, à une date passée
curl "https://metalapi.com/api/v1/carat?carat=22&unit=gram&base=TRY&date=2026-10-01" \
-H "X-API-Key: $METALAPI_KEY"Pour les marchés qui cotent en tolas, multipliez le prix au gramme par 11,6638038, ou le prix à l'once troy par 0,375. Un lingot de 10 tolas pèse 116,638 g. L'article sur la conversion des unités donne les facteurs exacts pour les tolas, les taels et les pennyweights.
Trois points pratiques :
- La fraîcheur dépend de votre plan.
/caratrenvoie des prix aussi frais que votre plan le permet : toutes les 30 minutes sur Lite, toutes les 10 minutes sur Standard, jusqu'à toutes les 5 secondes sur Enterprise. Une boutique qui met à jour son tableau de prix quelques fois par jour n'a pas besoin du plan le plus rapide. - Affichez l'horodatage. Le champ
timestampindique aux clients et aux auditeurs à quel moment le prix a été relevé. - Le week-end. L'or au comptant cesse de s'échanger le vendredi à 17:00, heure de New York, et reprend le dimanche à 17:00 : les prix par carat restent donc au dernier prix du vendredi pendant tout le week-end.
Du prix par carat au prix du bijou
Le prix par carat est la valeur de l'or contenu. Le prix d'une pièce finie y ajoute plusieurs composantes, dont le calcul varie selon le pays, les usages du métier et l'entreprise. Les éléments habituels sont :
- Valeur du métal : poids net d'or × prix au gramme du carat. Les pierres, les perles et les autres parties qui ne sont pas en or sont pesées séparément et exclues.
- Façon : main-d'œuvre et création, facturées au gramme, en pourcentage de la valeur du métal ou sous forme de montant fixe par pièce. Certains marchés ajoutent aussi une provision pour le métal perdu lors de la fabrication.
- Pierres et autres matériaux : tarifés selon leurs propres critères.
- Frais de poinçonnage ou de certification, le cas échéant.
- Taxes : TVA, GST ou taxe sur les ventes. Les taux et les règles varient selon les pays, et certains traitent l'or d'investissement différemment des bijoux. Dans l'UE, par exemple, l'or d'investissement relève d'un régime spécial d'exonération de TVA qui ne couvre pas les bijoux.
Voici un calculateur de devis minimal qui garde ces éléments séparés. Il utilise Decimal de bout en bout pour que les centimes de la facture tombent juste :
from dataclasses import dataclass
from decimal import Decimal, ROUND_HALF_UP
CENT = Decimal("0.01")
@dataclass
class QuoteInput:
weight_g: Decimal # poids net d'or, pierres exclues
karat_price_per_g: Decimal # depuis /carat?unit=gram, dans votre devise
making_per_g: Decimal = Decimal("0") # façon fixe au gramme
making_pct: Decimal = Decimal("0") # ou une part de la valeur du métal
stones: Decimal = Decimal("0") # tarifées séparément
tax_rate: Decimal = Decimal("0") # TVA, GST ou taxe sur les ventes selon votre juridiction
def jewelry_quote(q: QuoteInput) -> dict:
metal = q.weight_g * q.karat_price_per_g
making = q.weight_g * q.making_per_g + metal * q.making_pct
subtotal = metal + making + q.stones
tax = subtotal * q.tax_rate
parts = {"metal": metal, "making": making, "stones": q.stones, "tax": tax, "total": subtotal + tax}
return {k: v.quantize(CENT, rounding=ROUND_HALF_UP) for k, v in parts.items()}
# Valeurs d'illustration uniquement : 10 g de 22K au prix d'exemple de 117.8239 le gramme,
# une façon de 12 % et un taux de taxe de 20 %.
print(jewelry_quote(QuoteInput(
weight_g=Decimal("10"),
karat_price_per_g=Decimal("117.8239"),
making_pct=Decimal("0.12"),
tax_rate=Decimal("0.20"),
)))Avec ces valeurs, il affiche une valeur du métal de 1 178,24, une façon de 141,39, des taxes de 263,93 et un total de 1 583,55. Le taux de façon et le taux de taxe sont des valeurs fictives, pas des recommandations. Savoir si une taxe s'applique, sur quelles composantes et à quel taux est une question à poser à votre expert-comptable ou à votre conseiller fiscal.
Cet article explique des calculs. Il ne constitue pas un conseil en investissement, en tarification ou en fiscalité.
Rachat et valeur de l'or de casse
Racheter de l'or à des clients fonctionne dans l'autre sens. Le point de départ est la même valeur du métal, mais elle doit reposer sur le titre réellement mesuré plutôt que sur le carat poinçonné :
valeur de casse = poids en grammes × titre ÷ 1 000 × prix au comptant au gramme − frais d'affinage et de traitement
Les acheteurs testent généralement le titre, par exemple par fluorescence X (XRF) ou à la pierre de touche et aux acides, car les pièces anciennes peuvent ne pas atteindre leur poinçon et la soudure des chaînes abaisse la pureté moyenne. Gardez la décote comme un paramètre explicite et documenté dans votre code au lieu de la cacher dans un prix au comptant minoré, afin qu'elle apparaisse clairement dans les devis et les audits.
Utilisez ici le prix 24K au gramme (ou /latest avec unit=gram) comme prix au comptant, et appliquez vous-même le titre mesuré. Les prix par carat de /carat supposent la fraction exacte K ÷ 24, ce qui convient pour fixer le prix d'articles neufs par carat, mais pas pour un résultat d'essai comme 912.
Checklist de mise en œuvre
- Demandez
carat=allune fois et mettez le résultat en cache pendant l'intervalle de mise à jour de votre plan, au lieu d'appeler l'API pour chaque carat ou chaque produit. - Conservez le prix, l'horodatage et la pureté utilisés avec chaque devis et chaque commande, pour pouvoir expliquer un chiffre plus tard.
- Utilisez
datepour les prix par carat historiques, par exemple lorsque vous recalculez une ancienne facture. L'article Prix historiques de l'or et de l'argent via API traite des plages plus longues et du stockage local. - N'arrondissez qu'au moment de l'affichage, en utilisant le nombre de décimales propre à chaque devise.
- Gardez la clé API sur votre serveur. Pour afficher un tableau des prix de l'or sur le site d'une boutique sans écrire de code, utilisez un widget intégrable.
- Si vous n'avez besoin que de quelques carats, la formule appliquée aux données de
/latestfonctionne sur tous les plans./caratvous épargne le calcul et renvoie des chiffres prêts à l'emploi et cohérents sur les plans payants.
La documentation de l'API décrit chaque paramètre de /carat, la page des tarifs indique les plans qui l'incluent, et le guide de l'API du prix de l'or couvre plus généralement les clés, les erreurs et la mise en cache. Pour l'essayer avec votre propre catalogue, inscrivez-vous et obtenez une clé.
Essayez avec vos propres données
Créez un compte gratuit et envoyez votre première requête en moins de deux minutes. 100 requêtes par mois, sans carte bancaire.
À lire aussi
API du cours de l'or : le guide complet pour les développeurs
Utiliser une API du cours de l'or : obtenir une clé, l'appeler en curl, JavaScript et Python, bien lire les taux, gérer historique, erreurs, quotas et cache.
Ajouter un widget de prix de l'or en direct à votre site web
Ajoutez un widget de prix de l'or en direct à WordPress, Shopify ou une page HTML : créez-le dans le tableau de bord MetalAPI, réglez-le et collez deux lignes.
Créer un calculateur de prix de bijoux avec le cours de l'or en direct
Créez en TypeScript et en Python un calculateur de prix de bijoux côté serveur : or au gramme en direct, carats, façon, TVA et cache adapté à votre quota.