10ML Perfume Finder · per sviluppatori
API di raccomandazione profumi e API per profumi simili
L’API di raccomandazione profumi di 10ML è un insieme di route GET gratuite, senza chiave API. /similar ordina i profumi per note e accordi in comune e può orientarli verso più fresco, più dolce o più scuro. /alternatives restituisce gli equivalenti di altre case. I consigli in base ai gusti di una persona vengono dal tool recommend_perfumes dell’endpoint MCP.
API per profumi simili
https://mcp.10ml.com/api/v1/similarJSON via GET, OpenAPI 3.1. Gratuita, senza chiave API.
API per profumi simili
GET /api/v1/similar?perfume= prende il nome di un profumo dell’indice e restituisce i profumi più vicini. Ogni risultato dice quali note e accordi condivide e quanto è vicino: «very close» = molto vicino, «similar vibe» = mood simile o «same spirit» = stesso spirito. Sono mostrati due risultati su quattordici, accorciati, del 21 ottobre 2026.
curl "https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus&limit=2"{
"results": [
{
"perfume": {
"name": "Club de Nuit Intense Man Parfum",
"house": "Armaf",
"family": "Fruity woody"
},
"closeness": "very close",
"shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
"shared_accords": ["fruity", "woody", "smoky", "fresh"],
"why": "shares pineapple, bergamot, apple, black currant"
},
{
"perfume": {
"name": "Club de Nuit Intense Man EDT",
"house": "Armaf",
"family": "Fruity woody"
},
"closeness": "similar vibe",
"shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
"shared_accords": ["fruity", "woody", "smoky", "musky"],
"why": "shares pineapple, bergamot, apple, black currant"
}
],
"total": 14,
"source": "10ML Fragrance Index"
}Passa house= quando un nome è ambiguo, gender= per tenere i profumi da uomo, da donna o unisex, other_houses_only=true per escludere la casa del profumo di partenza, e limit= e cursor= per sfogliare i risultati.
Orienta il risultato
steer= sposta il risultato lontano dal profumo di partenza in una direzione: fresher, sweeter, darker, lighter, longer_lasting o more_projection. Gli ultimi due richiedono un profumo presente nell’indice. Il motivo indicato in ogni risultato nomina la direzione.
curl "https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus&steer=fresher&limit=2"{
"target": {
"name": "Aventus",
"house": "Creed"
},
"results": [
{
"perfume": {
"name": "Club de Nuit Intense Man EDT",
"house": "Armaf",
"gender": "men",
"family": "Fruity woody",
"accords": ["citrus", "fruity", "smoky"]
},
"closeness": "very close",
"shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
"why": "shares pineapple, bergamot, apple, black currant; fresher than the starting point"
},
{
"perfume": {
"name": "Club de Nuit Intense Man Parfum",
"house": "Armaf",
"gender": "men",
"family": "Fruity woody",
"accords": ["fruity", "smoky", "woody"]
},
"closeness": "very close",
"shared_notes": ["pineapple", "bergamot", "apple", "black currant", "birch", "jasmine"],
"why": "shares pineapple, bergamot, apple, black currant; fresher than the starting point"
}
],
"total": 1989,
"source": "10ML Fragrance Index"
}Profumi simili partendo solo dalle note
Per un profumo che non è nell’indice, passa le sue notes= e accords= invece di un nome. Il risultato ordina l’indice rispetto a quell’elenco.
curl "https://mcp.10ml.com/api/v1/similar?notes=vanilla,saffron&limit=2"{
"target": {
"name": "your notes",
"notes": ["vanilla", "saffron"]
},
"results": [
{
"perfume": {
"name": "Vanille & Ambre",
"house": "Berdoues",
"gender": "unisex",
"family": "Vanilla amber",
"accords": ["vanilla", "amber", "sweet"]
},
"closeness": "very close",
"shared_notes": ["vanilla", "saffron"],
"why": "shares vanilla, saffron"
},
{
"perfume": {
"name": "Liquid Brun",
"house": "French Avenue",
"gender": "unisex",
"family": "Gourmand spicy",
"accords": ["warm spicy", "sweet", "vanilla"]
},
"closeness": "very close",
"shared_notes": [],
"why": "a similar overall profile"
}
],
"total": 2612,
"source": "10ML Fragrance Index"
}Equivalenti di altre case
GET /api/v1/alternatives?perfume= restituisce gli equivalenti scelti dalla redazione per un profumo famoso, sempre di altre case, ciascuno con il motivo per cui è vicino. closeness= tiene solo «very close» (molto vicino), «similar vibe» (mood simile) o «same spirit» (stesso spirito).
curl "https://mcp.10ml.com/api/v1/alternatives?perfume=Creed+Aventus&limit=2"{
"total": 5,
"original": {
"name": "Creed Aventus",
"id": "creed-aventus-edp"
},
"alternatives": [
{
"name": "Armaf Club de Nuit Intense Man",
"closeness": "very close",
"why": "Pineapple, lemon, birch smoke and musk make it smell similar, a popular alternative at a different weight.",
"id": "armaf-club-de-nuit-intense-man-parfum",
"house": "Armaf",
"source": "editors"
},
{
"name": "Al Haramain L'Aventure",
"closeness": "very close",
"why": "Fruity-smoky opening over woods and musk follows the same blueprint.",
"id": "al-haramain-laventure",
"house": "Al Haramain",
"source": "editors"
}
],
"source": "10ML Fragrance Index"
}Raccomandazioni in base ai gusti di una persona
I consigli in base ai gusti non sono una route REST: vengono dal tool recommend_perfumes del server MCP. Prende i profumi che una persona ama o non ama, le note che le piacciono o che evita, e gender, season, occasion, style e famiglia, e spiega il perché di ogni scelta. L’endpoint MCP https://mcp.10ml.com/mcp risponde anche a un semplice POST JSON-RPC, quindi qualsiasi codice può chiamarlo. La risposta qui sotto è la structuredContent della risposta, accorciata.
curl -X POST https://mcp.10ml.com/mcp \
-H "content-type: application/json" \
-H "accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"recommend_perfumes","arguments":{"likes":["Dior Sauvage"],"avoided_notes":["patchouli"],"season":"summer","limit":2}}}'{
"total": 3916,
"picks": [
{
"perfume": {
"name": "L'Immensité",
"house": "Louis Vuitton",
"gender": "men",
"family": "Aromatic aquatic",
"accords": ["fresh", "aquatic", "amber"],
"key_notes": ["sage", "labdanum", "ambroxan", "amber", "ginger"]
},
"why": "shares bergamot, labdanum, ambroxan with Sauvage Eau de Parfum; suits summer"
},
{
"perfume": {
"name": "Jean Lowe Immortel",
"house": "Maison Alhambra",
"gender": "men",
"family": "Fresh aromatic",
"accords": ["fresh", "aromatic", "woody"],
"key_notes": []
},
"why": "suits summer"
}
],
"taste": {
"liked_perfumes": ["Sauvage Eau de Parfum"],
"liked_notes": [],
"avoided_notes": ["patchouli"]
},
"source": "10ML Fragrance Index"
}Un assistente fa la stessa chiamata per te: chiedi a Claude o ChatGPT «il mio profumo di riferimento è Dior Sauvage, cosa provo dopo?» dopo aver aggiunto il server MCP per profumi.
Filtra per note, stagione e occasione
GET /api/v1/perfumes elenca i profumi per notes_include, notes_exclude, accords, family, gender, season, occasion e style, oltre che per testo libero. L’esempio qui sotto tiene i profumi che hanno sia bergamotto sia ambroxan.
curl "https://mcp.10ml.com/api/v1/perfumes?notes_include=bergamot,ambroxan&limit=2"{
"total": 90,
"results": [
{
"name": "Imagination",
"house": "Louis Vuitton",
"family": "Citrus woody",
"key_notes": ["ginger", "cinnamon", "amberwood", "ambroxan", "citron"]
},
{
"name": "L'Immensité",
"house": "Louis Vuitton",
"family": "Aromatic aquatic",
"key_notes": ["sage", "labdanum", "ambroxan", "amber", "ginger"]
}
],
"filters": {
"notes_include": "bergamot, ambroxan"
},
"relaxed": false,
"source": "10ML Fragrance Index"
}Quale route per quale domanda
| La domanda | La chiamata |
|---|---|
| Quali profumi assomigliano a questo? | GET /api/v1/similar?perfume= |
| Come questo, ma più fresco, più dolce o più scuro? | GET /api/v1/similar?perfume=&steer= |
| Conosco solo le note. | GET /api/v1/similar?notes= |
| Quali sono gli equivalenti di altre case? | GET /api/v1/alternatives?perfume= |
| Profumi con queste note per questa stagione? | GET /api/v1/perfumes?notes_include=&season= |
| Cosa si adatta a ciò che questa persona ama ed evita? | MCP tool recommend_perfumes |
L’indice comprende oltre 6.000 profumi e 285 note. La pagina dell’API per profumi documenta ogni endpoint, e la guida all’alternativa API Fragrantica mappa gli altri dati che gli sviluppatori cercano.
Domande
Esiste un’API di raccomandazione profumi?
Sì. L’API del 10ML Fragrance Index consiglia attraverso tre route gratuite: /similar per profumi simili a uno che conosci, /alternatives per gli equivalenti di altre case e /perfumes per i filtri per note, stagione e occasione. I consigli in base ai profumi e alle note che una persona ama o evita vengono dal tool recommend_perfumes a https://mcp.10ml.com/mcp. Senza chiave API.
Esiste un’API per la similarità tra profumi?
Sì: GET https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus restituisce i profumi più vicini, ciascuno con le note e gli accordi che condivide e quanto è vicino («very close» = molto vicino, «similar vibe» = mood simile, «same spirit» = stesso spirito). steer= sposta il risultato verso fresher, sweeter, darker, lighter, longer_lasting o more_projection.
Come si misura la similarità?
Per note, accordi e stile in comune. Ogni risultato elenca ciò che condivide e dice quanto è vicino. È un confronto tra i profumi in sé, non una valutazione basata sulle recensioni.
Posso ottenere profumi simili a un profumo che non è nell’indice?
Sì. Passa le sue note e i suoi accordi a /similar invece di un nome, per esempio notes=vanilla,saffron, e l’indice viene ordinato rispetto a quell’elenco.
Posso ottenere raccomandazioni in base ai gusti di un utente via REST?
Oggi non su una route REST. Il tool recommend_perfumes è sull’endpoint MCP, che risponde anche a un semplice POST JSON-RPC, come mostra l’esempio qui sopra. Le route REST coprono profumi simili, equivalenti e filtri.
È gratuita?
Sì. Non ci sono chiave API, account né registrazione. Non c’è un limite di frequenza fisso (vedi i termini), quindi conserva in cache ciò che scarichi, mantieni un ritmo moderato e avvisaci prima di volumi elevati scrivendo a contact@10ml.com.