diff --git a/R/textMetadata.R b/R/textMetadata.R
index 834fa11..bc07be0 100644
--- a/R/textMetadata.R
+++ b/R/textMetadata.R
@@ -18,6 +18,8 @@
 #'
 #' @importFrom urltools url_encode
 #' @importFrom dplyr bind_rows relocate mutate
+#' @importFrom tibble as_tibble
+#' @importFrom tidyr pivot_wider
 #'
 #' @examples
 #' \dontrun{
@@ -41,14 +43,25 @@
     if(is.null(res)) {
       res <- tibble(errors="API request failed")
     } else {
-      res <- lapply(res, function(x) paste0(x, collapse = "\\t")) # flatten list
-      res <- as_tibble(res) %>%
-        head(n=1) %>%
-        mutate(
-          requestUrl = url,
-          textSigle = textSigle,
-          webUIRequestUrl = paste0(kco@KorAPUrl, sprintf('?q=<base/s=t>&cq=textSigle+%%3D+"%s"', url_encode(enc2utf8(textSigle))))) %>%
+      if ("document" %in% names(res) & "fields" %in% names(res$document)) {
+        res <- as_tibble(res$document$fields) %>%
+          select(key, value) %>%
+          tidyr::pivot_wider(names_from = key, values_from = value, names_repair = "unique") %>%
+          mutate(
+            textSigle = as.character(textSigle),
+            requestUrl = url,
+            webUIRequestUrl = paste0(kco@KorAPUrl, sprintf('?q=<base/s=t>&cq=textSigle+%%3D+"%s"', url_encode(enc2utf8(textSigle))))) %>%
         relocate(textSigle)
+      } else {
+        res <- lapply(res, function(x) paste0(x, collapse = "\\t")) # flatten list
+        res <- as_tibble(res) %>%
+          head(n=1) %>%
+          mutate(
+            requestUrl = url,
+            textSigle = textSigle,
+            webUIRequestUrl = paste0(kco@KorAPUrl, sprintf('?q=<base/s=t>&cq=textSigle+%%3D+"%s"', url_encode(enc2utf8(textSigle))))) %>%
+          relocate(textSigle)
+      }
     }
     res
   }
