Official German demographics, made effortless.
Fresh, fine-grained, address-level demographic & socioeconomic profiles as a clean JSON API. Self-serve, GDPR-safe, production-ready — no enterprise contract, no sales call.
See a sample response$ curl
GET /geocode/address/Kastanienallee 12, 10435?fields=census&year=2026
"results": [{
"location": { "latitude": 52.539174, "longitude": 13.410073 },
"formattedAddress": "Kastanienallee 12, 10435 Berlin, Germany",
...
"fields": {
"census": {
"population": 156,
"datasetYear": 2026,
"effectiveQuarter": 1,
"age10To19": 8,
"age20To29": 12,
...
"single": 120,
"married": 26,
...
"averageHouseholdSize": 1.69
}}}]Built on official statistics from the Statistisches Bundesamt (Destatis) — sources and methodology fully documented.
- Official source
- GDPR-safe by design
- ≤ 6-month freshness
- Self-serve · no sales call
Fresh × granular — no trade-off.
Germany's official data forces a choice: the micro-census is fresh but only state-level; the full census is address-level but nearly a decade old. We break the trade-off — our algorithms interpolate fresh micro-census figures onto fine-grained boundaries, so a lookup is both current and address-level.
Every value is calculated, not guessed: the interpolation model, its inputs, and its vintage are documented per field — and cells under 5 people are suppressed at source.
See the methodology →Raw Destatis
- Rate-limited GENESIS calls
- AGS regions ≠ your addresses
- Bulk CSV to wrangle
- Manual N:M boundary joins
rastr
- One REST call, JSON back
- Geocoded to the address
- Pre-joined, ready to use
- Concurrency you can ship on
Pre-joined, geocoded profiles. Skip the pipeline.
The boundary interpolation every developer otherwise writes by hand is already done. Send an address, get a merged demographic & socioeconomic profile as clean JSON — not a raw dump, not a rate-limited feed.
Explore the API referenceOne call, from address to answer.
No pipeline to build and no boundaries to reconcile. You send an address; we handle geocoding, interpolation, and the merge — and return a profile you can act on.
Read the quickstart- 1
Send an address
GET /api/geocode/address/{address}
- 2
We geocode it
Resolved to coordinates and the enclosing boundaries.
- 3
Algorithms interpolate
Fresh micro-census is calculated onto fine-grained cells — with <5-person suppression.
- 4
Get a merged JSON profile
One response, production-ready, sources attached.
One address. A complete neighborhood profile.
Every response merges demographic and socioeconomic fields into a single object — quantified, sourced, and dated.
Production-ready JSON
A clean REST response you can call concurrently and ship on — not a bulk export or a rate-limited GENESIS query. Stable schema, versioned endpoints.
Geocoded & pre-joined
Addresses resolve to coordinates and to the demographic cells around them. The AGS-to-boundary interpolation is calculated for you — no hand-joining mismatched regions.
GDPR-safe by design
Cells with fewer than 5 people are suppressed at source, so privacy compliance is handled before the data reaches you — with the suppression flagged in the response.
GET /api/geocode/address · 10435 Berlin
Median age
38.4
Household
1.8
Purch. power
112.6
Age distribution
| population_density | 11,240 /km² |
| unemployment_rate | 6.1 % |
| gdpr_suppressed | false |
Illustrative sample — this endpoint is coming soon.
Demographic profiles aren't live yet — tell us you want early access.
Request early accessWe'll email you when demographic profiles go live.
Get a key, call the endpoint, ship.
Authenticate with a bearer token and you're live. The same request works from the command line or any language — no SDK required.
Browse full reference# fresh, address-level demographics in one callcurl -X GET "https://api.locationreport.com/geocode/address/Kastanienallee%2012%2C%2010435%20Berlin?fields=census" \ -H "X-Api-Key: $API_KEY"import requests # address-level demographics in one callresp = requests.get( f"https://api.locationreport.com/geocode/address/Kastanienallee 12, 10435 Berlin", params={"fields": "census"}, headers={"X-Api-Key": API_KEY},)print(resp.json())// address-level demographics in one callconst res = await fetch( `https://api.locationreport.com/geocode/address/${encodeURIComponent("Kastanienallee 12, 10435 Berlin")}?fields=census`, { headers: { "X-Api-Key": API_KEY } },);const data = await res.json();console.log(data);Freshness measured in months, not the ten-year census gap — and every figure traces back to an official Destatis source.
≤ 6 mo
data freshness, per field
Address
granularity in v1
< 5
person cells suppressed
Transparent pricing. Start today.
No contract, no sales call. Pay for what you look up, or go unlimited.
Free
0 €/ day
600 lookups per day. No credit card needed.
One-time purchase
2.49 €/ 1,000 lookups
Instant key. Only pay for the calls you make.
Unlimited
99,00 €/ month
Unmetered lookups. Cancel anytime.