Skip to main content

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
    }
  }
}
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
    }
  }
}
FieldDescription
excludedBrandsBrand IDs to exclude from results
includedBrandsOnly return perfumes from these brands
excludedPerfumesSpecific perfume IDs to exclude
includedPerfumesSpecific 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:
FieldTypeDescription
idIDUnique perfume identifier
nameStringPerfume name
descriptionStringPerfume description
genderStringTarget 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

Input parameters

findPerfumesPublic accepts a PerfumesPublicSearch input with the following fields:
ParameterTypeDescription
langStringLanguage for localized content (e.g., "EN", "FR")
pageStringPagination: "offset,limit" (e.g., "0,20")
order_byStringSort order (e.g., "name asc")
searchStringFull-text search against name and brand
brandIDFilter by brand ID
idsStringFilter by perfume IDs (comma-separated)
slugsStringFilter by perfume slugs (comma-separated)
filtersFiltersStandard filters

Key perfume fields

FieldDescription
namePerfume name
brandBrand information
family / secondaryFamilyOlfactive family classification (primary and secondary)
genderTarget gender: "F", "M", or "U" (unisex)
year / monthRelease date
ingredientsList of ingredients with proportion and hero flag
classificationMarket segment: "prestige" or "mass"
slugURL-friendly identifier
ean / eansBarcode(s)
imageResized image URLs (low, mid, high)
perfumersPerfumers who created the fragrance
intensityOlfactive intensity score
discontinuedWhether 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.