...
type of ingredients (to include and/or exclude),
availability of ingredients (“what's in your fridge” search, this may include checking your pantry as well as the local and seasonal availability of ingredients),
number of ingredients (a proxy for the simplicity of the food to be cooked),
type of course or meal type (e.g., appetizer, dessert, lunch, cake, etc.; often related to the time of day the food will be consumed),
cooking style (slow cooking, make-ahead, leftover, etc.),
difficulty of the recipe (what levels should be distinguished here? or: what levels could a user possibly choose to use?),
techniques used in a recipe,
length of a recipe (e.g., number of steps as a proxy for duration or difficulty; one difficulty here is how to count the steps in a recipe as many instructions contain one or more simpler steps that may need to be performed),
preparation and/or cooking time,
a keyword,
budget,
type/availability/number of utensils (e.g., a one pot recipe),
origin of the recipe (e.g., author, region, cuisine),
fit with event (e.g., season, holidays such as Christmas, etc.),
fit with wine or other drinks,
nutritional value, or nutritional requirements,
user characteristics such as e.g. following a particular diet (e.g., vegetarian), having allergies (e.g., lactose intolerance), cooking skills (which obviously is linked to the difficulty of and techniques used in a recipe listed above), etc.
At spoonacular you can also find a list of items to sort recipes on and a list of meal types.
Part of the difficulty for developing a comprehensive recipe selection system, however, is not just the sheer number of features. The list above is pretty complete and far exceeds the number of features offered on the websites we discussed earlier. But perhaps more so the almost endless list of values for each of the features that such a system should be able to recognize. To mention just one less common but yet also very difficult feature to implement is the type of grape used for making a wine that a recipe should match with. It is not clear in this particular case whether there is a database available that would support resolving such a search query… Clearly, in any case, multiple databases that include very different types of information would be needed to come even close to being able to adequately respond to particular feature requests for recipe selection from a user.
...