diff --git a/src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx b/src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx
index be28bcdd044d53098e45c8ed29ad87c958d445b6..dd90e7d2739b3749bcef54b53bf28775fc44b73c 100644
--- a/src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx
+++ b/src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx
@@ -1,6 +1,6 @@
 import { ChangeEvent, useCallback, useEffect, useState } from 'react';
 import lensIcon from '@/assets/vectors/icons/lens.svg';
-import { useDebounce } from '@/hooks/useDebounce';
+import { useDebounce } from 'use-debounce';
 import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
 import { getPublications } from '@/redux/publications/publications.thunks';
 import { useAppSelector } from '@/redux/hooks/useAppSelector';
@@ -14,11 +14,13 @@ import Image from 'next/image';
 import { setPublicationSearchValue } from '@/redux/publications/publications.slice';
 import { DEFAULT_PAGE_SIZE } from '../PublicationsTable/PublicationsTable.constants';
 
+const DEFAULT_DELAY = 500;
+
 export const PublicationsSearch = (): JSX.Element => {
   const dispatch = useAppDispatch();
   const isLoading = useAppSelector(isLoadingSelector);
   const [value, setValue] = useState('');
-  const debouncedValue = useDebounce<string>(value);
+  const [debouncedValue] = useDebounce<string>(value, DEFAULT_DELAY);
   const sortColumn = useAppSelector(sortColumnSelector);
   const sortOrder = useAppSelector(sortOrderSelector);
   const selectedId = useAppSelector(selectedModelIdSelector);
diff --git a/src/hooks/useDebounce.ts b/src/hooks/useDebounce.ts
deleted file mode 100644
index 9742ab926a92a1944252b5b44e6426542bcb74aa..0000000000000000000000000000000000000000
--- a/src/hooks/useDebounce.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import { useEffect, useState } from 'react';
-
-const DEFAULT_DELAY = 500;
-
-export const useDebounce = <T>(value: T, delay?: number): T => {
-  const [debouncedValue, setDebouncedValue] = useState<T>(value);
-
-  useEffect(() => {
-    const timer = setTimeout(() => setDebouncedValue(value), delay || DEFAULT_DELAY);
-
-    return () => {
-      clearTimeout(timer);
-    };
-  }, [value, delay]);
-
-  return debouncedValue;
-};
diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts
index 5e85287940afcba80abf846b982fc8f93f8b0f5e..7dd6cac479e541a068318ab6fc143d683f371026 100644
--- a/src/redux/apiPath.ts
+++ b/src/redux/apiPath.ts
@@ -3,21 +3,19 @@ import { PerfectSearchParams } from '@/types/search';
 import { Point } from '@/types/map';
 import { GetPublicationsParams, PublicationsQueryParams } from './publications/publications.types';
 
-const getPublicationsURLSearchParams = ({
-  page,
-  sortColumn,
-  sortOrder,
-  level,
-  length,
-  search,
-}: PublicationsQueryParams): URLSearchParams => {
+const getPublicationsURLSearchParams = (
+  providedParams: PublicationsQueryParams,
+): URLSearchParams => {
   const params = new URLSearchParams();
-  if (page) params.append('page', page.toString());
-  if (sortColumn) params.append('sortColumn', sortColumn);
-  if (sortOrder) params.append('sortOrder', sortOrder);
-  if (level) params.append('level', level.toString());
-  if (length) params.append('length', length.toString());
-  if (search) params.append('search', search);
+
+  const validProvidedParamsArray = Object.entries(providedParams).filter(([, value]) =>
+    Boolean(value),
+  );
+
+  validProvidedParamsArray.forEach(([key, value]) => {
+    params.append(key, value.toString());
+  });
+
   return params;
 };