diff --git a/c_src/main.c b/c_src/main.c
index 7750a96..8cb03b0 100644
--- a/c_src/main.c
+++ b/c_src/main.c
@@ -1144,6 +1144,57 @@
     return erlfdb_create_future(env, future, ErlFDB_FT_VALUE);
 }
 
+#if FDB_API_VERSION >= 630
+static ERL_NIF_TERM
+erlfdb_transaction_get_estimated_range_size(
+        ErlNifEnv* env,
+        int argc,
+        const ERL_NIF_TERM argv[]
+    )
+{
+    ErlFDBSt* st = (ErlFDBSt*) enif_priv_data(env);
+    ErlFDBTransaction* t;
+    ErlNifBinary skey;
+    ErlNifBinary ekey;
+    FDBFuture* future;
+    void* res;
+
+    if(st->lib_state != ErlFDB_CONNECTED) {
+        return enif_make_badarg(env);
+    }
+
+    if(argc != 3) {
+        return enif_make_badarg(env);
+    }
+
+    if(!enif_get_resource(env, argv[0], ErlFDBTransactionRes, &res)) {
+        return enif_make_badarg(env);
+    }
+    t = (ErlFDBTransaction*) res;
+
+    if(!erlfdb_transaction_is_owner(env, t)) {
+        return enif_make_badarg(env);
+    }
+
+    if(!enif_inspect_binary(env, argv[1], &skey)) {
+        return enif_make_badarg(env);
+    }
+
+    if(!enif_inspect_binary(env, argv[2], &ekey)) {
+        return enif_make_badarg(env);
+    }
+
+    future = fdb_transaction_get_estimated_range_size_bytes(
+            t->transaction,
+            (uint8_t*) skey.data,
+            skey.size,
+            (uint8_t*) ekey.data,
+            ekey.size
+        );
+
+    return erlfdb_create_future(env, future, ErlFDB_FT_INT64);
+}
+#endif
 
 static ERL_NIF_TERM
 erlfdb_transaction_get_key(
@@ -2237,6 +2288,10 @@
     NIF_FUNC(erlfdb_transaction_has_watches, 1),
     NIF_FUNC(erlfdb_transaction_get_writes_allowed, 1),
 
+    #if FDB_API_VERSION >= 630
+    NIF_FUNC(erlfdb_transaction_get_estimated_range_size, 3),
+    #endif
+
     NIF_FUNC(erlfdb_get_error, 1),
     NIF_FUNC(erlfdb_error_predicate, 2)
 };
diff --git a/src/erlfdb.erl b/src/erlfdb.erl
index d6f3be9..7c26750 100644
--- a/src/erlfdb.erl
+++ b/src/erlfdb.erl
@@ -110,8 +110,9 @@
     has_watches/1,
     get_writes_allowed/1,
 
-    % Locality
+    % Locality and Statistics
     get_addresses_for_key/2,
+    get_estimated_range_size/3,
 
     % Get conflict information
     get_conflicting_keys/1,
@@ -545,6 +546,11 @@
 get_addresses_for_key(?IS_SS = SS, Key) ->
     get_addresses_for_key(?GET_TX(SS), Key).
 
+get_estimated_range_size(?IS_TX = Tx, StartKey, EndKey) ->
+    erlfdb_nif:transaction_get_estimated_range_size(Tx, StartKey, EndKey);
+get_estimated_range_size(?IS_SS = SS, StartKey, EndKey) ->
+    erlfdb_nif:transaction_get_estimated_range_size(?GET_TX(SS), StartKey, EndKey).
+
 get_conflicting_keys(?IS_TX = Tx) ->
     StartKey = <<16#FF, 16#FF, "/transaction/conflicting_keys/">>,
     EndKey = <<16#FF, 16#FF, "/transaction/conflicting_keys/", 16#FF>>,
diff --git a/src/erlfdb_nif.erl b/src/erlfdb_nif.erl
index b8f5895..4e70303 100644
--- a/src/erlfdb_nif.erl
+++ b/src/erlfdb_nif.erl
@@ -36,6 +36,7 @@
     transaction_set_read_version/2,
     transaction_get_read_version/1,
     transaction_get/3,
+    transaction_get_estimated_range_size/3,
     transaction_get_key/3,
     transaction_get_addresses_for_key/2,
     transaction_get_range/9,
@@ -266,6 +267,14 @@
 transaction_get({erlfdb_transaction, Tx}, Key, Snapshot) ->
     erlfdb_transaction_get(Tx, Key, Snapshot).
 
+-spec transaction_get_estimated_range_size(
+    transaction(),
+    StartKey :: binary(),
+    EndKey :: binary()
+) -> future().
+transaction_get_estimated_range_size({erlfdb_transaction, Tx}, StartKey, EndKey) ->
+    erlfdb_transaction_get_estimated_range_size(Tx, StartKey, EndKey).
+
 -spec transaction_get_key(
     transaction(),
     KeySelector :: key_selector(),
@@ -511,6 +520,7 @@
 erlfdb_transaction_set_read_version(_Transaction, _Version) -> ?NOT_LOADED.
 erlfdb_transaction_get_read_version(_Transaction) -> ?NOT_LOADED.
 erlfdb_transaction_get(_Transaction, _Key, _Snapshot) -> ?NOT_LOADED.
+erlfdb_transaction_get_estimated_range_size(_Transaction, _SKey, _EKey) -> ?NOT_LOADED.
 erlfdb_transaction_get_key(_Transaction, _KeySelector, _Snapshot) -> ?NOT_LOADED.
 erlfdb_transaction_get_addresses_for_key(_Transaction, _Key) -> ?NOT_LOADED.
 erlfdb_transaction_get_range(
diff --git a/test/tester.es b/test/tester.es
index 6ebff3e..c1d3b3c 100755
--- a/test/tester.es
+++ b/test/tester.es
@@ -485,6 +485,22 @@
     end,
     St;
 
+execute(TxObj, St, <<"GET_ESTIMATED_RANGE_SIZE">>) ->
+    [StartKey, EndKey] = stack_pop(St, 2),
+    Value = case erlfdb:get_estimated_range_size(TxObj, StartKey, EndKey) of
+        {erlfdb_future, _, _} = Future ->
+            erlfdb:wait(Future);
+        Else ->
+            Else
+    end,
+    case Value of
+        Size when is_integer(Size) ->
+            stack_push(St, <<"GOT_ESTIMATED_RANGE_SIZE">>);
+        BadResult ->
+            stack_push(St, BadResult)
+    end,
+    St;
+
 execute(TxObj, St, <<"GET_KEY">>) ->
     [Key, OrEqual, Offset, Prefix] = stack_pop(St, 4),
     Selector = {Key, OrEqual, Offset},
