diff --git a/gql/gva_queries.gql b/gql/gva_queries.gql
index 52d8aba3d81698e18161e06f0c87726a29fd6226..f68ac66a8bdb62d756fd5bd4c5adf7a2230d6cb8 100644
--- a/gql/gva_queries.gql
+++ b/gql/gva_queries.gql
@@ -12,3 +12,9 @@ query CurrentUd {
     amount
   }
 }
+
+query MembersCount {
+  currentBlock {
+    membersCount
+  }
+}
diff --git a/src/commands.rs b/src/commands.rs
index ab1dfd4f5c4227a8b3f2217c68d8699ea562d80b..f734346eb74f8003d86a83fd61fa185096200bb2 100644
--- a/src/commands.rs
+++ b/src/commands.rs
@@ -25,6 +25,8 @@ pub(crate) enum Command {
     },
     /// Get current UD value
     CurrentUd,
+    /// Get current number of WoT members
+    MembersCount,
 }
 
 pub(crate) fn balance<W: Write>(
@@ -83,6 +85,24 @@ pub(crate) fn current_ud<W: Write>(client: &Client, out: &mut W) -> anyhow::Resu
     Ok(())
 }
 
+pub(crate) fn members_count<W: Write>(client: &Client, out: &mut W) -> anyhow::Result<()> {
+    let request_body = MembersCount::build_query(members_count::Variables);
+
+    let members_count::ResponseData {
+        current_block: members_count::MembersCountCurrentBlock { members_count },
+    } = client.send_gql_query(&request_body)?;
+
+    writeln!(
+        out,
+        "There is currently {} members in Ğ1 WoT!",
+        members_count
+    )?;
+
+    Ok(())
+}
+
+// below are tests
+
 #[cfg(test)]
 mod tests {
     use super::*;
@@ -145,4 +165,25 @@ mod tests {
 
         Ok(())
     }
+
+    #[test]
+    fn test_member_count() -> anyhow::Result<()> {
+        let mut client = Client::default();
+        client
+            .expect_send_gql_query::<graphql_client::QueryBody<members_count::Variables>, _>()
+            .returning(|_| {
+                Ok(members_count::ResponseData {
+                    current_block: members_count::MembersCountCurrentBlock {
+                        members_count: 10_000,
+                    },
+                })
+            });
+        let mut out = Vec::new();
+        members_count(&client, &mut out)?;
+        let output = std::str::from_utf8(&out)?;
+
+        assert_eq!(output, "There is currently 10000 members in Ğ1 WoT!\n");
+
+        Ok(())
+    }
 }
diff --git a/src/main.rs b/src/main.rs
index 4b7e8e9757b9cbe0b871c0e6d1d5962f6801384f..e23963da15744d7c5e4bb6b1dccb43aad3c555c6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -32,7 +32,7 @@ use crate::client::Client;
 #[cfg(test)]
 use crate::client::MockClient as Client;
 use crate::commands::Command;
-use commands::{balance, current_ud};
+use commands::{balance, current_ud, members_count};
 use graphql_client::GraphQLQuery;
 use graphql_client::Response;
 use std::io::Write;
@@ -49,6 +49,10 @@ pub struct Balance;
 #[graphql(schema_path = "gql/gva_schema.gql", query_path = "gql/gva_queries.gql")]
 pub struct CurrentUd;
 
+#[derive(Debug, Clone, Copy, GraphQLQuery)]
+#[graphql(schema_path = "gql/gva_schema.gql", query_path = "gql/gva_queries.gql")]
+pub struct MembersCount;
+
 #[derive(StructOpt)]
 #[structopt(name = "rust-gva-client", about = "Client use GVA API of Duniter.")]
 struct CliArgs {
@@ -71,6 +75,7 @@ fn main() -> anyhow::Result<()> {
             ud_unit,
         } => balance(&client, &mut out, &pubkey_or_script, ud_unit)?,
         Command::CurrentUd => current_ud(&client, &mut out)?,
+        Command::MembersCount => members_count(&client, &mut out)?,
     }
     Ok(())
 }