diff --git a/hlrdb-core.cabal b/hlrdb-core.cabal
--- a/hlrdb-core.cabal
+++ b/hlrdb-core.cabal
@@ -1,5 +1,5 @@
 name:                hlrdb-core
-version:             0.1.1.1
+version:             0.1.2.0
 synopsis:            High-level Redis Database Core API
 description:         A library for type-driven interaction with Redis
 license:             MIT
diff --git a/src/HLRDB/Core.hs b/src/HLRDB/Core.hs
--- a/src/HLRDB/Core.hs
+++ b/src/HLRDB/Core.hs
@@ -57,6 +57,7 @@
        , zincrby
        , zcard
        , zscan
+       , zrangebyscore
 
          -- * Universal
        , HLRDB.Core.del
@@ -90,6 +91,7 @@
 import HLRDB.Structures.HSet
 import HLRDB.Structures.Set
 import HLRDB.Structures.SSet
+
 
 -- | Delete all data for the given keys in Redis
 del :: (Traversable t , MonadRedis m) => RedisStructure v a b -> t a -> m (ActionPerformed Deletion)
diff --git a/src/HLRDB/Structures/SSet.hs b/src/HLRDB/Structures/SSet.hs
--- a/src/HLRDB/Structures/SSet.hs
+++ b/src/HLRDB/Structures/SSet.hs
@@ -17,6 +17,7 @@
        , HLRDB.Structures.SSet.zincrby
        , HLRDB.Structures.SSet.zcard
        , HLRDB.Structures.SSet.zscan
+       , HLRDB.Structures.SSet.zrangebyscore
        ) where
 
 import Control.Lens
@@ -24,6 +25,7 @@
 import Database.Redis as Redis
 import HLRDB.Primitives.Redis
 import HLRDB.Internal
+import Data.ByteString.Char8 (ByteString, pack)
 
 
 trimInternal :: MonadRedis m => RedisSSet a b -> a -> Integer -> m ()
@@ -129,4 +131,27 @@
   let f (x,s) = (d (pure x) , s) in
     unwrapCursor (fmap f)
   . Redis.zscan (primKey p k)
+
+-- | Retrieve items in a score range; final parameters are @min@, @max@, @offset@, and @limit@
+zrangebyscore :: MonadRedis m => RedisSSet a b -> a -> Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Integer -> m [ (b , Double) ]
+zrangebyscore p@(RSortedSet (E _ _ d) _) k mmin mmax mo ml =
+    (fmap . fmap) (over _1 (d . Identity))
+  $ unwrap
+  $ req
+      (primKey p k)
+      (maybe "-inf" encode mmin)
+      (maybe "+inf" encode mmax)
+      (encode <$> mo)
+      (encode <$> ml)
+  where
+    encode :: Show a => a -> ByteString
+    encode = pack . show
+
+    req :: RedisCtx m f => ByteString -> ByteString -> ByteString -> Maybe ByteString -> Maybe ByteString-> m (f [ (ByteString , Double) ])
+    req ke mi ma Nothing Nothing =
+      sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" ]
+    req ke mi ma (Just off) mli =
+      sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" , "LIMIT", off , maybe (encode (maxBound :: Int64)) id mli ]
+    req ke mi ma Nothing (Just li) =
+      sendRequest $ [ "ZRANGEBYSCORE", ke , mi , ma , "WITHSCORES" , "LIMIT", "0" , li ]
 
