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/similar

JSON przez GET, OpenAPI 3.1. Za darmo, bez klucza API.

Wszystkie osiem endpointów

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

PytanieWywoł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.