diff --git a/build/DailymotionScript.js b/build/DailymotionScript.js
index 7429c5b35ca474e2a7c5c5e45f8a8b42259f2617..a93c62ef8337806601feaa5be73e65d02266a669 100644
--- a/build/DailymotionScript.js
+++ b/build/DailymotionScript.js
@@ -1478,6 +1478,7 @@ const state = {
     anonymousUserAuthorizationToken: '',
     anonymousUserAuthorizationTokenExpirationDate: 0,
     commentWebServiceToken: '',
+    channelsCache: {}
 };
 source.setSettings = function (settings) {
     _settings = settings;
@@ -1555,6 +1556,7 @@ source.enable = function (conf, settings, saveStateStr) {
             console.error('Failed to get token');
             throw new ScriptException('Failed to get authentication token');
         }
+        state.channelsCache = {};
         state.anonymousUserAuthorizationToken =
             anonymousUserAuthorizationToken ?? '';
         state.anonymousUserAuthorizationTokenExpirationDate =
@@ -1608,6 +1610,12 @@ source.isChannelUrl = function (url) {
     return REGEX_VIDEO_CHANNEL_URL.test(url);
 };
 source.getChannel = function (url) {
+    if (!state?.channelsCache) {
+        state.channelsCache = {};
+    }
+    if (state.channelsCache[url]) {
+        return state.channelsCache[url];
+    }
     const channel_name = getChannelNameFromUrl(url);
     const channelDetails = executeGqlQuery(http, {
         operationName: 'CHANNEL_QUERY_DESKTOP',
@@ -1617,7 +1625,8 @@ source.getChannel = function (url) {
         },
         query: CHANNEL_QUERY_DESKTOP,
     });
-    return SourceChannelToGrayjayChannel(config.id, channelDetails.data.channel);
+    state.channelsCache[url] = SourceChannelToGrayjayChannel(config.id, channelDetails.data.channel);
+    return state.channelsCache[url];
 };
 source.getChannelContents = function (url, type, order, filters) {
     const page = 1;
diff --git a/src/DailymotionScript.ts b/src/DailymotionScript.ts
index cf178184d9df142bbd305c773b27d738a5417e61..57cd491a3d0c177302edfdd73fa5af4dbc2dd88e 100644
--- a/src/DailymotionScript.ts
+++ b/src/DailymotionScript.ts
@@ -5,6 +5,7 @@ const state = {
   anonymousUserAuthorizationToken: '',
   anonymousUserAuthorizationTokenExpirationDate: 0,
   commentWebServiceToken: '',
+  channelsCache: {} as Record<string, PlatformChannel>
 };
 
 import {
@@ -188,6 +189,8 @@ source.enable = function (conf, settings, saveStateStr) {
       throw new ScriptException('Failed to get authentication token');
     }
 
+    state.channelsCache = {};
+
     state.anonymousUserAuthorizationToken =
       anonymousUserAuthorizationToken ?? '';
     state.anonymousUserAuthorizationTokenExpirationDate =
@@ -259,6 +262,15 @@ source.isChannelUrl = function (url) {
 };
 
 source.getChannel = function (url) {
+
+  if(!state?.channelsCache){
+    state.channelsCache = {};
+  }
+
+  if(state.channelsCache[url]){
+    return state.channelsCache[url];
+  }
+
   const channel_name = getChannelNameFromUrl(url);
 
   const channelDetails = executeGqlQuery(http, {
@@ -270,10 +282,12 @@ source.getChannel = function (url) {
     query: CHANNEL_QUERY_DESKTOP,
   });
 
-  return SourceChannelToGrayjayChannel(
+  state.channelsCache[url] = SourceChannelToGrayjayChannel(
     config.id,
     channelDetails.data.channel as Channel,
   );
+
+  return state.channelsCache[url];
 };
 
 source.getChannelContents = function (url, type, order, filters) {