diff --git a/pkg/datastore/datastore.go b/pkg/datastore/datastore.go
index 4df0c9f..3bb704e 100644
--- a/pkg/datastore/datastore.go
+++ b/pkg/datastore/datastore.go
@@ -40,6 +40,7 @@ type Mapfixes interface {
 	IfStatusThenUpdateAndGet(ctx context.Context, id int64, statuses []model.MapfixStatus, values OptionalMap) (model.Mapfix, error)
 	Delete(ctx context.Context, id int64) error
 	List(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) ([]model.Mapfix, error)
+	ListWithTotal(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) (int64, []model.Mapfix, error)
 }
 
 type Operations interface {
@@ -59,6 +60,7 @@ type Submissions interface {
 	IfStatusThenUpdateAndGet(ctx context.Context, id int64, statuses []model.SubmissionStatus, values OptionalMap) (model.Submission, error)
 	Delete(ctx context.Context, id int64) error
 	List(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) ([]model.Submission, error)
+	ListWithTotal(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) (int64, []model.Submission, error)
 }
 
 type Scripts interface {
diff --git a/pkg/datastore/gormstore/mapfixes.go b/pkg/datastore/gormstore/mapfixes.go
index d80067e..50f4a05 100644
--- a/pkg/datastore/gormstore/mapfixes.go
+++ b/pkg/datastore/gormstore/mapfixes.go
@@ -130,3 +130,19 @@ func (env *Mapfixes) List(ctx context.Context, filters datastore.OptionalMap, pa
 
 	return maps, nil
 }
+
+func (env *Mapfixes) ListWithTotal(ctx context.Context, filters datastore.OptionalMap, page model.Page, sort datastore.ListSort) (int64, []model.Mapfix, error) {
+	// grab page items
+	maps, err := env.List(ctx, filters, page, sort)
+	if err != nil{
+		return 0, nil, err
+	}
+
+	// count total with filters
+	var total int64
+	if err := env.db.Model(&model.Mapfix{}).Where(filters.Map()).Count(&total).Error; err != nil {
+		return 0, nil, err
+	}
+
+	return total, maps, nil
+}
diff --git a/pkg/datastore/gormstore/submissions.go b/pkg/datastore/gormstore/submissions.go
index dc384c6..5791819 100644
--- a/pkg/datastore/gormstore/submissions.go
+++ b/pkg/datastore/gormstore/submissions.go
@@ -130,3 +130,19 @@ func (env *Submissions) List(ctx context.Context, filters datastore.OptionalMap,
 
 	return maps, nil
 }
+
+func (env *Submissions) ListWithTotal(ctx context.Context, filters datastore.OptionalMap, page model.Page, sort datastore.ListSort) (int64, []model.Submission, error) {
+	// grab page items
+	maps, err := env.List(ctx, filters, page, sort)
+	if err != nil{
+		return 0, nil, err
+	}
+
+	// count total with filters
+	var total int64
+	if err := env.db.Model(&model.Submission{}).Where(filters.Map()).Count(&total).Error; err != nil {
+		return 0, nil, err
+	}
+
+	return total, maps, nil
+}
diff --git a/pkg/service/mapfixes.go b/pkg/service/mapfixes.go
index d81f7fe..3c102b9 100644
--- a/pkg/service/mapfixes.go
+++ b/pkg/service/mapfixes.go
@@ -160,7 +160,7 @@ func (svc *Service) GetMapfix(ctx context.Context, params api.GetMapfixParams) (
 // Get list of mapfixes.
 //
 // GET /mapfixes
-func (svc *Service) ListMapfixes(ctx context.Context, params api.ListMapfixesParams) ([]api.Mapfix, error) {
+func (svc *Service) ListMapfixes(ctx context.Context, params api.ListMapfixesParams) (*api.Mapfixes, error) {
 	filter := datastore.Optional()
 
 	if params.DisplayName.IsSet(){
@@ -175,7 +175,7 @@ func (svc *Service) ListMapfixes(ctx context.Context, params api.ListMapfixesPar
 
 	sort := datastore.ListSort(params.Sort.Or(int32(datastore.ListSortDisabled)))
 
-	items, err := svc.DB.Mapfixes().List(ctx, filter, model.Page{
+	total, items, err := svc.DB.Mapfixes().ListWithTotal(ctx, filter, model.Page{
 		Number: params.Page,
 		Size:   params.Limit,
 	},sort)
@@ -183,9 +183,10 @@ func (svc *Service) ListMapfixes(ctx context.Context, params api.ListMapfixesPar
 		return nil, err
 	}
 
-	var resp []api.Mapfix
+	var resp api.Mapfixes
+	resp.Total=total
 	for _, item := range items {
-		resp = append(resp, api.Mapfix{
+		resp.Mapfixes = append(resp.Mapfixes, api.Mapfix{
 			ID:            item.ID,
 			DisplayName:   item.DisplayName,
 			Creator:       item.Creator,
@@ -201,7 +202,7 @@ func (svc *Service) ListMapfixes(ctx context.Context, params api.ListMapfixesPar
 		})
 	}
 
-	return resp, nil
+	return &resp, nil
 }
 
 // PatchMapfixCompleted implements patchMapfixCompleted operation.
diff --git a/pkg/service/submissions.go b/pkg/service/submissions.go
index cca0206..4b2bdc0 100644
--- a/pkg/service/submissions.go
+++ b/pkg/service/submissions.go
@@ -149,7 +149,7 @@ func (svc *Service) GetSubmission(ctx context.Context, params api.GetSubmissionP
 // Get list of submissions.
 //
 // GET /submissions
-func (svc *Service) ListSubmissions(ctx context.Context, params api.ListSubmissionsParams) ([]api.Submission, error) {
+func (svc *Service) ListSubmissions(ctx context.Context, params api.ListSubmissionsParams) (*api.Submissions, error) {
 	filter := datastore.Optional()
 
 	if params.DisplayName.IsSet(){
@@ -164,7 +164,7 @@ func (svc *Service) ListSubmissions(ctx context.Context, params api.ListSubmissi
 
 	sort := datastore.ListSort(params.Sort.Or(int32(datastore.ListSortDisabled)))
 
-	items, err := svc.DB.Submissions().List(ctx, filter, model.Page{
+	total, items, err := svc.DB.Submissions().ListWithTotal(ctx, filter, model.Page{
 		Number: params.Page,
 		Size:   params.Limit,
 	},sort)
@@ -172,9 +172,10 @@ func (svc *Service) ListSubmissions(ctx context.Context, params api.ListSubmissi
 		return nil, err
 	}
 
-	var resp []api.Submission
+	var resp api.Submissions
+	resp.Total=total
 	for _, item := range items {
-		resp = append(resp, api.Submission{
+		resp.Submissions = append(resp.Submissions, api.Submission{
 			ID:            item.ID,
 			DisplayName:   item.DisplayName,
 			Creator:       item.Creator,
@@ -190,7 +191,7 @@ func (svc *Service) ListSubmissions(ctx context.Context, params api.ListSubmissi
 		})
 	}
 
-	return resp, nil
+	return &resp, nil
 }
 
 // PatchSubmissionCompleted implements patchSubmissionCompleted operation.