diff --git a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt
index b3e341d3f..6ba762acb 100644
--- a/app/src/main/java/exh/md/handlers/ApiMangaParser.kt
+++ b/app/src/main/java/exh/md/handlers/ApiMangaParser.kt
@@ -3,6 +3,7 @@ package exh.md.handlers
 import com.elvishew.xlog.XLog
 import eu.kanade.tachiyomi.data.database.DatabaseHelper
 import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.await
 import eu.kanade.tachiyomi.network.parseAs
 import eu.kanade.tachiyomi.source.model.SChapter
 import eu.kanade.tachiyomi.source.model.SManga
@@ -61,11 +62,11 @@ class ApiMangaParser(val client: OkHttpClient, private val lang: String) {
     /**
      * Parse the manga details json into metadata object
      */
-    fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response, coverUrls: List<String>) {
+    suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, input: Response, coverUrls: List<String>) {
         parseIntoMetadata(metadata, input.parseAs<MangaResponse>(MdUtil.jsonParser), coverUrls)
     }
 
-    fun parseIntoMetadata(metadata: MangaDexSearchMetadata, networkApiManga: MangaResponse, coverUrls: List<String>) {
+    suspend fun parseIntoMetadata(metadata: MangaDexSearchMetadata, networkApiManga: MangaResponse, coverUrls: List<String>) {
         with(metadata) {
             try {
                 val networkManga = networkApiManga.data.attributes
@@ -80,16 +81,29 @@ class ApiMangaParser(val client: OkHttpClient, private val lang: String) {
                         // networkManga.mainCover
                     }
 
-                description = MdUtil.cleanDescription(networkManga.description["en"]!!)
+                description = MdUtil.cleanDescription(networkManga.description[lang] ?: networkManga.description["en"]!!)
 
-                val authorIds = networkApiManga.relationships.filter { it.type.equals("author", true) }.distinct()
+                // get authors ignore if they error, artists are labelled as authors currently
+                val authorIds = networkApiManga.relationships.filter { relationship ->
+                    relationship.type.equals("author", true)
+                }.map { relationship -> relationship.id }
+                    .distinct()
+                val artistIds = networkApiManga.relationships.filter { relationship ->
+                    relationship.type.equals("artist", true)
+                }.map { relationship -> relationship.id }
+                    .distinct()
 
-                authors = runCatching {
-                    val ids = authorIds.joinToString("&ids[]=", "?ids[]=")
-                    val response = client.newCall(GET("${MdUtil.authorUrl}$ids")).execute()
-                    val json = response.parseAs<AuthorResponseList>(MdUtil.jsonParser)
-                    json.results.map { MdUtil.cleanString(it.data.attributes.name) }.takeUnless { it.isEmpty() }
-                }.getOrNull()
+                val authorMap = runCatching {
+                    val ids = (authorIds + artistIds).distinct().joinToString("&ids[]=", "?ids[]=")
+                    val response = client.newCall(GET("${MdUtil.authorUrl}$ids")).await()
+                        .parseAs<AuthorResponseList>()
+                    response.results.map {
+                        it.data.id to MdUtil.cleanString(it.data.attributes.name)
+                    }.toMap()
+                }.getOrNull() ?: emptyMap()
+
+                authors = authorIds.mapNotNull { authorMap[it] }.takeUnless { it.isEmpty() }
+                artists = artistIds.mapNotNull { authorMap[it] }.takeUnless { it.isEmpty() }
 
                 langFlag = networkManga.originalLanguage
                 val lastChapter = networkManga.lastChapter.toFloatOrNull()
diff --git a/app/src/main/java/exh/metadata/metadata/MangaDexSearchMetadata.kt b/app/src/main/java/exh/metadata/metadata/MangaDexSearchMetadata.kt
index 540e74dff..ba2bd7871 100644
--- a/app/src/main/java/exh/metadata/metadata/MangaDexSearchMetadata.kt
+++ b/app/src/main/java/exh/metadata/metadata/MangaDexSearchMetadata.kt
@@ -22,6 +22,7 @@ class MangaDexSearchMetadata : RaisedSearchMetadata() {
     var description: String? = null
 
     var authors: List<String>? = null
+    var artists: List<String>? = null
 
     var langFlag: String? = null
 
@@ -52,6 +53,8 @@ class MangaDexSearchMetadata : RaisedSearchMetadata() {
 
         val author = authors?.joinToString()?.let { MdUtil.cleanString(it) }
 
+        val artist = artists?.joinToString()?.let { MdUtil.cleanString(it) }
+
         val status = status
 
         val genres = tagsToGenreList()
@@ -63,6 +66,7 @@ class MangaDexSearchMetadata : RaisedSearchMetadata() {
             title = title ?: manga.title,
             cover = cover ?: manga.cover,
             author = author ?: manga.author,
+            artist = artist ?: manga.artist,
             status = status ?: manga.status,
             genres = genres,
             description = description ?: manga.description
@@ -76,7 +80,7 @@ class MangaDexSearchMetadata : RaisedSearchMetadata() {
         cover?.let { pairs += context.getString(R.string.thumbnail_url) to it }
         title?.let { pairs += context.getString(R.string.title) to it }
         authors?.let { pairs += context.getString(R.string.author) to it.joinToString() }
-        // artist?.let { pairs += context.getString(R.string.artist) to it }
+        artists?.let { pairs += context.getString(R.string.artist) to it.joinToString() }
         langFlag?.let { pairs += context.getString(R.string.language) to it }
         lastChapterNumber?.let { pairs += context.getString(R.string.last_chapter_number) to it.toString() }
         // rating?.let { pairs += context.getString(R.string.average_rating) to it }