# Entity Service API: Filtering
The Entity Service API offers the ability to filter results found with its findMany() method.
Results are filtered with the filters parameter that accepts logical operators and attribute operators. Every operator should be prefixed with $.
# Logical operators
# $and
 All nested conditions must be true.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    $and: [
      {
        title: 'Hello World',
      },
      {
        createdAt: { $gt: '2021-11-17T14:28:25.843Z' },
      },
    ],
  },
});
$and will be used implicitly when passing an object with nested conditions:
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: 'Hello World',
    rating: 12,
  },
});
# $or
 One or many nested conditions must be true.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    $or: [
      {
        title: 'Hello World',
      },
      {
        title: {
          $contains: 'Hello',
        },
      },
    ],
  },
});
# $not
 Negates the nested conditions.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    $not: {
      title: 'Hello World',
    },
  },
});
✏️ NOTE
$not can be used:
- as a logical operator (e.g. in filters: { $not: { // conditions… }})
- or as an attribute operator (e.g. in filters: { attribute-name: $not: { … } }).
💡 TIP
$and, $or and $not operators are nestable inside of another $and, $or or $not operator.
# Attribute Operators
# $not
 Negates the nested condition(s).
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $not: {
        $contains: 'Hello World',
      },
    },
  },
});
# $eq
 Attribute equals input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $eq: 'Hello World',
    },
  },
});
$eq can be omitted:
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: 'Hello World',
  },
});
# $ne
 Attribute does not equal input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $ne: 'ABCD',
    },
  },
});
# $in
 Attribute is contained in the input list.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $in: ['Hello', 'Hola', 'Bonjour'],
    },
  },
});
$in can be ommited when passing an array of values:
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: ['Hello', 'Hola', 'Bonjour'],
  },
});
# $notIn
 Attribute is not contained in the input list.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $notIn: ['Hello', 'Hola', 'Bonjour'],
    },
  },
});
# $lt
 Attribute is less than the input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    rating: {
      $lt: 10,
    },
  },
});
# $lte
 Attribute is less than or equal to the input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    rating: {
      $lte: 10,
    },
  },
});
# $gt
 Attribute is greater than the input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    rating: {
      $gt: 5,
    },
  },
});
# $gte
 Attribute is greater than or equal to the input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    rating: {
      $gte: 5,
    },
  },
});
# $between
 Attribute is between the 2 input values.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    rating: {
      $between: [1, 20],
    },
  },
});
# $contains
 Attribute contains the input value (case-sensitive).
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $contains: 'Hello',
    },
  },
});
# $notContains
 Attribute does not contain the input value (case-sensitive).
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $notContains: 'Hello',
    },
  },
});
# $containsi
 Attribute contains the input value. $containsi is not case-sensitive, while $contains is.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $contains: 'hello',
    },
  },
});
# $notContainsi
 Attribute does not contain the input value. $notContainsi is not case-sensitive, while $notContains is.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $notContains: 'hello',
    },
  },
});
# $startsWith
 Attribute starts with input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $startsWith: 'ABCD',
    },
  },
});
# $endsWith
 Attribute ends with input value.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $endsWith: 'ABCD',
    },
  },
});
# $null
 Attribute is null.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $null: true,
    },
  },
});
# $notNull
 Attribute is not null.
Example
const entries = await strapi.entityService.findMany('api::article.article', {
  filters: {
    title: {
      $notNull: true,
    },
  },
});
