diff --git a/Libraries/SPTarkov.Server.Core/Callbacks/ModdedTraderCustomizationCallbacks.cs b/Libraries/SPTarkov.Server.Core/Callbacks/ModdedTraderCustomizationCallbacks.cs
new file mode 100644
index 00000000..682c2cb0
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Callbacks/ModdedTraderCustomizationCallbacks.cs
@@ -0,0 +1,23 @@
+using SPTarkov.DI.Annotations;
+using SPTarkov.Server.Core.Controllers;
+using SPTarkov.Server.Core.Models.Common;
+using SPTarkov.Server.Core.Models.Eft.Common;
+using SPTarkov.Server.Core.Utils;
+
+namespace SPTarkov.Server.Core.Callbacks;
+
+[Injectable]
+public class ModdedTraderCustomizationCallbacks(
+ ModdedTraderCustomizationController moddedTraderCustomizationController,
+ HttpResponseUtil httpResponseUtil
+)
+{
+ ///
+ /// Handle /singleplayer/moddedTraders
+ ///
+ ///
+ public ValueTask GetCustomizationTraders(string url, EmptyRequestData _, MongoId sessionID)
+ {
+ return new ValueTask(httpResponseUtil.NoBody(moddedTraderCustomizationController.GetCustomizationSellerIds()));
+ }
+}
diff --git a/Libraries/SPTarkov.Server.Core/Controllers/ModdedTraderCustomizationController.cs b/Libraries/SPTarkov.Server.Core/Controllers/ModdedTraderCustomizationController.cs
new file mode 100644
index 00000000..66d97808
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Controllers/ModdedTraderCustomizationController.cs
@@ -0,0 +1,28 @@
+using SPTarkov.DI.Annotations;
+using SPTarkov.Server.Core.Models.Enums;
+using SPTarkov.Server.Core.Models.Spt.Mod;
+using SPTarkov.Server.Core.Services;
+
+namespace SPTarkov.Server.Core.Controllers;
+
+[Injectable]
+public class ModdedTraderCustomizationController(DatabaseService databaseService)
+{
+ public ModdedTraderListResponse GetCustomizationSellerIds()
+ {
+ var traders = databaseService.GetTraders();
+ var customizationSellers = new ModdedTraderListResponse
+ {
+ ModdedTraders = []
+ };
+
+ foreach (var trader in traders)
+ {
+ if (trader.Value.Base.CustomizationSeller!.Value && trader.Key != Traders.RAGMAN)
+ {
+ customizationSellers.ModdedTraders.Add(trader.Key);
+ }
+ }
+ return customizationSellers;
+ }
+}
diff --git a/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/ModdedTraderListResponse.cs b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/ModdedTraderListResponse.cs
new file mode 100644
index 00000000..0c3dbc6d
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Models/Spt/Mod/ModdedTraderListResponse.cs
@@ -0,0 +1,6 @@
+namespace SPTarkov.Server.Core.Models.Spt.Mod;
+
+public record ModdedTraderListResponse
+{
+ public List? ModdedTraders { get; set; }
+}
diff --git a/Libraries/SPTarkov.Server.Core/Routers/Static/ModdedTraderCustomizationRouter.cs b/Libraries/SPTarkov.Server.Core/Routers/Static/ModdedTraderCustomizationRouter.cs
new file mode 100644
index 00000000..7d47ea68
--- /dev/null
+++ b/Libraries/SPTarkov.Server.Core/Routers/Static/ModdedTraderCustomizationRouter.cs
@@ -0,0 +1,20 @@
+using SPTarkov.DI.Annotations;
+using SPTarkov.Server.Core.Callbacks;
+using SPTarkov.Server.Core.DI;
+using SPTarkov.Server.Core.Models.Eft.Common;
+using SPTarkov.Server.Core.Utils;
+
+namespace SPTarkov.Server.Core.Routers.Static;
+
+[Injectable]
+public class ModdedTraderCustomizationRouter(JsonUtil jsonUtil, ModdedTraderCustomizationCallbacks moddedTraderCustomizationCallbacks)
+ : StaticRouter(
+ jsonUtil,
+ [
+ new RouteAction(
+ "/singleplayer/moddedTraders",
+ async (url, info, sessionID, output) =>
+ await moddedTraderCustomizationCallbacks.GetCustomizationTraders(url, info, sessionID)
+ )
+ ]
+ ) { }