Adjust callers to match.
diff --git a/openstack/identity/v3/endpoints/requests.go b/openstack/identity/v3/endpoints/requests.go
index 7fc4544..bf60406 100644
--- a/openstack/identity/v3/endpoints/requests.go
+++ b/openstack/identity/v3/endpoints/requests.go
@@ -109,8 +109,16 @@
 		q["per_page"] = strconv.Itoa(opts.Page)
 	}
 
+	countPage := func(p gophercloud.Page) (int, error) {
+		es, err := ExtractEndpoints(p)
+		if err != nil {
+			return 0, err
+		}
+		return len(es), nil
+	}
+
 	u := getListURL(client) + utils.BuildQuery(q)
-	return gophercloud.NewLinkedPager(client, u)
+	return gophercloud.NewLinkedPager(client, u, countPage)
 }
 
 // Update changes an existing endpoint with new data.
diff --git a/openstack/identity/v3/endpoints/requests_test.go b/openstack/identity/v3/endpoints/requests_test.go
index f988770..84cb2da 100644
--- a/openstack/identity/v3/endpoints/requests_test.go
+++ b/openstack/identity/v3/endpoints/requests_test.go
@@ -91,6 +91,7 @@
 		testhelper.TestMethod(t, r, "GET")
 		testhelper.TestHeader(t, r, "X-Auth-Token", tokenID)
 
+		w.Header().Add("Content-Type", "application/json")
 		fmt.Fprintf(w, `
 			{
 				"endpoints": [
diff --git a/openstack/identity/v3/services/requests.go b/openstack/identity/v3/services/requests.go
index 34df63f..7bc4a82 100644
--- a/openstack/identity/v3/services/requests.go
+++ b/openstack/identity/v3/services/requests.go
@@ -55,7 +55,15 @@
 	}
 	u := getListURL(client) + utils.BuildQuery(q)
 
-	return gophercloud.NewLinkedPager(client, u)
+	countPage := func(p gophercloud.Page) (int, error) {
+		services, err := ExtractServices(p)
+		if err != nil {
+			return 0, err
+		}
+		return len(services), nil
+	}
+
+	return gophercloud.NewLinkedPager(client, u, countPage)
 }
 
 // Get returns additional information about a service, given its ID.