diff --git a/openstack/db/v1/instances/fixtures.go b/openstack/db/v1/instances/fixtures.go
index f990165..716fe09 100644
--- a/openstack/db/v1/instances/fixtures.go
+++ b/openstack/db/v1/instances/fixtures.go
@@ -9,6 +9,45 @@
 	fake "github.com/rackspace/gophercloud/testhelper/client"
 )
 
+const singleInstanceJson = `
+{
+	"instance": {
+		"created": "2014-02-13T21:47:13",
+		"datastore": {
+			"type": "mysql",
+			"version": "5.6"
+		},
+		"flavor": {
+			"id": "1",
+			"links": [
+				{
+					"href": "https://my-openstack.com/v1.0/1234/flavors/1",
+					"rel": "self"
+				},
+				{
+					"href": "https://my-openstack.com/v1.0/1234/flavors/1",
+					"rel": "bookmark"
+				}
+			]
+		},
+		"links": [
+			{
+				"href": "https://my-openstack.com/v1.0/1234/instances/1",
+				"rel": "self"
+			}
+		],
+		"hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
+		"id": "d4603f69-ec7e-4e9b-803f-600b9205576f",
+		"name": "json_rack_instance",
+		"status": "BUILD",
+		"updated": "2014-02-13T21:47:13",
+		"volume": {
+			"size": 2
+		}
+	}
+}
+`
+
 func HandleCreateInstanceSuccessfully(t *testing.T) {
 	th.Mux.HandleFunc("/instances", func(w http.ResponseWriter, r *http.Request) {
 		th.TestMethod(t, r, "POST")
@@ -50,44 +89,7 @@
 }
 `)
 
-		fmt.Fprintf(w, `
-{
-  "instance": {
-    "created": "2014-02-13T21:47:13",
-    "datastore": {
-      "type": "mysql",
-      "version": "5.6"
-    },
-    "flavor": {
-      "id": "1",
-      "links": [
-        {
-          "href": "https://my-openstack.com/v1.0/1234/flavors/1",
-          "rel": "self"
-        },
-        {
-          "href": "https://my-openstack.com/v1.0/1234/flavors/1",
-          "rel": "bookmark"
-        }
-      ]
-    },
-		"links": [
-			{
-				"href": "https://my-openstack.com/v1.0/1234/instances/1",
-				"rel": "self"
-			}
-		],
-    "hostname": "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
-    "id": "d4603f69-ec7e-4e9b-803f-600b9205576f",
-    "name": "json_rack_instance",
-    "status": "BUILD",
-    "updated": "2014-02-13T21:47:13",
-    "volume": {
-      "size": 2
-    }
-  }
-}
-`)
+		fmt.Fprintf(w, singleInstanceJson)
 	})
 }
 
@@ -125,10 +127,6 @@
         {
           "href": "https://openstack.example.com/v1.0/1234/instances/8fb081af-f237-44f5-80cc-b46be1840ca9",
           "rel": "self"
-        },
-        {
-          "href": "https://openstack.example.com/instances/8fb081af-f237-44f5-80cc-b46be1840ca9",
-          "rel": "bookmark"
         }
       ]
     }
@@ -137,3 +135,14 @@
 `)
 	})
 }
+
+func HandleGetInstanceSuccessfully(t *testing.T, id string) {
+	th.Mux.HandleFunc("/instances/"+id, func(w http.ResponseWriter, r *http.Request) {
+		th.TestMethod(t, r, "GET")
+		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
+
+		w.Header().Add("Content-Type", "application/json")
+
+		fmt.Fprintf(w, singleInstanceJson)
+	})
+}
diff --git a/openstack/db/v1/instances/requests.go b/openstack/db/v1/instances/requests.go
index eb60342..d5709b3 100644
--- a/openstack/db/v1/instances/requests.go
+++ b/openstack/db/v1/instances/requests.go
@@ -197,3 +197,18 @@
 
 	return pagination.NewPager(client, baseURL(client), createPageFn)
 }
+
+func Get(client *gophercloud.ServiceClient, id string) GetResult {
+	var res GetResult
+
+	resp, err := perigee.Request("GET", resourceURL(client, id), perigee.Options{
+		MoreHeaders: client.AuthenticatedHeaders(),
+		Results:     &res.Body,
+		OkCodes:     []int{200},
+	})
+
+	res.Header = resp.HttpResponse.Header
+	res.Err = err
+
+	return res
+}
diff --git a/openstack/db/v1/instances/requests_test.go b/openstack/db/v1/instances/requests_test.go
index 236deae..6c0825b 100644
--- a/openstack/db/v1/instances/requests_test.go
+++ b/openstack/db/v1/instances/requests_test.go
@@ -9,6 +9,28 @@
 	fake "github.com/rackspace/gophercloud/testhelper/client"
 )
 
+var instanceID = "d4603f69-ec7e-4e9b-803f-600b9205576f"
+
+var expectedInstance = &Instance{
+	Created: "2014-02-13T21:47:13",
+	Updated: "2014-02-13T21:47:13",
+	Flavor: Flavor{
+		ID: "1",
+		Links: []gophercloud.Link{
+			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "self"},
+			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "bookmark"},
+		},
+	},
+	Hostname: "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
+	ID:       instanceID,
+	Links: []gophercloud.Link{
+		gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/instances/1", Rel: "self"},
+	},
+	Name:   "json_rack_instance",
+	Status: "BUILD",
+	Volume: Volume{Size: 2},
+}
+
 func TestCreate(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
@@ -36,28 +58,8 @@
 
 	instance, err := Create(fake.ServiceClient(), opts).Extract()
 
-	expected := &Instance{
-		Created: "2014-02-13T21:47:13",
-		Updated: "2014-02-13T21:47:13",
-		Flavor: Flavor{
-			ID: "1",
-			Links: []gophercloud.Link{
-				gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "self"},
-				gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/flavors/1", Rel: "bookmark"},
-			},
-		},
-		Hostname: "e09ad9a3f73309469cf1f43d11e79549caf9acf2.my-openstack.com",
-		ID:       "d4603f69-ec7e-4e9b-803f-600b9205576f",
-		Links: []gophercloud.Link{
-			gophercloud.Link{Href: "https://my-openstack.com/v1.0/1234/instances/1", Rel: "self"},
-		},
-		Name:   "json_rack_instance",
-		Status: "BUILD",
-		Volume: Volume{Size: 2},
-	}
-
 	th.AssertNoErr(t, err)
-	th.AssertDeepEquals(t, expected, instance)
+	th.AssertDeepEquals(t, expectedInstance, instance)
 }
 
 func TestInstanceList(t *testing.T) {
@@ -106,3 +108,15 @@
 		t.Errorf("Expected 1 page, saw %d", pages)
 	}
 }
+
+func TestGetInstance(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	HandleGetInstanceSuccessfully(t, instanceID)
+
+	instance, err := Get(fake.ServiceClient(), instanceID).Extract()
+
+	th.AssertNoErr(t, err)
+	th.AssertDeepEquals(t, instance, expectedInstance)
+}
diff --git a/openstack/db/v1/instances/results.go b/openstack/db/v1/instances/results.go
index 0207329..562f752 100644
--- a/openstack/db/v1/instances/results.go
+++ b/openstack/db/v1/instances/results.go
@@ -27,12 +27,20 @@
 	Volume   Volume
 }
 
-// CreateResult represents the result of a Create operation.
-type CreateResult struct {
+type commonResult struct {
 	gophercloud.Result
 }
 
-func (r CreateResult) Extract() (*Instance, error) {
+// CreateResult represents the result of a Create operation.
+type CreateResult struct {
+	commonResult
+}
+
+type GetResult struct {
+	commonResult
+}
+
+func (r commonResult) Extract() (*Instance, error) {
 	if r.Err != nil {
 		return nil, r.Err
 	}
diff --git a/openstack/db/v1/instances/urls.go b/openstack/db/v1/instances/urls.go
index e049b6c..d30e762 100644
--- a/openstack/db/v1/instances/urls.go
+++ b/openstack/db/v1/instances/urls.go
@@ -5,3 +5,7 @@
 func baseURL(c *gophercloud.ServiceClient) string {
 	return c.ServiceURL("instances")
 }
+
+func resourceURL(c *gophercloud.ServiceClient, id string) string {
+	return c.ServiceURL("instances", id)
+}
