diff --git a/services/identity/src/client_service.rs b/services/identity/src/client_service.rs
--- a/services/identity/src/client_service.rs
+++ b/services/identity/src/client_service.rs
@@ -875,9 +875,20 @@
 
   async fn get_farcaster_users(
     &self,
-    _request: tonic::Request<GetFarcasterUsersRequest>,
+    request: tonic::Request<GetFarcasterUsersRequest>,
   ) -> Result<tonic::Response<GetFarcasterUsersResponse>, tonic::Status> {
-    unimplemented!();
+    let message = request.into_inner();
+
+    let farcaster_users = self
+      .client
+      .get_farcaster_users(message.farcaster_ids)
+      .await
+      .map_err(handle_db_error)?
+      .into_iter()
+      .map(|d| d.0)
+      .collect();
+
+    Ok(Response::new(GetFarcasterUsersResponse { farcaster_users }))
   }
 }
 
diff --git a/services/identity/src/database/farcaster.rs b/services/identity/src/database/farcaster.rs
--- a/services/identity/src/database/farcaster.rs
+++ b/services/identity/src/database/farcaster.rs
@@ -4,7 +4,6 @@
 use comm_lib::database::DBItemAttributeError;
 use comm_lib::database::DBItemError;
 use comm_lib::database::Value;
-use grpc_clients::identity::protos::unauth::FarcasterUser;
 use tracing::error;
 
 use crate::constants::USERS_TABLE;
@@ -13,14 +12,15 @@
 use crate::constants::USERS_TABLE_PARTITION_KEY;
 use crate::constants::USERS_TABLE_USERNAME_ATTRIBUTE;
 use crate::constants::USERS_TABLE_WALLET_ADDRESS_ATTRIBUTE;
+use crate::grpc_services::protos::unauth::FarcasterUser;
 
 use super::DatabaseClient;
 use super::Error;
 
-struct FarcasterUserData(FarcasterUser);
+pub struct FarcasterUserData(pub FarcasterUser);
 
 impl DatabaseClient {
-  async fn get_farcaster_users(
+  pub async fn get_farcaster_users(
     &self,
     farcaster_ids: Vec<String>,
   ) -> Result<Vec<FarcasterUserData>, Error> {