             }
 
             group.enter()
-            networkManager.loadData(from: pageUrl) { result in
-                guard case let .success(pageData) = result else {
-                    group.leave()
-                    return
-                }
-
-                let html = String(decoding: pageData, as: UTF8.self)
-                let fullRange = NSRange(html.startIndex..<html.endIndex, in: html)
-                guard let match = MasStoreSearch.versionExpression?.firstMatch(in: html, range: fullRange),
-                    let range = Range(match.range(at: 1), in: html),
-                    let pageVersion = Version(tolerant: html[range])
-                else {
-                    group.leave()
-                    return
-                }
-
-                if pageVersion > searchVersion {
+            scrapeVersionFromPage(pageUrl) { pageVersion in
+                if let pageVersion = pageVersion, pageVersion > searchVersion {
                     results.results[index].version = pageVersion.description
                 }
 


        return results
    }
}

            throw MASError.jsonParsing(error: error as NSError)
        }

        let group = DispatchGroup()
        for index in results.results.indices {
            let result = results.results[index]
