diff --git a/Sources/XXClient/Models/UDSearchResult.swift b/Sources/XXClient/Models/UDSearchResult.swift
index 26e6bf4dadca56b85ed038b2a1176da44b82da50..84bdcccd8fb354cc2a6aa81368d4eae5f5efc961 100644
--- a/Sources/XXClient/Models/UDSearchResult.swift
+++ b/Sources/XXClient/Models/UDSearchResult.swift
@@ -20,7 +20,8 @@ extension UDSearchResult: Codable {
   }
 
   public static func decode(_ data: Data) throws -> Self {
-    try JSONDecoder().decode(Self.self, from: data)
+    let data = convertBigIntsToStrings(jsonData: data)
+    return try JSONDecoder().decode(Self.self, from: data)
   }
 
   public func encode() throws -> Data {
@@ -30,10 +31,26 @@ extension UDSearchResult: Codable {
 
 extension Array where Element == UDSearchResult {
   public static func decode(_ data: Data) throws -> Self {
-    try JSONDecoder().decode(Self.self, from: data)
+    let data = convertBigIntsToStrings(jsonData: data)
+    return try JSONDecoder().decode(Self.self, from: data)
   }
 
   public func encode() throws -> Data {
     try JSONEncoder().encode(self)
   }
 }
+
+private func convertBigIntsToStrings(jsonData input: Data) -> Data {
+  guard var string = String(data: input, encoding: .utf8) else {
+    return input
+  }
+  string = string.replacingOccurrences(
+    of: #":\s*([0-9]{19,})\s*,"#,
+    with: #": "$1","#,
+    options: [.regularExpression]
+  )
+  guard let output = string.data(using: .utf8) else {
+    return input
+  }
+  return output
+}
diff --git a/Tests/XXClientTests/Models/UDSearchResultTests.swift b/Tests/XXClientTests/Models/UDSearchResultTests.swift
index 3037e773a8f2f1dfbc726eb4d9a872f95a2c5e0e..1ac94da20704d7341b862d9155c6af319da244f4 100644
--- a/Tests/XXClientTests/Models/UDSearchResultTests.swift
+++ b/Tests/XXClientTests/Models/UDSearchResultTests.swift
@@ -42,4 +42,30 @@ final class UDSearchResultTests: XCTestCase {
 
     XCTAssertNoDifference(decodedModels, models)
   }
+
+  func testEncodeWithBigInt() throws {
+    let idB64 = "pYIpRwPy+FnOkl5tndkG8RC93W/t5b1lszqPpMDynlUD"
+    let facts: [Fact] = [
+      Fact(fact: "carlos_arimateias", type: 0),
+    ]
+    let jsonString = """
+    {
+      "ID": "\(idB64)",
+      "DhPubKey": {
+        "Value": 1759426033802606996617132861414734059978289057332806031357800676138355264622676606691435603603751978195460163638145821347601916259127578968570412642641025630452893097179266022832268525346700655861033031712000288680395716922501450233258587788020541937373196899001184700899008948530359980753630443486308876999029238453979779103124291315202352475056237021681172884599194016245219278368648568458514708567045834427853469072638665888791358582182353417065794210125797368093469194927663862565508608719835557592421245749381164023134450699040591219966988201315627676532245052123725278573237006510683695959381015415110970848376498637637944431576313526294020390694483472829278364602405292767170719547347485307956614210210673321959886410245334772057212077704024337636501108566655549055129066343309591274727538343075929837698653965640646190405582788894021694347212874155979958144038307500444865955516612526623220973497735316081265793063949,
+        "Fingerprint": 15989433043166758754
+      },
+      "OwnershipProof": null,
+      "Facts": \(String(data: try! facts.encode(), encoding: .utf8)!)
+    }
+    """
+    let jsonData = jsonString.data(using: .utf8)!
+
+    let decodedModel = try UDSearchResult.decode(jsonData)
+
+    XCTAssertNoDifference(decodedModel, UDSearchResult(
+      id: Data(base64Encoded: idB64)!,
+      facts: facts
+    ))
+  }
 }