diff --git a/src/app/controllers/search/get_episode_rest.php b/src/app/controllers/search/get_episode_rest.php
new file mode 100644
index 0000000000000000000000000000000000000000..62683b8f576627170a6d7fd1018b7c2a17c7b14b
--- /dev/null
+++ b/src/app/controllers/search/get_episode_rest.php
@@ -0,0 +1,26 @@
+<?php
+
+class GetSearchEpisodeRestController
+{
+  public function call()
+  {
+    $episodeModel = new EpisodeModel();
+
+    $keyword = "";
+    $genre = "";
+    if (isset($_GET["keyword"])){
+        $keyword = $_GET["keyword"];
+    }
+    if (isset($_GET["genre"])){
+        $genre = $_GET["genre"];
+    }
+
+    $episodes = $episodeModel->getSearchRest($keyword, $genre);
+
+    http_response_code(200);
+    header("Content-Type: application/json");
+    echo json_encode(["episodes" => $episodes]);
+
+    return;
+  }
+}
diff --git a/src/app/controllers/search/get_search_rest.php b/src/app/controllers/search/get_search_rest.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc46f2cd83bbd5e2e49e4b793dbb1850eb17978b
--- /dev/null
+++ b/src/app/controllers/search/get_search_rest.php
@@ -0,0 +1,26 @@
+<?php
+
+class GetSearchPodcastRestController
+{
+  public function call()
+  {
+    $podcastModel = new PodcastModel();
+
+    $keyword = "";
+    $genre = "";
+    if (isset($_GET["keyword"])){
+        $keyword = $_GET["keyword"];
+    }
+    if (isset($_GET["genre"])){
+        $genre = $_GET["genre"];
+    }
+
+    $podcasts = $podcastModel->getSearchPodcast($keyword, $genre);
+
+    http_response_code(200);
+    header("Content-Type: application/json");
+    echo json_encode(["podcasts" => $podcasts]);
+
+    return;
+  }
+}
diff --git a/src/app/core/app.php b/src/app/core/app.php
index cd06729b17afa0e5a1bb7bc9f327761deef7bd34..c8d1276ff4bc1a932e1535100b8e554565c1dca2 100644
--- a/src/app/core/app.php
+++ b/src/app/core/app.php
@@ -51,6 +51,9 @@ class App
     $router->get("public/episode-by-id", new GetEpisodeController());
     $router->get("public/random-podcast", new GetRandomPodcastController());
 
+    $router->get("public/rest/search/podcast", new GetSearchPodcastRestController());
+    $router->get("public/rest/search/episode", new GetSearchEpisodeRestController());
+
     // POST routes
     $router->post("public/logout", new LogoutController());
     $router->post("public/login", new PostLoginController());
diff --git a/src/app/init.php b/src/app/init.php
index dfd58a91481702ad21240a6c33d0d84716a7e8b0..cba77446b9ee1606ba1badf0b386d6cfb2e36947 100644
--- a/src/app/init.php
+++ b/src/app/init.php
@@ -55,6 +55,8 @@ require_once __DIR__ . "/controllers/seed/post_seed.php";
 require_once __DIR__ . "/controllers/podcast/get_podcast.php";
 require_once __DIR__ . "/controllers/episode/get_episode.php";
 require_once __DIR__ . "/controllers/podcast/get_random_podcast.php";
+require_once __DIR__ . "/controllers/search/get_search_rest.php";
+require_once __DIR__ . "/controllers/search/get_episode_rest.php";
 
 require_once __DIR__ . "/models/podcast.php";
 require_once __DIR__ . "/models/episode.php";
diff --git a/src/app/models/episode.php b/src/app/models/episode.php
index d976c23cd0678856dcb28546df910f3ca7851cb7..6d5bb5b76f220c3f2f05a1f50be58987b5568ccf 100644
--- a/src/app/models/episode.php
+++ b/src/app/models/episode.php
@@ -129,4 +129,23 @@ class EpisodeModel
     $episode = $this->db->fetchAll();
     return $episode;
   }
+
+  public function getSearchRest($keyword, $genre)
+  {
+    $query = "
+      SELECT e.id_episode, e.title, e.description, e.url_thumbnail, p.title AS podcast_title
+      FROM episode e
+      NATURAL JOIN podcast p
+      WHERE e.title LIKE :keyword
+      AND p.category LIKE :genre
+    ";
+
+    $this->db->query($query);
+
+    $this->db->bind("keyword", '%' . $keyword . '%');
+    $this->db->bind("genre", $genre == "" ? '%' : $genre);
+    $podcasts = $this->db->fetchAll();
+    return $podcasts;
+  }
+  
 }
diff --git a/src/app/models/podcast.php b/src/app/models/podcast.php
index 8b906dfb4ad276f0aa9617a5b9134ef88eb4f2cd..a96518c422b91110d524d028b660daecd7a02a44 100644
--- a/src/app/models/podcast.php
+++ b/src/app/models/podcast.php
@@ -248,4 +248,25 @@ class PodcastModel
     $podcast = $this->db->fetchAll();
     return $podcast;
   }
+
+  public function getSearchPodcast($keyword, $genre)
+  {
+
+    $query =
+      "SELECT p.id_podcast, p.title, p.description, p.url_thumbnail
+    FROM podcast AS p
+    LEFT JOIN episode AS e ON p.id_podcast = e.id_podcast
+    WHERE (p.title LIKE :search_value
+    OR p.description LIKE :search_value)
+    AND p.category LIKE :genre
+    ";
+
+
+    $this->db->query($query);
+
+    $this->db->bind("search_value", '%' . $keyword . '%');
+    $this->db->bind("genre", $genre == "" ? '%' : $genre);
+    $podcasts = $this->db->fetchAll();
+    return $podcasts;
+  }
 }