Как оптимизировать скорость выполнения запроса?

Работаю с не самым удобным API. При запросе получаю 3800 объектов. Далее, для получения картинок, отправляю ещё по запросу персонально для каждого объекта. В итоге процесс получения объектов занимает меньше секунды, а картинок для них ~ 5 минут. Как ускорить этот процесс?

protected void parse() throws IOException, InterruptedException {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://api.steampay.com/api/products")).build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            ObjectMapper mapper = new ObjectMapper();
            Products products = mapper.readValue(response.body(), Products.class);
            List<Product> productsList = products.getProducts();

            for (Product product : productsList){
                String query = URLEncoder.encode(product.getTitle(), StandardCharsets.UTF_8);
                HttpRequest req = HttpRequest.newBuilder().uri(URI.create("https://steampay.com/api/search?query=" + query)).build();
                HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString());
                Products justProducts = mapper.readValue(res.body(), Products.class);
                List<Product> prods = justProducts.getProducts();

                String imageUrl = null;
                if (prods == null){
                    System.out.println("ERROR: PRODUCTS = NULL!");
                }

                else{
                    if (prods.size() > 0){
                        imageUrl = prods.get(0).getImage();
                    }
                    else{
                        String title = StringEscapeUtils.unescapeJava(product.getTitle());
                        String encodingErrorQuery = URLEncoder.encode(title, StandardCharsets.UTF_8);
                        HttpRequest encodingErrorRequest = HttpRequest.newBuilder().uri(URI.create("https://steampay.com/api/search?query=" + encodingErrorQuery)).build();
                        HttpResponse<String> encodingErrorResponse = client.send(encodingErrorRequest, HttpResponse.BodyHandlers.ofString());
                        Products encodingErrorProducts = mapper.readValue(encodingErrorResponse.body(), Products.class);
                        List<Product> encodingErrorProds = encodingErrorProducts.getProducts();
                        if (encodingErrorProds == null){
                            System.out.println("ERROR: PRODUCTS = NULL!");
                        }
                        else {
                            if (encodingErrorProds.size() > 0){
                                imageUrl = encodingErrorProds.get(0).getImage();
                            }
                            else {
                                System.out.println("ERROR!");
                            }
                        }
                    }

                    System.out.println(product.getTitle());
                    System.out.println(imageUrl);
                    System.out.println(product.getPrices().getRub() + "₽");
                    System.out.println("-------------------------------------------");
                }
            }
        } 

Ответы (0 шт):