Yatmo.Client
1.0.0
dotnet add package Yatmo.Client --version 1.0.0
NuGet\Install-Package Yatmo.Client -Version 1.0.0
<PackageReference Include="Yatmo.Client" Version="1.0.0" />
<PackageVersion Include="Yatmo.Client" Version="1.0.0" />
<PackageReference Include="Yatmo.Client" />
paket add Yatmo.Client --version 1.0.0
#r "nuget: Yatmo.Client, 1.0.0"
#:package Yatmo.Client@1.0.0
#addin nuget:?package=Yatmo.Client&version=1.0.0
#tool nuget:?package=Yatmo.Client&version=1.0.0
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
- Get a Yatmo licence key at yatmo.com and use the backend key on the server (keys explained).
dotnet add package Yatmo.Client.- Register one
YatmoClientper country as a singleton, callGetSummaryTextAsyncandGetSummaryAsyncfor each property, cache the answers (a neighbourhood rarely changes;GetSummaryTextRawAsyncandGetSummaryRawAsyncreturnJsonElements 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
Links
- Yatmo and its documentation
- Same client for other stacks: JavaScript, PHP, Python
- WordPress plugin, Odoo module, Drupal module, MCP server for AI assistants
- More examples
MIT licence. Yatmo is a paid service for real estate portals, agency networks and developers; a licence key is required.
| Product | Versions 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. |
-
.NETStandard 2.0
- System.Net.Http (>= 4.3.4)
- System.Text.Json (>= 8.0.5)
-
net8.0
- No dependencies.
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.