10ML Perfume Finder · dla programistów
API rekomendacji perfum i API podobnych perfum
API rekomendacji perfum 10ML to zestaw darmowych tras GET bez klucza API. /similar porządkuje perfumy według wspólnych nut i akordów i potrafi skierować wynik ku świeższemu, słodszemu lub ciemniejszemu. /alternatives zwraca zamienniki z innych domów. Propozycje według gustu danej osoby pochodzą z narzędzia recommend_perfumes na endpoincie MCP.
API podobnych perfum
https://mcp.10ml.com/api/v1/similarJSON przez GET, OpenAPI 3.1. Za darmo, bez klucza API.
API podobnych perfum
GET /api/v1/similar?perfume= przyjmuje nazwę perfum z indeksu i zwraca perfumy najbliższe im. Każdy wynik podaje, jakie nuty i akordy ma wspólne i jak blisko jest: „very close” = bardzo blisko, „similar vibe” = podobny klimat albo „same spirit” = ten sam duch. Pokazano dwa wyniki z czternastu, skrócone, z 21 października 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"
}Podaj house=, gdy nazwa jest niejednoznaczna, gender=, by zostawić perfumy męskie, damskie lub unisex, other_houses_only=true, by pominąć własny dom perfum wyjściowych, oraz limit= i cursor= do przeglądania wyników.
Kieruj wynikiem
steer= przesuwa wynik w jednym kierunku względem perfum wyjściowych: fresher, sweeter, darker, lighter, longer_lasting lub more_projection. Dwa ostatnie wymagają perfum, które są w indeksie. Powód przy każdym wyniku nazywa ten kierunek.
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"
}Podobne perfumy tylko na podstawie nut
Dla perfum, których nie ma w indeksie, podaj ich notes= i accords= zamiast nazwy. Wynik porządkuje indeks według tej listy.
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"
}Zamienniki z innych domów
GET /api/v1/alternatives?perfume= zwraca zamienniki wybrane przez redakcję dla znanych perfum, zawsze z innych domów, każdy z powodem, dla którego jest blisko. closeness= zostawia tylko „very close” (bardzo blisko), „similar vibe” (podobny klimat) lub „same spirit” (ten sam duch).
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"
}Rekomendacje według gustu danej osoby
Propozycje według gustu nie są trasą REST: pochodzą z narzędzia recommend_perfumes serwera MCP. Przyjmuje ono perfumy, które ktoś lubi lub których nie lubi, nuty, które mu odpowiadają lub których unika, oraz gender, season, occasion, style i rodzinę, a przy każdej propozycji podaje powód. Endpoint MCP https://mcp.10ml.com/mcp odpowiada też na zwykłe żądanie POST JSON-RPC, więc może go wywołać dowolny kod. Odpowiedź poniżej to skrócone structuredContent odpowiedzi.
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"
}Asystent wykonuje to samo wywołanie za Ciebie: zapytaj Claude lub ChatGPT „Dior Sauvage to mój zapach na co dzień, co dalej?”, gdy dodasz serwer MCP perfum.
Filtruj według nut, pory roku i okazji
GET /api/v1/perfumes wyświetla perfumy według notes_include, notes_exclude, accords, family, gender, season, occasion i style, a także według wolnego tekstu. Przykład poniżej zostawia perfumy, które mają zarówno bergamotkę, jak i 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"
}Która trasa do jakiego pytania
| Pytanie | Wywołanie |
|---|---|
| Które perfumy są podobne do tych? | GET /api/v1/similar?perfume= |
| Jak te, ale świeższe, słodsze lub ciemniejsze? | GET /api/v1/similar?perfume=&steer= |
| Znam tylko nuty. | GET /api/v1/similar?notes= |
| Jakie są zamienniki z innych domów? | GET /api/v1/alternatives?perfume= |
| Perfumy z tymi nutami na tę porę roku? | GET /api/v1/perfumes?notes_include=&season= |
| Co pasuje do tego, co ta osoba lubi i czego unika? | MCP tool recommend_perfumes |
Indeks zawiera ponad 6000 perfum i 285 nut. Strona API perfum opisuje każdy endpoint, a poradnik o alternatywie dla API Fragrantica pokazuje pozostałe dane, których szukają programiści.
Pytania
Czy jest API rekomendacji perfum?
Tak. API 10ML Fragrance Index poleca przez trzy darmowe trasy: /similar dla perfum podobnych do znanych Ci, /alternatives dla zamienników z innych domów i /perfumes dla filtrów według nut, pory roku i okazji. Propozycje na podstawie perfum i nut, które ktoś lubi lub których unika, pochodzą z narzędzia recommend_perfumes pod adresem https://mcp.10ml.com/mcp. Bez klucza API.
Czy jest API podobieństwa perfum?
Tak: GET https://mcp.10ml.com/api/v1/similar?perfume=Creed+Aventus zwraca najbliższe perfumy, każde z nutami i akordami, które łączy, i informacją, jak blisko jest („very close” = bardzo blisko, „similar vibe” = podobny klimat, „same spirit” = ten sam duch). steer= przesuwa wynik ku fresher, sweeter, darker, lighter, longer_lasting lub more_projection.
Jak mierzy się podobieństwo?
Według wspólnych nut, akordów i stylu. Każdy wynik wymienia, co łączy, i podaje, jak blisko jest. To porównanie samych perfum, a nie ocena z opinii.
Czy mogę dostać podobne perfumy do perfum, których nie ma w indeksie?
Tak. Podaj ich nuty i akordy do /similar zamiast nazwy, na przykład notes=vanilla,saffron, a indeks zostanie uszeregowany według tej listy.
Czy mogę dostać rekomendacje według gustu użytkownika przez REST?
Dziś nie przez trasę REST. Narzędzie recommend_perfumes jest na endpoincie MCP, który odpowiada też na zwykłe żądanie POST JSON-RPC, jak pokazuje przykład wyżej. Trasy REST obejmują podobne perfumy, zamienniki i filtry.
Czy jest darmowe?
Tak. Nie ma klucza API, konta ani rejestracji. Nie ma stałego limitu zapytań (zobacz warunki), więc zapisuj w pamięci podręcznej to, co pobierasz, zachowaj umiarkowane tempo i uprzedź nas przed dużym wolumenem pod adresem contact@10ml.com.