API Documentation

Free, open JSON API for European city data. No authentication required. Currently live: Tübingen.

Introduction

Localinar provides structured city data for European cities as static JSON files. All endpoints return JSON, require no authentication, and are served via Cloudflare with permissive CORS headers.

Key facts: All data is bilingual (German/English). Most fields include both name/nameEn variants. Event budget figures are unofficial estimates. Election data comes from Statistisches Landesamt Baden-Württemberg. License: CC BY 4.0.
Quick start
# List all cities curl https://localinar.com/api/v1/cities.json # Get Tübingen events curl https://localinar.com/tuebingen/api/events.json # Get election results curl https://localinar.com/tuebingen/api/elections.json

Base URL & Conventions

Global endpoints live under /api/v1/. City-specific endpoints use /{city}/api/.

URL patterns
Global endpoints: https://localinar.com/api/v1/{endpoint}.json City endpoints: https://localinar.com/{city}/api/{endpoint}.json Currently available cities: tuebingen
Common response fields
FieldTypeDescription
versionstringAPI version (currently "1.0")
updatedstringLast update date (YYYY-MM-DD)
countnumberNumber of records in the response
dataarrayMain data array (events, entities, etc.)

GET

Cities

/api/v1/cities.jsonclick to copy

List all Localinar cities with status, population, and metadata. Use this to discover available cities and their API endpoints.

10 cities no auth
Response fields
FieldTypeDescription
idstringCity identifier used in URL paths
namestringCity display name
countrystring2-letter country code (DE, NL, BE, ...)
regionstringRegion or state name
statusstringlive or coming_soon
populationnumberCity population
urlstringPath to city page (live cities only)
apistringPath to city API index (live cities only)
Example response
{ "version": "1.0", "cities": [ { "id": "tuebingen", "name": "Tübingen", "country": "DE", "region": "Baden-Württemberg", "status": "live", "population": 91506, "url": "/tuebingen/", "api": "/tuebingen/api/index.json" }, { "id": "freiburg", "name": "Freiburg", "status": "coming_soon", ... } ] }
GET

Premium Tiers

/api/v1/premium.jsonclick to copy

Sponsor program details with pricing, features per tier, and transparency program information.

3 tiers EUR pricing
Example response
{ "tiers": [ { "id": "local", "name": { "de": "Lokales Geschäft", "en": "Local Business" }, "price_monthly": 10, "features": { "de": [...], "en": [...] } }, ... ], "transparency": { "fields": 12, "scoring": "A (8+) → B (5-7) → C (3-4) → D (1-2)" } }

GET

City Metadata

/{city}/api/meta.jsonclick to copy

City stats, coordinates, timezone, and a directory of all available API endpoints for the city.

Response fields
FieldTypeDescription
city.idstringCity identifier
city.namestringCity name
city.populationnumberPopulation
city.coordinatesobject{ lat, lng }
city.timezonestringIANA timezone
statsobjectCounts: entities, events, funding_records, partnerships, people, districts
endpointsobjectMap of available API endpoint paths
GET

Events

/{city}/api/events.jsonclick to copy

All major city events with dates, estimated budgets, organizers, and involved actors. Budgets are unofficial estimates based on public information.

25 events (Tübingen) bilingual
Event fields
FieldTypeDescription
name / nameEnstringEvent name (DE / EN)
datestringDate range (e.g. "1.–6. Dezember")
monthnumberMonth number (1-12)
orgstringOrganizer type
organizer / organizerEnstringOrganizer name (DE / EN)
budgetstringEstimated budget (e.g. "~250.000 €")
actors / actorsEnstringInvolved actors/stakeholders (DE / EN)
colorstringHex color for display
Example response
{ "version": "1.0", "count": 25, "data": [ { "name": "chocolART", "nameEn": "chocolART Chocolate Festival", "date": "1.–6. Dezember", "month": 12, "budget": "~250.000 €", "organizer": "Stadtmarketing Tübingen", "actors": "Stadt, Chocolatiers, Gastro" }, ... ] }
GET

Entities

/{city}/api/entities.jsonclick to copy

All businesses, restaurants, cultural venues, public institutions, and services in the city.

216 entities (Tübingen) bilingual
Entity fields
FieldTypeDescription
namestringEntity name
catstringCategory (Restaurant, Café, Kultur, Öffentlich, ...)
sub / subEnstringSubcategory (DE / EN)
districtstringCity district
partnershipstringPartnership status ("ja"/"nein")
detail / detailEnstringDescription (DE / EN)
urlstringWebsite (optional)
Example response
{ "count": 216, "data": [ { "name": "Neckarmüller", "cat": "Restaurant", "sub": "Brauerei-Gaststätte", "district": "Altstadt", "partnership": "ja", "detail": "Brauhaus direkt am Neckar..." }, ... ] }
GET

Elections

/{city}/api/elections.jsonclick to copy

Complete election results: state-level, city-level, electoral district, individual city districts, and municipalities. Party votes, percentages, turnout, seat distribution, and comparison to previous elections.

Landtagswahl BW 2026 21 districts 8 municipalities
Data structure
KeyTypeDescription
data.bwobjectBaden-Württemberg state results
data.bw.partiesobjectParty results: votes, pct, pct2021, color
data.bw.seatsobjectSeat distribution per party
data.tuebingenCityobjectTübingen city aggregate (GRÜNE 53.2%)
data.wk62objectWahlkreis 62 results
data.stadtteilearray21 city district breakdowns
data.wk62Gemeindenarray8 municipality results within WK62
Party object
{ "GRÜNE": { "votes": 1622354, "pct": 30.2, "pct2021": 32.6, "color": "#4CAF50" } }
GET

Funding

/{city}/api/funding.jsonclick to copy

Public funding records showing money flows between institutions, plus funding anomalies and institutional transparency scores.

59 records 12 anomalies 6 transparency scores
Funding record fields
FieldTypeDescription
funderstringFunding organization
recipientstringReceiving organization
amountstringFormatted amount (e.g. "1.200.000 €")
amountNumnumberNumeric amount for sorting/filtering
yearstringFiscal year
categorystringFunding category
typestringFunding type
sourcestringData source
verifiedbooleanWhether the record is verified
Example response
{ "records": [ { "funder": "Land Baden-Württemberg", "recipient": "Universität Tübingen", "amount": "142.000.000 €", "amountNum": 142000000, "year": "2025", "category": "Hochschulfinanzierung", "verified": true }, ... ], "anomalies": [...], "transparency": [...] }
GET

People

/{city}/api/people.jsonclick to copy

Key political figures, council factions with seats, power structure issues, and political controversies.

9 people 8 factions 9 controversies
Person fields
FieldTypeDescription
namestringFull name
role / roleEnstringPolitical role (DE / EN)
partystringPolitical party
sincenumberYear started in role
bio / bioEnstringBiography (DE / EN)
boardsarrayBoard memberships
connectionsarrayOrganizational connections
flagsarrayFlags with text, level, year, source, urls
GET

Network

/{city}/api/network.jsonclick to copy

Organizational partnerships and relationships between entities — who sponsors whom, who operates what.

115 partnerships (Tübingen)
Partnership fields
FieldTypeDescription
sourcestringSource entity
targetstringTarget entity
typestringRelationship type (Sponsor, Operator, Name Sponsor, ...)
evidencestringConfirmation status
Example response
{ "count": 115, "data": [ { "source": "Stadtwerke Tübingen", "target": "Kulturnacht", "type": "Name Sponsor", "evidence": "confirmed" }, ... ] }
GET

Insights

/{city}/api/insights.jsonclick to copy

Infrastructure gaps, city outliers, structural patterns, new business openings, and recent closures.

14 gaps 10 outliers 10 patterns 18 openings 5 closures
Gap fields
FieldTypeDescription
title / titleDestringGap title (EN / DE)
desc / descDestringDescription (EN / DE)
severitystringhigh, medium, or low
iconstringIcon character
urlstringReference URL (optional)
GET

Sponsors

/{city}/api/sponsors.jsonclick to copy

Verified premium sponsors with transparency scores and self-reported business data. Includes the full transparency field schema and scoring criteria.

12 transparency fields A-D scoring writable via API key
Write access: Premium sponsors can submit transparency data and profile updates via API key. See Premium page for details and registration.
Transparency fields
Field IDUnitDescription
annual_revenueEURAnnual revenue
employee_countnumberEmployee count
funding_receivedEURPublic funding received
funding_givenEURFunding given to others
tax_paid_localEURLocal taxes paid
community_contributionsEURCommunity contributions
energy_consumption_kwhkWhEnergy consumption
co2_emissions_tonstonsCO2 emissions
local_suppliers_pct%Local suppliers share
apprenticesnumberApprentices
public_contracts_valueEURPublic contracts value
local_partnershipsnumberLocal partnerships

OpenAPI Specification

/.well-known/openapi.jsonclick to copy

OpenAPI 3.1 specification describing all endpoints. Use this to auto-generate client libraries or import into tools like Postman, Swagger UI, or Insomnia.

MCP Server Discovery

/.well-known/mcp.jsonclick to copy

Model Context Protocol discovery manifest. Allows AI tools (Claude, Cursor, etc.) to discover and use Localinar as a tool server. 11 tools available.

LLM Discovery

/llms.txtclick to copy

Plain-text overview of Localinar optimized for LLM consumption. Also available: /llms-full.txt with complete data reference, and /.well-known/ai-plugin.json for OpenAI plugin standard.

All discovery files
FileFormatDescription
/llms.txttextLLM-friendly overview with API links
/llms-full.txttextFull data reference (all events, results, FAQ)
/.well-known/ai-plugin.jsonjsonOpenAI plugin manifest
/.well-known/openapi.jsonjsonOpenAPI 3.1 spec
/.well-known/mcp.jsonjsonMCP server discovery
/robots.txttextCrawler rules (LLM bots allowed)