@NonNull
    public static Collection<ImmutablePair<Float, Float>> getNeededDifficultyTerrainCombisFor81Matrix() {
        // Request URI: see code below
        // Answer is a json string array, something like: ["1-4.5","2.5-4.5","3-5","4.5-5","5-3.5","5-4","5-4.5"]

        final String[] rawCombis = apiProxyReq().uri("/web/v1/statistics/difficultyterrainmatrix/needed")
                .requestJson(String[].class).blockingGet();
        if (rawCombis == null || rawCombis.length == 0) {
            return Collections.emptyList();
        }
        final List<ImmutablePair<Float, Float>> result = new ArrayList<>(rawCombis.length);
        try {
            for (String rawCombi : rawCombis) {
                final String[] parts = rawCombi.split("-");
                final float difficulty = Float.parseFloat(parts[0]);
                final float terrain = Float.parseFloat((parts[1]));
                result.add(new ImmutablePair<>(difficulty, terrain));
            }
        } catch (Exception ex) {
            Log.w("Problems parsing as list of dt-combis: " + Arrays.asList(rawCombis));
        }
        return result;
    }
For BASIC members, PREMIUM caches don't contain coordinates. This helper methods guesses distances for those caches
main/src/main/java/cgeo/geocaching/connector/gc/GCWebAPI.java