diff --git a/src/main/java/ntnu/idatt2105/group44/trivioServer/controller/ResultController.java b/src/main/java/ntnu/idatt2105/group44/trivioServer/controller/ResultController.java
index 65b4e03831b37f0ce23cfd6601102663dc6a1b2e..d7644b35060dab45d98eef8685096b7d74175763 100644
--- a/src/main/java/ntnu/idatt2105/group44/trivioServer/controller/ResultController.java
+++ b/src/main/java/ntnu/idatt2105/group44/trivioServer/controller/ResultController.java
@@ -6,6 +6,8 @@ import ntnu.idatt2105.group44.trivioServer.model.Result;
 import ntnu.idatt2105.group44.trivioServer.repository.ResultRepository;
 import ntnu.idatt2105.group44.trivioServer.service.JWTService;
 import ntnu.idatt2105.group44.trivioServer.service.ResultService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -28,20 +30,33 @@ public class ResultController {
   }
 
   @GetMapping()
-  public ResponseEntity<List<Result>> getResultByUserId(@RequestHeader("Authorization") String token){
+  public ResponseEntity<Page<Result>> getResultByUserIdAndTitle(
+          @RequestHeader("Authorization") String token,
+          @RequestParam(required = false) String title,
+          Pageable pageable) {
     try {
       long userId = Long.parseLong(jwtService.extractSubjectFromHeader(token));
-      List<Result> results = resultService.getResultbyUserId(userId);
+      Page<Result> results;
+
+      if (title != null) {
+        results = resultService.getResultByUserIdAndTitle(userId, title, pageable);
+      } else {
+        results= resultService.getResultByUserId(userId, pageable);
+      }
       return ResponseEntity.ok(results);
-    } catch(RuntimeException e) {
+    } catch (RuntimeException e) {
       return ResponseEntity.badRequest().build();
     }
   }
-//  @GetMapping()
-//  public List<Result> getResults(){
-//    return resultService.getAllResults();
-//  }
-  @PostMapping
+
+  @GetMapping("/trivioTitles")
+  public ResponseEntity<List<String>> getDistinctTrivioTitles(@RequestHeader("Authorization") String token) {
+    long userId = Long.parseLong(jwtService.extractSubjectFromHeader(token));
+    List<String> trivioTitles = resultService.getDistinctTrivioTitles(userId);
+    return ResponseEntity.ok(trivioTitles);
+  }
+
+  @PostMapping()
   public ResponseEntity<String> postResult(@RequestBody ResultDTO resultDTO){
     resultService.addResult(resultDTO);
     return new ResponseEntity<>(HttpStatus.OK);
diff --git a/src/main/java/ntnu/idatt2105/group44/trivioServer/repository/ResultRepository.java b/src/main/java/ntnu/idatt2105/group44/trivioServer/repository/ResultRepository.java
index 86c65993ce7d5e8894e0ef4be5abb6b271dbc8de..8a33f8e8574947775c78f0e68ede5e1560d30eba 100644
--- a/src/main/java/ntnu/idatt2105/group44/trivioServer/repository/ResultRepository.java
+++ b/src/main/java/ntnu/idatt2105/group44/trivioServer/repository/ResultRepository.java
@@ -3,6 +3,8 @@ package ntnu.idatt2105.group44.trivioServer.repository;
 import java.util.Optional;
 import ntnu.idatt2105.group44.trivioServer.model.Result;
 import ntnu.idatt2105.group44.trivioServer.model.Trivio;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
@@ -12,6 +14,10 @@ import java.util.List;
 @Repository
 public interface ResultRepository extends JpaRepository<Result, Long> {
 
-//  @Query("SELECT e From Result e WHERE e.user.id=?1")
-  List<Result> getResultsByUserId(Long userId);
+  Page<Result> getResultsByUserId(Long userId, Pageable pageable);
+
+  Page<Result> getResultsByUserIdAndTrivio_Title(Long userId, String title, Pageable pageable);
+
+  @Query("SELECT DISTINCT t.title FROM Result r " + "JOIN r.trivio t")
+  List<String> findDistinctTrivioTitlesByUserId(Long userId);
 }
diff --git a/src/main/java/ntnu/idatt2105/group44/trivioServer/service/ResultService.java b/src/main/java/ntnu/idatt2105/group44/trivioServer/service/ResultService.java
index a05e24e9c1546a4c29fc11c723bc33821c92539b..e93bec5ff8c3a458fdd29305d447fb1e09d734b4 100644
--- a/src/main/java/ntnu/idatt2105/group44/trivioServer/service/ResultService.java
+++ b/src/main/java/ntnu/idatt2105/group44/trivioServer/service/ResultService.java
@@ -7,6 +7,8 @@ import ntnu.idatt2105.group44.trivioServer.model.Result;
 import ntnu.idatt2105.group44.trivioServer.model.Trivio;
 import ntnu.idatt2105.group44.trivioServer.model.User;
 import ntnu.idatt2105.group44.trivioServer.repository.ResultRepository;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 @Service
@@ -22,8 +24,6 @@ public class ResultService {
     this.trivioService = trivioService;
   }
 
-  // Skal vi gjøre at når spiller fullfører et spill, så vil scoren bli postet?
-
   public void addResult(ResultDTO resultDTO){
     // per nå, ingen unntakshåndtering legg til det senere.
     Result result = convertToEntity(resultDTO);
@@ -38,10 +38,17 @@ public class ResultService {
     }
     return null;
   }
-  public List<Result> getResultbyUserId(Long id){
-    return resultRepository.getResultsByUserId(id);
+
+  public Page<Result> getResultByUserId(Long id, Pageable pageable){
+    return resultRepository.getResultsByUserId(id, pageable);
+  }
+
+  public Page<Result> getResultByUserIdAndTitle(Long id, String title,Pageable pageable){
+    return resultRepository.getResultsByUserIdAndTrivio_Title(id, title,pageable);
   }
 
+
+
   public ResultDTO convertToDTO(Result result){
     Long trivioId = result.getTrivio().getId();
     String username = result.getUser().getUsername();
@@ -60,6 +67,10 @@ public class ResultService {
     return result;
   }
 
+  public List<String> getDistinctTrivioTitles(Long userId) {
+    return resultRepository.findDistinctTrivioTitlesByUserId(userId);
+  }
+
   public List<Result> getAllResults(){
     return resultRepository.findAll();
   }
diff --git a/src/main/java/ntnu/idatt2105/group44/trivioServer/service/TrivioSpecifications.java b/src/main/java/ntnu/idatt2105/group44/trivioServer/service/TrivioSpecifications.java
index 4a14ce6e76b065d9ce3e0990e7d88d3170f45e88..3f9644981cca9ab43204965f933db7fa5ef6c16a 100644
--- a/src/main/java/ntnu/idatt2105/group44/trivioServer/service/TrivioSpecifications.java
+++ b/src/main/java/ntnu/idatt2105/group44/trivioServer/service/TrivioSpecifications.java
@@ -37,19 +37,19 @@ public class TrivioSpecifications {
     //Method to filter trivios by visibility
     public static Specification<Trivio> filterByVisibility(String visibility){
         return (root, query, criteriaBuilder) ->
-                criteriaBuilder.equal(root.get("visibility"), visibility);
+                criteriaBuilder.equal(criteriaBuilder.lower(root.get("visibility")), visibility.toLowerCase());
     }
 
     // Method to filter trivios by category
     public static Specification<Trivio> filterByCategory(String category) {
         return (root, query, criteriaBuilder) ->
-                criteriaBuilder.equal(root.get("category"), category);
+                criteriaBuilder.equal(criteriaBuilder.lower(root.get("category")), category.toLowerCase());
     }
 
     // Method to filter trivios by difficulty
     public static Specification<Trivio> filterByDifficulty(String difficulty) {
         return (root, query, criteriaBuilder) ->
-                criteriaBuilder.equal(root.get("difficulty"), difficulty);
+                criteriaBuilder.equal(criteriaBuilder.lower(root.get("difficulty")), difficulty.toLowerCase());
     }
 
     // Method to filter trivios by tags