Perfume API docs scento.com/developers

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.

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

Markdown copy of this page