diff --git a/docker-compose.yml b/docker-compose.yml
index 886a7702270b7c743f9f2111df8512e106514be5..94ae39bd2ed9ab570b27c46c09777b596bd083e7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -9,6 +9,7 @@ services:
       - "8000:8000"
     environment:
       - DB_CONNECT=mariadb:3306
+      - LOG_LEVEL=info
   mariadb:
     image: mariadb:10.5
     volumes:
diff --git a/service/planner/db/client.go b/service/planner/db/client.go
index 613e86e136660e553824fb0a2ce2d4c8d2a062d8..a58ffc6f748578f190904a3bc75e214b595b6329 100644
--- a/service/planner/db/client.go
+++ b/service/planner/db/client.go
@@ -102,6 +102,10 @@ func GetUser(id int) (*model.User, error) {
 		}
 	}
 
+	if user.Mail == "" {
+		return nil, errors.New("account not found")
+	}
+
 	queryMeals, err := udb.Query("SELECT userId, mealId, date FROM userMeal WHERE userId = ?;", id)
 	if err != nil {
 		return nil, err
@@ -155,6 +159,10 @@ func GetUsers() ([]*model.UserItem, error) {
 		users = append(users, user)
 	}
 
+	if len(users) <= 0 {
+		return nil, errors.New("no accounts found")
+	}
+
 	return users, nil
 }
 
@@ -271,6 +279,10 @@ func GetGroup(id int) (*model.Group, error) {
 		}
 	}
 
+	if group.Name == "" {
+		return nil, errors.New("group not found")
+	}
+
 	queryMeals, err := udb.Query("SELECT groupId, mealId, date FROM groupMeal WHERE groupId = ?;", id)
 	if err != nil {
 		return nil, err
@@ -302,6 +314,35 @@ func GetGroup(id int) (*model.Group, error) {
 	return group, nil
 }
 
+func GetGroups() ([]*model.GroupItem, error) {
+	udb, err := sql.Open(driverName, cfg.FormatDSN())
+	if err != nil {
+		return nil, err
+	}
+	defer udb.Close()
+
+	query, err := udb.Query("SELECT * FROM userGroup;")
+	if err != nil {
+		return nil, err
+	}
+	defer query.Close()
+	var groups []*model.GroupItem
+	for query.Next() {
+		group := &model.GroupItem{}
+		err = query.Scan(&group.ID, &group.Name)
+		if err != nil {
+			continue
+		}
+		groups = append(groups, group)
+	}
+
+	if len(groups) <= 0 {
+		return nil, errors.New("no groups found")
+	}
+
+	return groups, nil
+}
+
 func DeleteGroup(id int) (*model.Group, error) {
 	udb, err := sql.Open(driverName, cfg.FormatDSN())
 	if err != nil {
diff --git a/service/planner/handler/group.go b/service/planner/handler/group.go
index 2e2119b5c406cf6c0ec88eddccb6a7048a3b22d6..8ccc94314574a62d949c75c5b9cd66930dede1a8 100644
--- a/service/planner/handler/group.go
+++ b/service/planner/handler/group.go
@@ -46,6 +46,15 @@ func GetGroup(w http.ResponseWriter, r *http.Request) {
 	sendJson(w, group)
 }
 
+func GetGroups(w http.ResponseWriter, r *http.Request) {
+	groups, err := service.GetGroups()
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	sendJson(w, groups)
+}
+
 func DeleteGroup(w http.ResponseWriter, r *http.Request) {
 	id, err := getId(r)
 	if err != nil {
diff --git a/service/planner/model/group.go b/service/planner/model/group.go
index 8069c0dcaae67e05634cdbe4b4aa773a5ed2da3c..d96c7cc338401af9201733383a42f78de36d7e01 100644
--- a/service/planner/model/group.go
+++ b/service/planner/model/group.go
@@ -6,3 +6,8 @@ type Group struct {
 	UserIDs []int       `json:"userIds"`
 	Meals   []GroupMeal `json:"meals"`
 }
+
+type GroupItem struct {
+	ID   int    `json:"id"`
+	Name string `json:"name"`
+}
diff --git a/service/planner/service/group.go b/service/planner/service/group.go
index 018a81914d7f22211ae4aaf082f956cde5f8fcf8..f84b5427892677a25580d438246bc70cf1e8fb0f 100644
--- a/service/planner/service/group.go
+++ b/service/planner/service/group.go
@@ -23,6 +23,15 @@ func GetGroup(id int) (*model.Group, error) {
 	return group, nil
 }
 
+func GetGroups() ([]*model.GroupItem, error) {
+	groups, err := db.GetGroups()
+	if err != nil {
+		return nil, err
+	}
+
+	return groups, nil
+}
+
 func DeleteGroup(id int) (*model.Group, error) {
 	group, err := db.DeleteGroup(id)
 	if err != nil {