Getting started
There is nothing to sign up for. Anonymous GET requests to the base URL are answered directly.
https://www.scento.com/api/perfume/v1
Your first request
Fetch the portrait of one perfume by its slug. This one returns Layton by Parfums de Marly.
curl
curl "https://www.scento.com/api/perfume/v1/perfumes/layton"
JavaScript
Works in Node 18 or newer and in the browser, because CORS is open.
const res = await fetch("https://www.scento.com/api/perfume/v1/perfumes/layton");
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { lede, detail, scento_page } = await res.json();
console.log(lede); // one sentence you can quote
console.log(detail.pyramid); // { top: [...], heart: [...], base: [...] }
console.log(scento_page.url); // the page to read on at scento.com
Python
import requests
r = requests.get("https://www.scento.com/api/perfume/v1/perfumes/layton", timeout=10)
r.raise_for_status()
answer = r.json()
print(answer["lede"])
print(answer["detail"]["pyramid"])
The response is a small JSON object with a lede, a detail object, the scento.com page and a cite line. Reading an answer explains each field.
Names and slugs
Routes that take a perfume, house, material or term accept a slug (layton, le-labo, ambroxan) and usually a plain name as well. If you pass something the database does not know, the API still answers 200, with found: false and a list of suggestions, so check that field before you use the result. When a name is uncertain, call /search first.
Change the link language
Every route takes lang with one of en, de, fr, es, it, ro, el, hu, cs or pl. The text of the answer stays in English; the links and labels point to the scento.com page in that language.
curl "https://www.scento.com/api/perfume/v1/perfumes/oud-wood?lang=de"
A few more routes to try
# Similar perfumes
curl "https://www.scento.com/api/perfume/v1/perfumes/layton/neighbours"
# Two perfumes side by side
curl "https://www.scento.com/api/perfume/v1/contrast?perfumes=mojave-ghost,gypsy-water"
# What a raw material is
curl "https://www.scento.com/api/perfume/v1/materials/ambroxan"
# Perfumes built on tobacco and vanilla in the base
curl "https://www.scento.com/api/perfume/v1/materials/match?materials=tobacco,vanilla&tier=base"
# An edit for an occasion, with French links
curl "https://www.scento.com/api/perfume/v1/edits/summer-days?lang=fr"
# Search the journal
curl "https://www.scento.com/api/perfume/v1/journal?q=vetiver"
Comma-separated values are accepted wherever a route expects a list. Every route is listed on the Endpoints page.
Next steps
- Page through long lists with
continuation: see Reading an answer. - Use an OpenAPI client generator: the spec is at openapi.json.
- Prefer an assistant to call it for you: connect the MCP server.
- Read the limits and terms before you build on it.