Documentation Index
Fetch the complete documentation index at: https://docs.scentxp.com/llms.txt
Use this file to discover all available pages before exploring further.
Perfume data
Perfumes are the central entity in WikiParfum. Each perfume record includes rich metadata — brand, olfactive family, ingredients, perfumers, imagery, and more — enabling product pages, comparison tools, and enriched catalog experiences.
Retrieve a single perfume
Fetch a perfume by its unique ID, URL-friendly slug, or EAN barcode.
By ID
query PerfumeById {
findPerfumeById(id: "424", lang: "EN") {
id
name
description
brand {
name
}
family {
name
color
}
secondaryFamily {
name
}
gender
year
ingredients {
id
name
proportion
hero
}
image {
urls {
low
mid
high
}
}
slug
}
}
By slug
Useful for SEO-friendly URLs and deep linking.
query PerfumeBySlug {
findPerfumeBySlug(slug: "good-girl", lang: "EN") {
id
name
brand {
name
}
family {
name
}
}
}
By EAN
Look up a perfume using its barcode — ideal for scan-to-discover experiences.
query PerfumeByEAN {
findPerfumeByEAN(ean: "8411061994351", lang: "EN") {
id
name
brand {
name
}
}
}
You can also look up multiple EANs at once:
query PerfumesByEANS {
findPerfumesByEANS(
eans: ["8411061994351", "0085715166067"]
lang: "EN"
) {
id
name
ean
}
}
List and filter perfumes
Retrieve perfumes with full-text search, filters, sorting, and pagination.
query FilteredPerfumes {
findPerfumes(search: {
lang: "EN"
search: "sauvage"
page: "0,20"
order_by: "name asc"
filters: {
gender: "M"
}
}) {
id
name
brand {
name
}
family {
name
}
gender
year
}
}
Filter by brand
query PerfumesByBrand {
findPerfumes(search: {
lang: "EN"
brand: "42"
page: "0,20"
}) {
id
name
year
}
}
Filter by perfumist
query PerfumesByPerfumist {
findPerfumes(search: {
lang: "EN"
perfumistSlug: "francis-kurkdjian"
page: "0,20"
}) {
id
name
brand {
name
}
}
}
Recommended perfumes
Get perfumes similar to one or more input perfumes, ranked by olfactive proximity. See the Recommendations guide for business context and advanced patterns.
By perfume ID
query RecommendedPerfumes {
recommendedPerfumes(search: {
perfumes: "424,1"
lang: "EN"
page: "0,10"
}) {
id
name
brand {
name
}
family {
name
color
}
image {
urls {
low
mid
}
}
}
}
By EAN
Use EAN barcodes as input — ideal for scan-based or POS-integrated experiences where you have barcodes but not WikiParfum IDs.
query RecommendByEAN {
recommendedPerfumes(search: {
perfumeEans: "8411061994351,0085715166067"
lang: "EN"
page: "0,10"
}) {
id
name
brand {
name
}
}
}
User-scoped
Pass a userId to incorporate the user’s interaction history into the ranking. Over time, recommendations become increasingly aligned with each user’s evolving taste profile. See Sessions and CRM Personalization for details.
query UserRecommendations {
recommendedPerfumes(
search: {
perfumes: "424"
lang: "EN"
page: "0,10"
}
userId: "user-abc-123"
) {
id
name
brand {
name
}
}
}
Custom recommendation rules
Use customRecommendation to control which brands or perfumes appear in results. Essential for retailers who need recommendations limited to their own assortment, or brands that want to exclude competitors.
query CustomRecommendations {
recommendedPerfumes(search: {
perfumes: "424"
lang: "EN"
page: "0,10"
customRecommendation: {
enabled: true
excludedBrands: [42, 87]
includedBrands: [10, 25, 33]
excludedPerfumes: [1]
}
}) {
id
name
brand {
name
}
}
}
| Field | Description |
|---|
excludedBrands | Brand IDs to exclude from results |
includedBrands | Only return perfumes from these brands |
excludedPerfumes | Specific perfume IDs to exclude |
includedPerfumes | Specific perfume IDs to include |
Filtered recommendations
Recommendations can be narrowed using standard filters. See Filtering & Pagination for all available filter options.
query FilteredRecommendations {
recommendedPerfumes(search: {
perfumes: "424"
lang: "EN"
page: "0,10"
filters: {
gender: "F"
classification: "prestige"
}
}) {
id
name
gender
}
}
Browse all WikiParfum perfumes
The findPerfumesPublic query returns perfumes from the entire WikiParfum database — not limited to your catalog. It uses a reduced PerfumePublic type with fewer fields, making it ideal for browsing, discovery, and public-facing experiences where you want to show the full fragrance universe.
findPerfumes vs findPerfumesPublic: findPerfumes returns perfumes from your catalog (scoped to your Product Feed) with the full Perfume type. findPerfumesPublic returns all perfumes in WikiParfum’s database with a reduced field set.
query BrowseAllPerfumes {
findPerfumesPublic(search: {
lang: "EN"
page: "0,10"
order_by: "name asc"
filters: {
gender: "F"
family: "floral"
}
}) {
id
name
description
gender
brand {
name
}
family {
name
color
}
secondaryFamily {
name
}
image {
urls {
low
mid
high
}
}
eans
}
}
PerfumePublic fields
The PerfumePublic type exposes a subset of the full Perfume type:
| Field | Type | Description |
|---|
id | ID | Unique perfume identifier |
name | String | Perfume name |
description | String | Perfume description |
gender | String | Target gender: "F", "M", or "U" |
brand | { name } | Brand name |
family | { name, color } | Primary olfactive family |
secondaryFamily | { name, color } | Secondary olfactive family |
image | { urls { low, mid, high } } | Resized image URLs |
eans | [String] | EAN barcodes from the client’s catalog for this perfume |
findPerfumesPublic accepts a PerfumesPublicSearch input with the following fields:
| Parameter | Type | Description |
|---|
lang | String | Language for localized content (e.g., "EN", "FR") |
page | String | Pagination: "offset,limit" (e.g., "0,20") |
order_by | String | Sort order (e.g., "name asc") |
search | String | Full-text search against name and brand |
brand | ID | Filter by brand ID |
ids | String | Filter by perfume IDs (comma-separated) |
slugs | String | Filter by perfume slugs (comma-separated) |
filters | Filters | Standard filters |
Key perfume fields
| Field | Description |
|---|
name | Perfume name |
brand | Brand information |
family / secondaryFamily | Olfactive family classification (primary and secondary) |
gender | Target gender: "F", "M", or "U" (unisex) |
year / month | Release date |
ingredients | List of ingredients with proportion and hero flag |
classification | Market segment: "prestige" or "mass" |
slug | URL-friendly identifier |
ean / eans | Barcode(s) |
image | Resized image URLs (low, mid, high) |
perfumers | Perfumers who created the fragrance |
intensity | Olfactive intensity score |
discontinued | Whether the perfume is discontinued |
When your account has a Product Feed configured, the eans field returns only EANs that exist in your catalog — not all EANs known to WikiParfum for that perfume. This applies to both Perfume and PerfumePublic types. If no Product Feed is configured, all known EANs are returned.