Skip to main content

Filtering and pagination

Most list queries in the WikiParfum API support a shared set of filtering, pagination, and sorting parameters. Understanding these patterns lets you build precise, performant queries across perfumes, ingredients, brands, and recommendations.

Pagination

Pagination uses an offset-based pattern via the page parameter, formatted as a string: "offset,limit".
query PaginatedPerfumes {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
  }) {
    id
    name
  }
}
ExampleMeaning
"0,20"First 20 results
"20,20"Results 21–40
"40,10"Results 41–50
The offset is zero-based. The first value is the starting position, the second is the number of results to return.

Sorting

Use the order_by parameter to control result ordering. The format is "field direction".
query SortedPerfumes {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
    order_by: "name asc"
  }) {
    id
    name
  }
}
Common sort options:
ValueDescription
"name asc"Alphabetical A–Z
"name desc"Alphabetical Z–A
"year desc"Newest first
"year asc"Oldest first

The Filters input

The Filters input type is shared across perfume, ingredient, brand, and recommendation queries. It provides fine-grained control over which results are returned.

Gender

Filter by target gender.
query FemalePerfumes {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
    filters: {
      gender: "F"
    }
  }) {
    id
    name
    gender
  }
}
ValueMeaning
"F"Feminine
"M"Masculine
"U"Unisex

Brand

Filter by brand slug or brand IDs.
query PerfumesByBrandSlug {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
    filters: {
      brand: "chanel"
    }
  }) {
    id
    name
  }
}
Use brandsIds for multiple brands: brandsIds: "42,87,103". Use excludedBrandsIds to exclude specific brands: excludedBrandsIds: "55,60".

Olfactive family

Filter by primary family, secondary family, or both.
query WoodyPerfumes {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
    filters: {
      family: "woody"
    }
  }) {
    id
    name
    family {
      name
    }
  }
}
FilterDescription
familyPrimary family slug
mainfamilyAlias for primary family slug
subfamilySecondary family slug
mainFamilyIdsPrimary family IDs (comma-separated)
subFamilyIdsSecondary family IDs (comma-separated)
familiesIdsCombined primary + secondary family IDs

Market classification

filters: {
  classification: "prestige"
}
ValueMeaning
"prestige"Prestige / luxury segment
"mass"Mass market segment

Intensity range

Filter by olfactive intensity using a min/max range.
filters: {
  intensity: "3,7"
}

Discontinued products

filters: {
  discontinued: "no"
}
ValueMeaning
"yes"Only discontinued perfumes
"no"Only active perfumes

Release date

Filter by release year or year-month.
filters: {
  releaseDate: ["2023", "2024"]
}

Region and country

Restrict results to perfumes available in specific regions or countries.
filters: {
  regions: ["EU"]
  countries: ["FR", "ES"]
}

Additional filters

FilterTypeDescription
withImageBooleanOnly return perfumes with images
popularBooleanOnly popular perfumes
onlyReleasedBooleanOnly released perfumes
showVariantBooleanInclude variant products
fragranceTypeStringFilter by fragrance type (e.g., EDP, EDT)

Combining filters

Filters can be combined freely. All active filters are applied with AND logic.
query CombinedFilters {
  findPerfumes(search: {
    lang: "EN"
    page: "0,20"
    order_by: "year desc"
    filters: {
      gender: "F"
      classification: "prestige"
      family: "floral"
      discontinued: "no"
      withImage: true
    }
  }) {
    id
    name
    brand {
      name
    }
    family {
      name
    }
    year
    gender
  }
}