Address Enrichment API
Geocoding, neighborhood hierarchy, and nearby POIs in a single call.
Pass an address. Receive coordinates, neighborhood hierarchy, and nearby places in a single response. Everything your listing pages need to become AI-visible, in one API call.
How It Works
Three steps to a fully enriched listing.
No stitching together multiple services. One endpoint handles geocoding, neighborhood resolution, and POI lookup in a single call.
Send the address
Pass any raw address string, a postal code, or a coordinate pair to GET /v1/geoenrich. No pre-processing or address normalisation required.
MapAtlas resolves the full geo layer
The API geocodes the address to rooftop precision, resolves the neighborhood hierarchy, and scans 1B+ indexed POIs within your chosen radius, returning ratings, transit lines, opening hours, and travel times.
Inject into your JSON-LD and serve
Every field in the response maps directly to a schema.org property. Drop coordinates into GeoCoordinates, neighborhood into containedInPlace, and nearby places into amenityFeature. No transformation needed.
One call. Complete location intelligence.
Most listing databases store what humans enter: address, price, bedrooms. They were never designed to supply machine-readable geographic context. GeoEnrich API bridges that gap in a single request, returning coordinates, neighborhood analytics, real-time transit, ratings, travel times, and more.
- Pass the raw address string. No pre-processing needed.
- Receive coordinates, full neighborhood hierarchy, and profile scores.
- Get nearby places with ratings, opening hours, and live transit data.
- Every field maps directly to a schema.org property.
GET https://api.mapatlas.eu/v1/geoenrich
?address=Kollwitzstraße 65, Berlin
&radius=600
&categories=transit,education,leisure,supermarket
&include=neighborhoodProfile,realtime,busyness
&key=YOUR_API_KEY{
"address": {
"street": "Kollwitzstraße 65",
"postalCode": "10405",
"city": "Berlin",
"country": "DE"
},
"coordinates": {
"lat": 52.53841,
"lng": 13.41327,
"accuracy": "rooftop",
"elevation": 42
},
"adminHierarchy": {
"subDistrict": "Kollwitzkiez",
"neighborhood": "Prenzlauer Berg",
"district": "Pankow",
"city": "Berlin",
"state": "Berlin",
"country": "DE",
"postalCode": "10405"
},
"neighborhoodProfile": {
"tags": ["family-friendly", "trendy", "cycling-culture", "cafe-dense"],
"walkScore": 94,
"bikeScore": 91,
"transitScore": 98,
"noiseLevel": "moderate",
"airQualityIndex": 38,
"greenSpaceCoverage": "18%"
},
"dataTimestamp": "2026-03-01T00:00:00Z",
"radius": 600,
"poiCount": 1328,
"nearby": [
{
"name": "Eberswalder Str.",
"type": "transit",
"subtype": "metro",
"distance": 140,
"bearing": "NW",
"lines": ["U2"],
"destinations": ["Pankow", "Ruhleben"],
"frequency": "every 5 min (peak)",
"accessibility": "step-free",
"realtime": {
"nextDeparture": "in 3 min",
"direction": "Pankow",
"platform": "platform 1"
},
"travel": {
"walking": { "duration": "2 min", "distance": "140m" },
"cycling": { "duration": "1 min", "distance": "150m" },
"driving": { "duration": "1 min", "distance": "180m" }
}
},
{
"name": "Bus 142 / N2 at Eberswalder Str.",
"type": "transit",
"subtype": "bus",
"distance": 145,
"bearing": "NW",
"lines": ["142", "N2"],
"destinations": ["Ostbahnhof", "Zoologischer Garten"],
"frequency": "every 10 min (day) / 30 min (night)",
"realtime": {
"nextDeparture": "in 7 min",
"direction": "Ostbahnhof"
},
"travel": {
"walking": { "duration": "2 min", "distance": "145m" },
"cycling": { "duration": "1 min", "distance": "155m" },
"driving": { "duration": "1 min", "distance": "180m" }
}
},
{
"name": "Kollwitzplatz",
"type": "leisure",
"subtype": "park",
"distance": 210,
"bearing": "SE",
"openingHours": "24/7",
"size": "1.2 ha",
"amenities": ["playground", "dog-friendly", "benches", "fountain", "market-tue-sat"],
"rating": 4.6,
"reviews": 1842,
"busyness": {
"now": "quiet",
"peak": "Sat 11:00-14:00"
},
"travel": {
"walking": { "duration": "3 min", "distance": "210m" },
"cycling": { "duration": "1 min", "distance": "225m" },
"driving": { "duration": "1 min", "distance": "350m" }
}
},
{
"name": "Grundschule am Kollwitzplatz",
"type": "education",
"subtype": "primary_school",
"distance": 380,
"bearing": "E",
"ageRange": "6-12",
"schoolType":"public",
"capacity": 340,
"languages": ["German", "English"],
"rating": 4.2,
"reviews": 156,
"travel": {
"walking": { "duration": "5 min", "distance": "380m" },
"cycling": { "duration": "2 min", "distance": "410m" },
"driving": { "duration": "2 min", "distance": "520m" }
}
},
{
"name": "REWE Kollwitzstraße",
"type": "supermarket",
"subtype": "grocery",
"distance": 490,
"bearing": "N",
"openingHours": {
"mon-sat": "07:00-22:00",
"sun": "08:00-22:00"
},
"priceLevel": "$$",
"deliveryAvailable": true,
"paymentMethods": ["card", "cash", "contactless"],
"rating": 4.1,
"reviews": 892,
"busyness": {
"now": "busy",
"peak": "Mon-Fri 17:00-19:00"
},
"travel": {
"walking": { "duration": "6 min", "distance": "490m" },
"cycling": { "duration": "2 min", "distance": "510m" },
"driving": { "duration": "2 min", "distance": "650m" }
}
}
// ... 1,323 more across 18 categories
]
}Data at a scale and speed never available before
1B+
POIs indexed globally
Transit, retail, education & more
180+
Countries covered
Consistent schema everywhere
<200ms
Avg. API response
At any scale, any location
18
Data categories
Per single API call
Every nearby place, verified fresh.
One call returns every relevant place within your chosen radius, organized by category. Each dataset carries a dataTimestamp so AI engines and search crawlers know exactly how current your location data is.
- Transit stops, parks, schools, restaurants, all in one response
- Configurable radius from 100m to 5km
- Monthly refresh cycle with verified timestamps
- AI engines cite fresh, timestamped data over stale listings
Kollwitzstraße 65
Prenzlauer Berg · Berlin · DE
Nearby within 600m
Data verified · March 2026
Monthly refresh · dataTimestamp: 2026-03-01
Coordinates. Neighborhood profile. Nearby places.
Every field in the response maps directly to a schema.org property. Coordinates, neighborhood hierarchy, walkScore, transit lines, ratings, opening hours, travel times. No transformation needed.
Precise Coordinates
Rooftop-precision lat/lng with elevation. Powers GeoCoordinates schema directly.
Neighborhood Intelligence
Full hierarchy plus walkScore, bikeScore, transitScore, noise level, air quality index, and character tags. Powers containedInPlace and neighborhood context.
Rich Nearby Places
1,328+ POIs with ratings, opening hours, transit lines, live departures, travel times, and busyness data. Powers amenityFeature schema.
Simple. Predictable. One endpoint.
No complex setup. No stitching together multiple calls. Pass an address, receive the complete geo layer needed to power schema.org markup on every listing page.
- Single endpoint handles geocoding and POI lookup together
- Optional radius and category filters for precise control
- Response maps directly to JSON-LD with no transformation needed
- Run at build time for zero ongoing per-request cost
{
"@context": "https://schema.org",
"@type": "Apartment",
"geo": {
"@type": "GeoCoordinates",
"latitude": 52.5384,
"longitude": 13.4132
},
"containedInPlace": {
"@type": "Place",
"name": "Prenzlauer Berg",
"containedInPlace": { "@type": "City", "name": "Berlin" }
},
"amenityFeature": [
{ "@type": "LocationFeatureSpecification",
"name": "Eberswalder Str.", "value": true,
"description": "140m nearby" }
],
"dateModified": "2026-03-01T00:00:00Z"
}One API call. Every listing type.
The GeoEnrich API works for any listing: vacation rentals, real estate, hotels, or experiences. The API call is identical. Only the schema type differs. See how listing portals use this at scale.
Vacation Rentals
Make individual rental pages appear in AI queries like 'beachfront villa near Faro with restaurants nearby.'
Real Estate
Surface listings for queries like 'apartments in Prenzlauer Berg close to the metro' without manual data entry.
Hotels
Win AI citations for queries like 'boutique hotel in the Marais, walkable to museums.'
Experiences
Get cited for queries like 'cooking class in Barcelona near the Gothic Quarter.'
Everything in One Response
One endpoint returns the complete geo data layer your listing pages need to become AI-visible.
Precise Coordinates
Four decimal place accuracy. Populates GeoCoordinates schema on every listing page so AI engines can place it in geographic space.
Neighborhood Hierarchy
Neighborhood, district, city, and country resolved from the address. Powers the containedInPlace chain for area-level AI retrieval.
Nearby Places
Transit, education, leisure, and healthcare within a configurable radius. Each place returned with distance and walk time for amenityFeature schema.
Monthly Data Refresh
Every response includes a dataTimestamp updated monthly. Map it to dateModified in your JSON-LD so AI engines see verified, current data.
Built for Bulk
Designed for databases of 50,000 listings or more. Run the enrichment job once at build time, cache the geo layer, and serve at zero per-request cost.
EU-Hosted, GDPR-Compliant
Fully EU-hosted with GDPR compliance documentation and standard contractual clauses. No data residency risk for European listing portals.
Technical Specifications
Endpoint
Parameters
Response Fields
Ready to Get Started?
Start building with MapAtlas today. Sign up for free and get instant access to all our mapping APIs with generous free tier limits.
GeoEnrich API: common questions
Everything you need to know before enriching your first listing.
GeoEnrich API: common questions
Everything you need to know before enriching your first listing.