diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+# 0.1.1.0 (2020-04-09)
+
+* Export `get` and add `getField`.
+
 # 0.1.0.3 (2019-05-09)
 
 * Compatibility with `generics-sop-0.5`.
diff --git a/records-sop.cabal b/records-sop.cabal
--- a/records-sop.cabal
+++ b/records-sop.cabal
@@ -1,12 +1,12 @@
 name: records-sop
-version: 0.1.0.3
+version: 0.1.1.0
 author: Andres Löh <andres@well-typed.com>
 maintainer: andres@well-typed.com
 license: BSD3
 license-file: LICENSE
 cabal-version: >= 1.10
 build-type: Simple
-tested-with: GHC == 8.0.2, GHC == 8.2.1, GHC == 8.4.4, GHC == 8.6.5
+tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.2, GHC == 8.10.4, GHC == 9.0.1
 category: Generics
 synopsis: Record subtyping and record utilities with generics-sop
 description:
@@ -34,7 +34,7 @@
     base >= 4.9 && < 5.0,
     deepseq >= 1.3 && < 1.5,
     generics-sop >= 0.3 && < 0.6,
-    ghc-prim >= 0.5 && < 0.6
+    ghc-prim >= 0.5 && < 0.8
   default-language:
     Haskell2010
 
diff --git a/src/Generics/SOP/Record/SubTyping.hs b/src/Generics/SOP/Record/SubTyping.hs
--- a/src/Generics/SOP/Record/SubTyping.hs
+++ b/src/Generics/SOP/Record/SubTyping.hs
@@ -16,6 +16,8 @@
   ( cast
   , IsSubTypeOf
   , IsElemOf
+  , get
+  , getField
   )
   where
 
@@ -31,6 +33,12 @@
 --
 cast :: (IsRecord a ra, IsRecord b rb, IsSubTypeOf ra rb) => a -> b
 cast = fromRecord . castRecord . toRecord
+
+-- | Extract a record field based on the symbolic name of a field.
+-- Requires an explicit type application for the field name.
+--
+getField :: forall s a b ra . (IsRecord a ra, IsElemOf s b ra) => a -> b
+getField = get @s . toRecord
 
 -- | Class that checks whether one record code is convertible into another.
 --
diff --git a/tests/Examples.hs b/tests/Examples.hs
--- a/tests/Examples.hs
+++ b/tests/Examples.hs
@@ -1,6 +1,8 @@
 {-# LANGUAGE
-    DeriveGeneric
+    DataKinds
+  , DeriveGeneric
   , DuplicateRecordFields
+  , TypeApplications
 #-}
 {-# OPTIONS_GHC -fdefer-type-errors -Wno-deferred-type-errors #-}
 module Main where
@@ -169,3 +171,23 @@
     it "fails to cast G to anything (even X)" $
       shouldNotTypecheck (cast g :: X)
 -}
+    it "successfully extracts anInt from A" $
+      getField @"anInt" a `shouldBe` 3
+    it "successfully extracts aBool from A" $
+      getField @"aBool" a `shouldBe` True
+    it "correctly fails to extract aChar from A" $
+      shouldNotTypecheck (getField @"aChar" a)
+    it "successfully extracts anInt from B" $
+      getField @"anInt" b `shouldBe` 3
+    it "successfully extracts aBool from B" $
+      getField @"aBool" b `shouldBe` True
+    it "successfully extracts aChar from B" $
+      getField @"aChar" b `shouldBe` 'x'
+    it "successfully extracts anInt from C" $
+      getField @"anInt" c `shouldBe` 3
+    it "successfully extracts aBool from C" $
+      getField @"aBool" c `shouldBe` True
+    it "successfully extracts aChar from C" $
+      getField @"aChar" c `shouldBe` 'x'
+    it "successfully extracts the first anInt from D" $
+      getField @"anInt" d' `shouldBe` 3
