Developer API
Free REST API with structured JSON responses. API key required (free). CORS enabled. Perfect for building apps, recommendation engines, or feeding LLMs with fragrance data.
Base URL
https://fraganty.aiAll API endpoints require a free API key. Include it in every request via the X-API-Key header or the api_key query parameter.
Header
X-API-Key: YOUR_API_KEYQuery parameter
?api_key=YOUR_API_KEYRequest your free API key at [email protected]
/api/perfumesList and search perfumes
Parameters
| Name | Type | Description |
|---|---|---|
| q | string | Search by name |
| brand | string | Filter by brand slug |
| page | number | Page number (default: 1) |
| limit | number | Results per page (default: 20, max: 100) |
Example Request
Response
{
"data": [
{
"id": "rose-goldea-kathleen-kye-edition",
"name": "Rose Goldea Kathleen Kye Edition",
"brand": "Bvlgari",
"year": 2021,
"rating": 4.62,
"concentration": null,
"image": "https://img.fraganty.ai/perfume/64818.jpg",
"buyUrl": "https://fraganty.ai/goto/rose-goldea-kathleen-kye-edition",
"accords": [
{ "name": "Rose", "strength": 100, "color": "#C4647C" },
{ "name": "Floral", "strength": 79, "color": "#9E3B52" }
]
}
],
"total": 2460,
"page": 1,
"pages": 492
}/api/perfumes/:slugGet full perfume details including notes, accords, ratings, seasons, and similar perfumes
Example Request
Response
{
"id": "bleu-de-chanel-eau-de-parfum",
"name": "Bleu de Chanel Eau de Parfum",
"brand": "Chanel",
"year": 2014,
"rating": 4.21,
"concentration": "Eau de Parfum",
"gender": "masculine",
"description": "...",
"buyUrl": "https://fraganty.ai/goto/bleu-de-chanel-eau-de-parfum",
"notes": {
"top": [{ "name": "Lemon", "intensity": 80 }],
"middle": [{ "name": "Cedar", "intensity": 90 }],
"base": [{ "name": "Sandalwood", "intensity": 85 }]
},
"accords": [...],
"seasons": { "winter": 45, "spring": 60, "summer": 30, "fall": 65 },
"dayNight": { "day": 55, "night": 70 },
"similarPerfumes": [...],
"perfumers": [{ "name": "Olivier Polge" }]
}/api/brandsList all brands with perfume counts
Parameters
| Name | Type | Description |
|---|---|---|
| q | string | Search brands by name |
Example Request
Response
{
"data": [
{ "name": "Guerlain", "slug": "Guerlain", "count": 412 },
{ "name": "Dior", "slug": "Dior", "count": 312 },
{ "name": "Chanel", "slug": "Chanel", "count": 248 }
],
"total": 6619
}/api/notesList all fragrance notes with frequency counts
Parameters
| Name | Type | Description |
|---|---|---|
| limit | number | Limit results (default: all) |
Example Request
Response
{
"data": [
{ "name": "Musk", "count": 3097 },
{ "name": "Bergamot", "count": 2498 },
{ "name": "Rose", "count": 2460 }
],
"total": 981
}/api/perfumersList all perfumers with perfume counts
Example Request
Response
{
"data": [
{ "name": "Alberto Morillas", "slug": "alberto-morillas", "count": 45 },
{ "name": "Olivier Polge", "slug": "olivier-polge", "count": 38 }
],
"total": 358
}/api/perfumers/:slugGet perfumer details with their perfumes (paginated)
Parameters
| Name | Type | Description |
|---|---|---|
| page | number | Page number (default: 1) |
| limit | number | Results per page (default: 20) |
Example Request
Response
{
"name": "Alberto Morillas",
"slug": "alberto-morillas",
"perfumes": {
"data": [...],
"total": 45,
"page": 1,
"pages": 3
}
}