diff --git a/src/main/java/de/tobias/playwall/controller/PluginController.java b/src/main/java/de/tobias/playwall/controller/PluginController.java
index 17868ff7cf1191ff02f89bfed03c062ab8d5a318..fa39bc74baef6fdc4b8a5010708dc626c6389b4d 100644
--- a/src/main/java/de/tobias/playwall/controller/PluginController.java
+++ b/src/main/java/de/tobias/playwall/controller/PluginController.java
@@ -3,9 +3,12 @@ package de.tobias.playwall.controller;
 import de.tobias.playwall.model.Plugin;
 import de.tobias.playwall.service.PluginService;
 import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.server.ResponseStatusException;
 
 import java.util.List;
 
@@ -21,4 +24,10 @@ public class PluginController
 	{
 		return service.getAllPlugins();
 	}
+
+	@GetMapping("/{id}")
+	Plugin getPlugin(@PathVariable Integer id)
+	{
+		return service.getPlugin(id).orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND));
+	}
 }
diff --git a/src/main/java/de/tobias/playwall/repository/PluginDescriptionRepository.java b/src/main/java/de/tobias/playwall/repository/PluginDescriptionRepository.java
index 4509c532b67496f3d4c4e1d25d984b9a60178a7c..9350eb3e3813be0f90d58919bdc596e0dda4d93a 100644
--- a/src/main/java/de/tobias/playwall/repository/PluginDescriptionRepository.java
+++ b/src/main/java/de/tobias/playwall/repository/PluginDescriptionRepository.java
@@ -13,6 +13,8 @@ import org.springframework.stereotype.Service;
 
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
 
 @Service
 @EnableConfigurationProperties
@@ -37,4 +39,12 @@ public class PluginDescriptionRepository
 		{
 		});
 	}
+
+	@SneakyThrows
+	public Optional<PluginDescription> findById(Integer id)
+	{
+		return findAll().stream()
+				.filter(pluginDescription -> Objects.equals(pluginDescription.getId(), id))
+				.findFirst();
+	}
 }
diff --git a/src/main/java/de/tobias/playwall/service/PluginService.java b/src/main/java/de/tobias/playwall/service/PluginService.java
index 670efbd4506da1896a04084ad2ff97b64dea26fb..f677913d9857e8ae04fca2bac132964b1801a136 100644
--- a/src/main/java/de/tobias/playwall/service/PluginService.java
+++ b/src/main/java/de/tobias/playwall/service/PluginService.java
@@ -1,6 +1,7 @@
 package de.tobias.playwall.service;
 
 import de.tobias.playwall.model.Plugin;
+import de.tobias.playwall.model.PluginDescription;
 import de.tobias.playwall.model.PluginManifest;
 import de.tobias.playwall.model.artifactory.Version;
 import de.tobias.playwall.repository.PluginDescriptionRepository;
@@ -8,6 +9,7 @@ import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Optional;
 
 @Service
 @AllArgsConstructor
@@ -18,19 +20,27 @@ public class PluginService
 
 	public List<Plugin> getAllPlugins()
 	{
-		return pluginDescriptionRepository.findAll().stream().map(pluginDescription -> {
-			final Version version = artifactoryClient.getLatestVersion(pluginDescription);
-			final PluginManifest manifest = artifactoryClient.getPluginManifest(pluginDescription, version);
+		return pluginDescriptionRepository.findAll().stream().map(this::collectPluginInformation).toList();
+	}
+
+	public Optional<Plugin> getPlugin(Integer id)
+	{
+		return pluginDescriptionRepository.findById(id).map(this::collectPluginInformation);
+	}
+
+	private Plugin collectPluginInformation(PluginDescription pluginDescription)
+	{
+		final Version version = artifactoryClient.getLatestVersion(pluginDescription);
+		final PluginManifest manifest = artifactoryClient.getPluginManifest(pluginDescription, version);
 
-			return Plugin.builder()
-					.id(pluginDescription.getId())
-					.name(pluginDescription.getName())
-					.displayName(pluginDescription.getDisplayName())
-					.description(pluginDescription.getDescription())
-					.icon(pluginDescription.getIcon())
-					.version(version.toVersionString())
-					.build(manifest.getBuild())
-					.build();
-		}).toList();
+		return Plugin.builder()
+				.id(pluginDescription.getId())
+				.name(pluginDescription.getName())
+				.displayName(pluginDescription.getDisplayName())
+				.description(pluginDescription.getDescription())
+				.icon(pluginDescription.getIcon())
+				.version(version.toVersionString())
+				.build(manifest.getBuild())
+				.build();
 	}
 }