diff --git a/src/routes/account.rs b/src/routes/account.rs
index 8f9147a27a2b4ea6e987003db3d67f0ee7d5adc5..17e556c39c683285b2452758eec6ff206b0dbcdc 100644
--- a/src/routes/account.rs
+++ b/src/routes/account.rs
@@ -1,4 +1,3 @@
-use crate::auth::User;
 use crate::database;
 use crate::email;
 
diff --git a/src/routes/mod.rs b/src/routes/mod.rs
index 8b2aeb50489d13ef8d8408d6afedbe05090ef791..3ad8b1bf819ece89261ebf21b12d4de302fcbec8 100644
--- a/src/routes/mod.rs
+++ b/src/routes/mod.rs
@@ -6,5 +6,5 @@ mod user;
 pub fn mount(rocket: Rocket) -> Rocket {
 	rocket
 		.mount("/api/account", routes![ account::create, account::verify_email, account::resend_email, account::login ])
-		.mount("/api/users", routes![ user::me ])
+		.mount("/api/users", routes![ user::me, user::lookup ])
 }
diff --git a/src/routes/user.rs b/src/routes/user.rs
index 7515ea2d26fc40aa58c196906ead25df62041d1b..a265b0b77869d7482bf0022c1a795481d6b110a6 100644
--- a/src/routes/user.rs
+++ b/src/routes/user.rs
@@ -1,7 +1,10 @@
 use crate::auth::User;
+use crate::database;
 
-use rocket_contrib::json::{ JsonValue };
-use bson::{ doc };
+use rocket_contrib::json::{ Json, JsonValue };
+use serde::{ Serialize, Deserialize };
+use mongodb::options::FindOptions;
+use bson::{ bson, doc };
 
 #[get("/@me")]
 pub fn me(user: User) -> JsonValue {
@@ -16,3 +19,31 @@ pub fn me(user: User) -> JsonValue {
 		"created_timestamp": id.datetime().timestamp(),
 	})
 }
+
+#[derive(Serialize, Deserialize)]
+pub struct Query {
+	username: String,
+}
+
+#[post("/lookup", data = "<query>")]
+pub fn lookup(_user: User, query: Json<Query>) -> JsonValue {
+	let col = database::get_db().collection("users");
+
+	let users = col.find(
+		doc! { "username": query.username.clone() },
+		FindOptions::builder().limit(10).build()
+	).expect("Failed user lookup");
+
+	let mut results = Vec::new();
+	for user in users {
+		let u = user.expect("Failed to unwrap user.");
+		results.push(
+			json!({
+				"id": u.get_str("_id").expect("DB[id]"),
+				"username": u.get_str("username").expect("DB[username]")
+			})
+		);
+	}
+
+	json!(results)
+}