Yatmo.Client 1.0.0

dotnet add package Yatmo.Client --version 1.0.0
                    
NuGet\Install-Package Yatmo.Client -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Yatmo.Client" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Yatmo.Client" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Yatmo.Client" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Yatmo.Client --version 1.0.0
                    
#r "nuget: Yatmo.Client, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Yatmo.Client@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Yatmo.Client&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Yatmo.Client&version=1.0.0
                    
Install as a Cake Tool

Yatmo.Client

Add real estate maps, points of interest and neighbourhood data to .NET applications. Yatmo.Client is the official .NET client for the Yatmo API: the written neighbourhood text of a property (rendered as HTML on the server, so search engines index it), the nearest schools, nurseries, supermarkets and public transport with real travel times, scores, listing enrichment, isochrones, routes, geocoding and static map images, in 25 countries and 23 languages. ASP.NET Core, Blazor, Azure Functions, console apps; .NET Standard 2.0 and .NET 8, async, HttpClient based, thread-safe.

dotnet add package Yatmo.Client
using Yatmo;

var yatmo = new YatmoClient("your_backend_key", "BE", "FR");

// The neighbourhood text as HTML, to write into the property page.
var text = await yatmo.GetSummaryTextAsync(50.8461, 4.3664);
Console.WriteLine(YatmoTextRenderer.Html(text));
// <div class="yatmo-text"><h3>Commerces près de la Rue de la Loi</h3><p>Un <strong>Carrefour</strong> à 3 minutes...

// The nearest places by category with walking times.
var summary = await yatmo.GetSummaryAsync(50.8461, 4.3664);
foreach (var sub in summary.SubCategories())
{
    var place = sub.Places.FirstOrDefault();
    Console.WriteLine($"{sub.Label}: {place?.Name} {place?.Travel(TravelMode.Walking)?.TravelTimeShortLabel}");
}

<p align="center"> <img src="https://raw.githubusercontent.com/Yatmo/.github/main/profile/img/neighbourhood-text.png" width="720" alt="The Yatmo neighbourhood text on a property page"> </p>

Install in 5 minutes

  1. Get a Yatmo licence key at yatmo.com and use the backend key on the server (keys explained).
  2. dotnet add package Yatmo.Client.
  3. Register one YatmoClient per country as a singleton, call GetSummaryTextAsync and GetSummaryAsync for each property, cache the answers (a neighbourhood rarely changes; GetSummaryTextRawAsync and GetSummaryRawAsync return JsonElements for that) and write the HTML into the page.

The interactive map itself is an iframe with your frontend key, no C# needed: iframe plugin.

ASP.NET Core

// Program.cs
builder.Services.AddHttpClient("yatmo", c => c.Timeout = TimeSpan.FromSeconds(15));
builder.Services.AddSingleton(sp => new YatmoClient(
    builder.Configuration["Yatmo:Key"]!, "BE", "FR",
    sp.GetRequiredService<IHttpClientFactory>().CreateClient("yatmo")));

// A Razor page or controller
public async Task OnGetAsync(int id)
{
    Listing = await _db.Listings.FindAsync(id);
    var text = await _cache.GetOrCreateAsync($"yatmo-text-{Listing.Latitude:F6}-{Listing.Longitude:F6}", async entry =>
    {
        entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromDays(30);
        return await _yatmo.GetSummaryTextRawAsync(Listing.Latitude, Listing.Longitude);
    });
    Neighbourhood = YatmoTextRenderer.Html(SummaryText.FromWire(text, CultureInfo.CurrentUICulture.TwoLetterISOLanguageName));
}

In the view: @Html.Raw(Model.Neighbourhood) below the map iframe.

Client

Method Endpoint Returns
GetSummaryAsync(lat, lng) /summary Summary: places by category with distances and travel times (walking, bicycling, driving, transit), closest cities, reverse-geocoded place
GetSummaryTextAsync(lat, lng, language) /Summary/text SummaryText in one language, paragraphs with [STRONG] markers; see YatmoTextRenderer
GetSummaryTextRawAsync, GetSummaryRawAsync The API answers as JsonElement, to cache; rebuild with SummaryText.FromWire(element, language) and new Summary(element)
GetScoresAsync(lat, lng) /scores Scores: one 0 to 10 score per category
GetEnrichmentAsync(lat, lng) /enrichment Ready-made listing attributes (nearest place per category, four travel modes), as JsonElement
GetPointsAsync(south, west, north, east, poiTypeIds) /points Poi list inside a bounding box
GetSimplifiedCategoriesAsync() /SimplifiedCategories CategoryGroup list (name, POI type ids)
GetIsochronesAsync(lat, lng, mode) /Isochrone/GetMultipleTimes 5, 10 and 20 minute areas, GeoJSON geometries
GetIsochroneAsync(lat, lng, mode, seconds) /isochrone One area, GeoJSON geometry
GetRouteAsync(fromLat, fromLng, toLat, toLng, mode) /route Route with paths (distance, duration, LineString)
GeocodeAsync(address) /geolocation Place list, best match first
GeocodeNearAsync(lat, lng, query) /Geolocation/GetClose Address autocomplete around a point
GetStaticMapAsync(lat, lng, options) /image JPEG bytes; StaticMapUrl() gives the URL (StaticMapOptions: colour, size, style, 3D, big icons, custom marker)

Errors are typed: YatmoBadRequestException (400, position outside the country), YatmoAuthenticationException (401), YatmoForbiddenException (403, country or endpoint not in the licence), YatmoQuotaException (429), YatmoTransportException (unreachable), all subclasses of YatmoException with a Status.

Rendering the text

YatmoTextRenderer.Html(text, new TextRenderOptions { Heading = "h3", Titles = "street-city", Paragraphs = null, Strong = true, CssClass = "" });
YatmoTextRenderer.Markdown(text, options);
YatmoTextRenderer.Plain(text, options);

Titles: the first heading names the street and the second the city ("street-city"), the city only ("city", for discreet listings) or neither ("generic"). Paragraphs keeps some icon ids only among education, shopping, publictransports, transports, tourism, cities.

Tests

dotnet test --filter "TestCategory!=Manual"            # hermetic, the API is faked
YATMO_LIVE_KEY=your_backend_key dotnet test --filter "TestCategory=Manual"   # one real call per endpoint

MIT licence. Yatmo is a paid service for real estate portals, agency networks and developers; a licence key is required.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 50 10/2/2026

First release.