diff --git a/service/meal/db/mealdb/client.go b/service/meal/db/mealdb/client.go
index 0a3de13fec74e32585eb241a597b692164b087cc..1796d8e379e955696b52dd32fea50f81743b0173 100644
--- a/service/meal/db/mealdb/client.go
+++ b/service/meal/db/mealdb/client.go
@@ -123,6 +123,46 @@ func SearchMealBy(value string, filter model.Filter) ([]*model.MealOverview, err
 	return meals, nil
 }
 
+func GetFilter(filter model.Filter) (*model.FilterOverview, error) {
+	path := fmt.Sprintf("list.php?%s=list", filter)
+	request, err := http.NewRequest(http.MethodGet, baseUrl+path, nil)
+	if err != nil {
+		return nil, err
+	}
+	response, err := client.Do(request)
+	if err != nil {
+		return nil, err
+	}
+	var mealResponse *MealResponse
+	err = json.NewDecoder(response.Body).Decode(&mealResponse)
+	if err != nil {
+		return nil, err
+	}
+	filterOverview := &model.FilterOverview{}
+	switch filter {
+	case model.CATEGORY:
+		for _, v := range mealResponse.Meals {
+			if v.StrCategory != nil {
+				filterOverview.ValidValues = append(filterOverview.ValidValues, *v.StrCategory)
+			}
+		}
+	case model.AREA:
+		for _, v := range mealResponse.Meals {
+			if v.StrArea != nil {
+				filterOverview.ValidValues = append(filterOverview.ValidValues, *v.StrArea)
+			}
+		}
+	case model.INGREDIENT:
+		for _, v := range mealResponse.Meals {
+			if v.StrIngredient != nil {
+				filterOverview.ValidValues = append(filterOverview.ValidValues, *v.StrIngredient)
+			}
+		}
+	}
+
+	return filterOverview, nil
+}
+
 func createMeal(currentMeal *Meal) (*model.Meal, error) {
 	meal := &model.Meal{}
 	if currentMeal.IdMeal != nil {
diff --git a/service/meal/db/mealdb/model.go b/service/meal/db/mealdb/model.go
index 45843776da4ab5c7b7e069f431e0647f0898fabb..4cd71165e20aa3826ead9dd959cb8bf62e97546f 100644
--- a/service/meal/db/mealdb/model.go
+++ b/service/meal/db/mealdb/model.go
@@ -8,6 +8,8 @@ type Meal struct {
 	IdMeal          *string
 	StrMeal         *string
 	StrCategory     *string
+	StrArea         *string
+	StrIngredient   *string
 	StrInstructions *string
 	StrMealThumb    *string
 	StrIngredient1  *string
diff --git a/service/meal/handler/meal.go b/service/meal/handler/meal.go
index 069c55bf886bf2578e2a018d0b4157d73657f45c..13b1612c8f76df6dac945641f57a430b761336a2 100644
--- a/service/meal/handler/meal.go
+++ b/service/meal/handler/meal.go
@@ -65,3 +65,30 @@ func SearchMealByIngredient(w http.ResponseWriter, r *http.Request) {
 	}
 	sendJson(w, meals)
 }
+
+func GetCategoryOverview(w http.ResponseWriter, r *http.Request) {
+	categoryOverview, err := service.GetFilter(model.CATEGORY)
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	sendJson(w, categoryOverview)
+}
+
+func GetAreaOverview(w http.ResponseWriter, r *http.Request) {
+	areaOverview, err := service.GetFilter(model.AREA)
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	sendJson(w, areaOverview)
+}
+
+func GetIngredientOverview(w http.ResponseWriter, r *http.Request) {
+	ingredientOverview, err := service.GetFilter(model.INGREDIENT)
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	sendJson(w, ingredientOverview)
+}
diff --git a/service/meal/main.go b/service/meal/main.go
index 3427f29eb3082630afb67f80df9043593af5d819..04b06ccee28fe4b76d426b90b86666c4c67d9674 100644
--- a/service/meal/main.go
+++ b/service/meal/main.go
@@ -15,9 +15,13 @@ func main() {
 	router.HandleFunc("/random", handler.GetRandomMeal).Methods(http.MethodGet)
 	router.HandleFunc("/search/{value}", handler.SearchMealByName).Methods(http.MethodGet)
 	router.HandleFunc("/category/{value}", handler.SearchMealByCategory).Methods(http.MethodGet)
+	router.HandleFunc("/category", handler.GetCategoryOverview).Methods(http.MethodGet)
 	router.HandleFunc("/area/{value}", handler.SearchMealByArea).Methods(http.MethodGet)
+	router.HandleFunc("/area", handler.GetAreaOverview).Methods(http.MethodGet)
 	router.HandleFunc("/ingredient/{value}", handler.SearchMealByIngredient).Methods(http.MethodGet)
+	router.HandleFunc("/ingredient", handler.GetIngredientOverview).Methods(http.MethodGet)
 	router.HandleFunc("/{id}", handler.GetMeal).Methods(http.MethodGet)
+	fmt.Printf("Server is listening on port :%v\n", port)
 	if err := http.ListenAndServe(fmt.Sprintf(":%v", port), router); err != nil {
 		log.Fatal(err)
 	}
diff --git a/service/meal/model/meal.go b/service/meal/model/meal.go
index 92c65d03c5e543159d5951cf907f9714d4ee32c0..d83cf19c7a07b2d20435bf247326d657a4dc1ba3 100644
--- a/service/meal/model/meal.go
+++ b/service/meal/model/meal.go
@@ -20,8 +20,8 @@ type MealOverview struct {
 	ImagePath string `json:"imagePath"`
 }
 
-type FilterValues struct {
-	Values []string `json:"values"`
+type FilterOverview struct {
+	ValidValues []string `json:"validValues"`
 }
 
 const (
diff --git a/service/meal/service/meal.go b/service/meal/service/meal.go
index 2f51a744604aa3bd938622935e6943ec74301c3a..b3a17fe01aea5294cfd9bba813a51f1838e3783b 100644
--- a/service/meal/service/meal.go
+++ b/service/meal/service/meal.go
@@ -40,3 +40,12 @@ func SearchMealBy(value string, filter model.Filter) ([]*model.MealOverview, err
 
 	return meals, nil
 }
+
+func GetFilter(filter model.Filter) (*model.FilterOverview, error) {
+	filterOverview, err := mealdb.GetFilter(filter)
+	if err != nil {
+		return nil, err
+	}
+
+	return filterOverview, nil
+}