diff --git a/lib/code_corps/helpers/query.ex b/lib/code_corps/helpers/query.ex
index 2c387e054..eb090171a 100644
--- a/lib/code_corps/helpers/query.ex
+++ b/lib/code_corps/helpers/query.ex
@@ -65,6 +65,21 @@ defmodule CodeCorps.Helpers.Query do
 
   # end comment queries
 
+  # user queries
+
+  def user_filter(query, %{"query" => query_string}) do
+    query
+    |> where(
+      [object],
+      ilike(object.first_name, ^"%#{query_string}%") or
+      ilike(object.last_name, ^"%#{query_string}%") or
+      ilike(object.username, ^"%#{query_string}%")
+    )
+  end
+  def user_filter(query, _), do: query
+
+  # end user queries
+
   # sorting
 
   def sort_by_newest_first(query), do: query |> order_by([desc: :inserted_at])
diff --git a/test/controllers/user_controller_test.exs b/test/controllers/user_controller_test.exs
index 3f66b49c6..da7f70e6e 100644
--- a/test/controllers/user_controller_test.exs
+++ b/test/controllers/user_controller_test.exs
@@ -44,6 +44,32 @@ defmodule CodeCorps.UserControllerTest do
       |> json_response(200)
       |> assert_ids_from_response([user_1.id, user_2.id])
     end
+
+    test "returns search results on index", %{conn: conn} do
+      user_1 = insert(:user, first_name: "Joe")
+      user_2 = insert(:user, username: "joecoder")
+      user_3 = insert(:user, last_name: "Jacko")
+      insert(:user, first_name: "Max")
+
+      params = %{"query" => "j"}
+      path = conn |> user_path(:index, params)
+
+      conn
+      |> get(path)
+      |> json_response(200)
+      |> assert_ids_from_response([user_1.id, user_2.id, user_3.id])
+    end
+
+    test "limit filter limits results on index", %{conn: conn} do
+      insert_list(6, :user)
+
+      params = %{"limit" => 5}
+      path = conn |> user_path(:index, params)
+      json = conn |> get(path) |> json_response(200)
+
+      returned_users_length = json["data"] |> length
+      assert returned_users_length == 5
+    end
   end
 
   describe "show" do
diff --git a/web/controllers/user_controller.ex b/web/controllers/user_controller.ex
index d8c127660..5fc11b968 100644
--- a/web/controllers/user_controller.ex
+++ b/web/controllers/user_controller.ex
@@ -2,7 +2,7 @@ defmodule CodeCorps.UserController do
   use CodeCorps.Web, :controller
   use JaResource
 
-  import CodeCorps.Helpers.Query, only: [id_filter: 2]
+  import CodeCorps.Helpers.Query, only: [id_filter: 2, user_filter: 2, limit_filter: 2]
 
   alias CodeCorps.User
   alias CodeCorps.Services.UserService
@@ -15,6 +15,12 @@ defmodule CodeCorps.UserController do
     query |> id_filter(id_list)
   end
 
+  def handle_index(_conn, params) do
+    User
+    |> user_filter(params)
+    |> limit_filter(params)
+  end
+
   def handle_create(_conn, attributes) do
     %User{} |> User.registration_changeset(attributes)
   end