diff --git a/jsonapi_extras.services.yml b/jsonapi_extras.services.yml
index 571f48ab2939ea04d2b3ccdca739f7b40cd575e7..0a460ea99838553d98211a7b5472180b5dda99e4 100644
--- a/jsonapi_extras.services.yml
+++ b/jsonapi_extras.services.yml
@@ -42,4 +42,6 @@ services:
 
   jsonapi_extras.entity.to_jsonapi:
     class: Drupal\jsonapi_extras\EntityToJsonApi
-    arguments: ['@http_kernel']
+    arguments:
+      - '@http_kernel'
+      - '@jsonapi.resource_type.repository'
diff --git a/src/EntityToJsonApi.php b/src/EntityToJsonApi.php
index bfa09a072f23bb2dc5bd0f08e469c834c1fb7e13..1b2bc4987c9ffb4136326b4199de9bd802ca2197 100644
--- a/src/EntityToJsonApi.php
+++ b/src/EntityToJsonApi.php
@@ -5,6 +5,7 @@ namespace Drupal\jsonapi_extras;
 use Drupal\Component\Serialization\Json;
 use Drupal\Core\Entity\EntityInterface;
 use Drupal\Core\Url;
+use Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\HttpKernelInterface;
 
@@ -22,14 +23,27 @@ class EntityToJsonApi {
    */
   protected $httpKernel;
 
+  /**
+   * The JSON:API Resource Type Repository.
+   *
+   * @var \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface
+   */
+  protected $resourceTypeRepository;
+
   /**
    * EntityToJsonApi constructor.
    *
    * @param \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel
    *   The HTTP kernel.
+   * @param \Drupal\jsonapi\ResourceType\ResourceTypeRepositoryInterface $resource_type_repository
+   *   The resource type repository.
    */
-  public function __construct(HttpKernelInterface $http_kernel) {
+  public function __construct(
+    HttpKernelInterface $http_kernel,
+    ResourceTypeRepositoryInterface $resource_type_repository
+  ) {
     $this->httpKernel = $http_kernel;
+    $this->resourceTypeRepository = $resource_type_repository;
   }
 
   /**
@@ -42,10 +56,17 @@ class EntityToJsonApi {
    *
    * @return string
    *   The raw JSON string of the requested resource.
+   *
+   * @throws \Exception
    */
   public function serialize(EntityInterface $entity, array $includes = []) {
-    $route_name = sprintf('jsonapi.%s--%s.individual', $entity->getEntityTypeId(), $entity->bundle());
-    $jsonapi_url = Url::fromRoute($route_name, ['entity' => $entity->uuid()])->toString(TRUE)->getGeneratedUrl();
+    $resource_type_name = $this->resourceTypeRepository
+      ->get($entity->getEntityTypeId(), $entity->bundle())
+      ->getTypeName();
+    $route_name = sprintf('jsonapi.%s.individual', $resource_type_name);
+    $jsonapi_url = Url::fromRoute($route_name, ['entity' => $entity->uuid()])
+      ->toString(TRUE)
+      ->getGeneratedUrl();
     $query = [];
     if ($includes) {
       $query = ['include' => implode(',', $includes)];
@@ -65,6 +86,8 @@ class EntityToJsonApi {
    *
    * @return array
    *   The JSON structure of the requested resource.
+   *
+   * @throws \Exception
    */
   public function normalize(EntityInterface $entity, array $includes = []) {
     return Json::decode($this->serialize($entity, $includes));