The curated list of tourism data for Salerno, Amalfi Coast and Cilento.
English list below · Leggi in italiano · the map UI has an EN/IT switch.
- In italiano
- Stats
- Sentieri
- Monumenti
- Spiagge
- Panorami
- Parchi
- Eventi
- Luci d'Artista
- Map
- Autonomous Ingestion Pipeline
- API
- Ask Salerno
- Monthly digest
- Data quality
- RAG dataset
- MCP server
- Architecture & Data Pipeline
- Quickstart
- Citation
Guida aperta, verificabile e mantenuta ai luoghi e agli eventi di Salerno, Costiera Amalfitana e Cilento.
5529 POI (sentieri, monumenti, spiagge, panorami, parchi, eventi) con coordinate GPS, fonte e data di verifica. Dati in JSON, GeoJSON, KML/KMZ, RSS e dataset RAG.
Licenze: non sono uniformi. Le voci source: osm contengono dati ©
OpenStreetMap contributors, sotto ODbL 1.0 (attribuzione obbligatoria); Wikipedia,
Wikidata e le fonti degli eventi hanno condizioni proprie. Il dettaglio per fonte
e' in DATA-LICENSES.md; la licenza del dataset composto la
conferma il titolare.
| Documento | Contenuto |
|---|---|
| docs/criteria.md | Criteri editoriali: cosa entra e cosa no |
| CONTRIBUTING.md | Come proporre una voce o una correzione |
DATA-LICENSES.md |
Licenza di ogni fonte dei dati (link nel paragrafo sopra) |
| docs/CONTRACT.md | Chi legge i dati e cosa non si deve rompere |
| CODE_OF_CONDUCT.md | Codice di condotta |
La mappa interattiva (sezione Map) ha un selettore IT/EN. Le voci della lista qui sotto sono in inglese; dati e documentazione per i contributor sono in italiano.
| Metric | Value |
|---|---|
| Total POI | 5529 |
| In declared scope (Salerno, Amalfi Coast, Cilento) | 3785 |
| Outside declared scope, flagged not removed | 1744 |
| Cities mapped | 102 |
| Salerno districts (quartieri) | 14 |
| Unique descriptions | 5411 (97.9%) |
| Luci d'Artista | 36 |
On scope, honestly. Every POI now carries provincia, sigla_provincia,
regione (from the official ISTAT comuni list) and in_ambito. The collection
grew past its declared area: 1744 POI sit outside it — 1557 in provincia di
Napoli (Pompei, Sorrento, Castellammare, the Vesuvio side), 95 Cosenza, 70
Avellino, 47 Latina, 4 Potenza. Their coordinates are correct; they are simply
not Salerno, the Amalfi Coast or Cilento. Two exceptions are kept in scope on
purpose, because the territory does not follow provincial borders: Agerola
(NA, Amalfi Coast) and Maratea (PZ, southern end of the Cilento coast).
Nothing was deleted — it is flagged, and you can filter:
curl "http://localhost:8080/api/all?ambito=1" # declared scope only
curl "http://localhost:8080/api/all?provincia=SA" # by province1658 hiking trails with GPS coordinates, difficulty and elevation.
- Sentiero degli Dei - The most famous trail on the Amalfi Coast. 7.8 km, medium difficulty.
- Path of the Lemons - Panoramic trail between Maiori and Minori through lemon terraces.
- Valle dei Mulini - Historic trail through ancient paper mills in Amalfi.
- Sentiero della Primula - Coastal trail around Capo Palinuro in the Cilento National Park.
- Costa degli Infreschi - Coastal trail in the Cilento National Park with hidden beaches.
- Alta Via Monti Lattari - Long-distance trail from Salerno to Sorrento. 75.6 km, 11 stages.
- Cammino di San Nilo - Slow tourism route through the Cilento. 111 km, 8 stages.
3479 churches, castles, museums, archaeological sites and light installations.
- Duomo di Salerno - Norman cathedral built in 1076 with crypt of San Matteo.
- Castello di Arechi - Lombard fortress from the 7th century with panoramic views.
- Scuola Medica Salernitana - First medical university in the world (9th century).
- Cripta di San Matteo - Byzantine mosaics and Roman sarcophagi.
- San Pietro a Corte - Paleochurch from the 7th century with Lombard frescoes.
- Duomo di Amalfi - Arab-Norman cathedral with Chiostro del Paradiso.
- Villa Rufolo - 12th-century villa with gardens that inspired Wagner.
- Villa Cimbrone - Historic villa with Terrazza dell'Infinito.
- Museo della Carta - Museum in an ancient paper mill with live demonstrations.
- Tempio di Hera - Oldest Greek temple of Magna Graecia (550 BC).
- Tempio di Nettuno - Best-preserved Greek temple (4th century BC).
- Tomba del Tuffatore - Unique painted tomb from the 5th century BC.
- Castello di Agropoli - 13th-century Angevin castle with panoramic views.
- Grotta di Castelcivita - Cave with prehistoric paintings, 1.3 km visitable.
78 beaches on the Amalfi Coast and Cilento.
- Spiaggia Grande - Main beach of Positano.
- Fiordo di Furore - Fjord with bridge and hidden beach.
- Spiaggia di Maiori - Longest beach on the Amalfi Coast.
- Spiaggia di Paestum - Beach near the Greek temples.
- Spiaggia di Palinuro - Blue Flag beach in the Cilento.
- Trentova - Wild beach near Agropoli.
- Cala degli Infreschi - Hidden cove in the marine protected area.
201 viewpoints, peaks and panoramas.
- Monte Centaurino - 1433m peak in the Cilento National Park.
- Monte Cervati - 1898m peak with panoramic views across Campania.
- Monte Finestra - 1138m peak overlooking the Amalfi Coast and Cava de' Tirreni.
12 natural parks and reserves.
- Parco Nazionale del Cilento - UNESCO World Heritage Site. 180,000 hectares.
- Parco delle Ferriere - Natural park with 60m waterfalls.
- Riserva Naturale Costiera Amalfitana - Marine and terrestrial reserve.
- Area Marina degli Infreschi - Marine protected area with crystal-clear waters.
49 annual festivals, feste patronali, sagre and cultural events with dates and recurrence.
- Luci d'Artista - Christmas light festival with 36 open-air installations. November-February.
- Festa di San Matteo - Patron saint feast with procession through the historical center. September 21-23.
- Madonna che viene dal Mare - Historical icon arrives by sea with maritime procession. August 2.
- Festa di Sant'Anna - Canalone and port quartiere traditional patron feast. July 26.
- Estate Salernitana - Summer cultural events across city squares and theaters. June-September.
- Salerno Sounds - Summer music and jazz concerts along the waterfront. July 21-25.
- Festival delle Colline Mediterranee - Open-air literature, theater and music. June-July.
- Festa di Sant'Andrea - Amalfi patron saint celebration. June 27-30.
- Festa dei Santi Pietro e Paolo - Cetara patron saints with sea procession. June 29-30.
- Festa di San Vito - Positano patron saint celebration. June 15.
- Festa di San Pantaleone - Ravello patron saint feast in the Duomo. July 27.
- Ravello Festival - Classical music festival in Villa Rufolo. July-September.
- Madonna dell'Assunta - Positano Assumption feast with fireworks over the bay. August 14-16.
- Madonna Costantinopoli - Maiori summer patron feast. August 15.
- Madonna della Neve - Tramonti mountain sanctuary pilgrimage. August 5.
- Festa di Santa Trofimena - Minori patron saint celebration. November 13.
- Sagra del Pesce - Cetara traditional fish festival. August 15-18.
- Festa della Ceramica - Vietri sul Mare historic ceramics festival. September 1-8.
- Sagra del Limone - Amalfi lemon festival celebrating Sfusato Amalfitano. September 10-12.
- Paestum Festival - Music and performing arts among Greek temples. July-August.
- Festa di San Costabile - Castellabate patron saint feast. April 16-17.
- Madonna Costantinopoli di Agropoli - Traditional sea procession from the port. July 24.
- San Marco Evangelista - Agropoli and Castellabate patron celebrations. April 25.
- San Giovanni Battista - Midsummer celebration with bonfires. June 24.
- Beata Vergine del Carmelo - Widespread coastal and mountain patron feasts. July 16.
- Sant'Antonio da Padova - Traditional celebrations across 35+ Cilento villages. June 13.
- Madonna dell'Assunta - Midsummer processions throughout the Cilento. August 15.
- San Rocco - Historic patron celebrations in rural Cilento. August 16.
- Festa di Santa Maria degli Angeli - San Severino di Centola medieval village feast. August 2.
- Festa di Sant'Apollonio - Centola patron saint feast. May 22.
- Festa di San Vito - Palinuro patron saint celebration. June 15.
- Madonna del Carmelo di Palinuro - Palinuro fishermen celebration. July 16.
- Festa di San Rocco di Palinuro - Coastal procession in Palinuro. August 16.
- Sant'Antonio al Porto - Palinuro port blessing. September 25.
- Festa di Santa Lucia - Polla historic winter festival. December 13.
- Cilento Golfo Film Festival - Cinema and culture festival in Palinuro. August 20-25.
- Musica & Parole - Acoustic concerts at Paestum and Velia archaeological parks. August 1-23.
- Festa della Cipolla di Vatolla - Sweet onion gastronomic festival. August 1-2.
- Sagra del Cavatiello - Magliano Vetere handmade pasta festival. July 31 - August 6.
- Sagra della Mozzarella ind'a Murtedda - Novi Velia cheese wrapped in myrtle branches. August 8-13.
- Festa dei Ceci di Cicerale - Slow Food Presidium chickpea festival. August 11-14.
- Sagra del Fusillo Felittese - Slow Food handmade long fusillo festival in Felitto. August 13-23.
- Festa del Vino - Castel San Lorenzo DOC wine celebration. August 13-18.
- Sagra dei Ciccimmaretati - Stio ancient legume soup celebration. August 17-23.
- Festa del Maiale Paesano - Gastronomic festival in Roccadaspide. August 18-20.
- Festa del Fico Bianco del Cilento - DOP white fig celebration in Giungano. August 20-24.
36 light installations for the XX edition (2025-2026). Free entry, November 14 - February 1.
The most important Christmas event in Southern Italy. Since 2006, Salerno transforms into an open-air light museum with works by contemporary artists.
| # | Name | Location | Artist |
|---|---|---|---|
| 1 | Giardino Preistorico | Villa Comunale | Luca Pannoli / Ondesign |
| 2 | Percorso Fiorito | Centro Storico | — |
| 3 | Noi siamo Natura | Via Mercanti | Luca Pannoli |
| 4 | La danza delle meduse | Piazza Sedile del Campo | Luca Pannoli / Ondesign |
| 5 | …e le stelle stanno a guardare | Piazza Flavio Gioia | Luca Pannoli / Ondesign |
| 6 | Albero di Natale | Piazza Portanova | — |
| 7 | Angeli | Via Duomo | — |
| 8 | Colorare Salerno | Piazza Sant'Agostino | Luca Pannoli |
| 9 | Il mare d'inverno | Corso Vittorio Emanuele | Luca Pannoli |
| 10 | Locomotiva dei fiori | Piazza Vittorio Veneto | — |
| 11 | Giochi di biglie | Piazza Caduti di Brescia | — |
| 12 | Paesaggio Polare | Piazza Gian Camillo Gloriosi | — |
| 13 | Albero natalizio con sfere | Piazza Monsignor Grasso | — |
| 14 | Palme Dorate | Arenile Santa Teresa | — |
| 15 | I Fiori del Mare | Piazza della Libertà | Luca Pannoli / Ondesign |
| 16 | Partitura d'aMARE | Sottopiazza della Libertà | Luca Pannoli / Ondesign |
| 17 | Alberi Magici | Piazza San Francesco | — |
| 18 | La fata delle farfalle | Largo Dogana Regia | — |
| 19 | Madonna con Bambino | Complesso di Santa Sofia | Eduardo Giannattasio |
| 20 | Rami Dorati | Via del Carmine | — |
| 21 | Foglie d'Argento | Via Trento | — |
| 22 | Alberi Innevati | Corso Garibaldi | — |
| 23 | Metamorphosis | Via Volpe | Eliana Petrizzi |
| 24 | Il Mito | Via Nizza | Nello Ferrigno |
| 25 | Sfere-Mondi | Via Ventimiglia | — |
| 26 | Giochi d'Acqua | Via Santa Margherita | — |
| 27 | Vele | Via Cocchia | — |
| 28 | Onde e Vele | Via Diaz | — |
| 29 | Circus | Via Memoli | Luca Pannoli |
| 30 | Accendi il tuo futuro | Via Arce | Cooperativa Fili d'Erba |
| 31 | Sei Tu il Regalo Più Bello | Piazza Dante | Luca Pannoli |
| 32 | Le Parole dei Bambini | Via Settimio Mobilio | Roberto Castaldo |
| 33 | Natività | Chiesa SS. Crocifisso | Eduardo Giannattasio |
| 34 | Moonlight | Piazza Dante | Luca Pannoli |
| 35 | Don Chisciotte | Piazza Vittorio Veneto | Eduardo Giannattasio |
| 36 | Annunciazione | Chiesa del Sacro Cuore | Eduardo Giannattasio |
Related events include MeraviglioSA Christmas city in the Mirabile complex (December 5 - January 6), Fiabe d'artista theater for children at Teatro Augusteo, and gospel and jazz street concerts throughout the period.
Interactive map with filters for zona, tipo, and search: Open Map
- Event calendar - 49 events by date with zone filters.
- Statistics dashboard - Charts by zone, type and top cities.
Events are ingested every morning by a systemd timer on the project's own server (scripts/soliso_ingest.sh), which runs the headless browser, writes the events, and pushes them to the dati/eventi-automatici branch for review.
Autonomous Ingestion Pipeline: Events are refreshed daily by a dedicated systemd timer on the project's infrastructure (
scripts/soliso_ingest.sh) using obscura stealth fetch. Scraped records are strictly quarantined indata/eventi_scraped.jsonwith full source provenance, keeping curated datasets immutably verified.
JSON API with fuzzy search, filters, and GeoJSON export.
python3 api/server.py| Endpoint | Description |
|---|---|
GET /api/sentieri |
All trails (1658) |
GET /api/monumenti |
All monuments (3479) |
GET /api/spiagge |
All beaches (78) |
GET /api/panorami |
All viewpoints (253) |
GET /api/parchi |
All parks (12) |
GET /api/eventi |
All events (49) |
GET /api/all |
All data (5529) |
GET /api/geojson |
GeoJSON format for GIS |
GET /api/cities |
List of all 103 cities |
GET /api/search?q=<query> |
Fuzzy search |
GET /api/oggi?giorni=<n> |
What's on now — curated + scraped, counted separately |
GET /api/sources |
The source registry, with measured status and licence |
GET /api/health |
Status, event counts, last ingest timestamp |
Live events (/api/oggi). Events are refreshed daily by
scripts/ingest_events.py, which reads the source
registry in data/sources.json and collects only from
sources measured as reachable. Every scraped record carries curated: false,
its source, license, retrieved_at and provenance — and is kept in
data/eventi_scraped.json, never mixed into the curated data/eventi.json.
If an ingest returns nothing, the previous file is kept: an empty result is
never published as success.
curl "http://localhost:8080/api/oggi?giorni=14&citta=Salerno"
python3 scripts/ingest_events.py --self-check # verifies the parsers, no networkFilter by zone:
curl "http://localhost:8080/api/sentieri?zona=costiera"
curl "http://localhost:8080/api/monumenti?zona=cilento"Filter by type:
curl "http://localhost:8080/api/monumenti?tipo=chiesa"
curl "http://localhost:8080/api/monumenti?tipo=castello"Filter by city:
curl "http://localhost:8080/api/all?citta=Salerno"
curl "http://localhost:8080/api/all?citta=Amalfi&tipo=chiesa"Filter by quartiere (Salerno only):
curl "http://localhost:8080/api/all?citta=Salerno&quartiere=Centro Storico"Search (fuzzy matching):
curl "http://localhost:8080/api/search?q=paestum"
curl "http://localhost:8080/api/search?q=ravello"
curl "http://localhost:8080/api/search?q=chiesa+salerno"GeoJSON export:
curl "http://localhost:8080/api/geojson" > awesome-salerno.geojsonKML/KMZ download:
- KML export - All 5529 POI for Google Earth.
- KMZ export - Compressed KML for mobile apps.
Voice assistant:
- Voice skill - FindPOI, NextEvent and POIDetails intents in
data/voice-assistant.json.
RSS feed for events:
https://autcir.github.io/awesome-salerno/data/events.xmlAsk a question in Italian and get answers that cite the dataset: Ask Salerno
Retrieval (BM25 with a crude Italian stemmer) runs in the browser over
chunks.jsonl - no API key, no server, nothing generated. Every answer is a
real list entry with its source and verification date. For LLM-written answers,
point an MCP client at mcp/server.py or index the chunks in Qdrant.
node scripts/test_ask.js runs the page's own retrieval under node against the
real data.
Upcoming events, dataset changes and link health, one page per month: digest
python3 scripts/build_digest.py # current month
python3 scripts/build_digest.py 2026-01 # a specific one.github/workflows/digest.yml builds it on the 1st of each month. The
"what changed" section is read from Git history, so it cannot drift from the
repo.
Every POI carries a last_verified date (YYYY-MM-DD).
.github/workflows/link-check.yml runs every Monday and does three things:
verify_links.py --fix checks every external link, stamps the reachable ones
and swaps a dead one for the OpenStreetMap link built from the POI coordinates
(the original stays in link_rotto); relink_wikipedia.py --apply then puts a
Wikipedia article back wherever one exists whose own coordinates land near the
POI; whatever is left is reported in data/broken_links.json and in an issue
labelled needs-verification. OpenStreetMap links are generated from the
coordinates, so they are not requested and not stamped: they carry
link_type: osm_generated. last_verified moves only when a real request to an
external link succeeded; last_checked and last_status record every attempt.
The map shows a "to be verified" badge for anything older than 180 days.
An official source beats both fallbacks, so the issue is worth reading: the automation keeps entries usable, it does not make them good.
python3 scripts/verify_links.py --stale-days 30Inclusion and exclusion rules: see docs/criteria.md.
One chunk per POI, ready to embed - data/rag/chunks.jsonl, 5529 lines. It derives from the dataset, so the per-source
licences in DATA-LICENSES.md apply (OpenStreetMap data is ODbL).
python3 scripts/build_rag.py # rebuild the JSONL
python3 scripts/build_rag.py --qdrant # embed + upsert into QdrantEach line carries the searchable text plus id, categoria, tipo, zona,
citta, quartiere, lat, lng, link and last_verified as payload, so a
retriever can filter before it ranks. The Qdrant upload needs
pip install "qdrant-client[fastembed]", embeds locally with
paraphrase-multilingual-MiniLM-L12-v2 (384 dims, cosine - the POI text is
Italian) and creates keyword indexes on categoria, tipo, zona, citta and
quartiere. Reads QDRANT_URL, QDRANT_API_KEY, QDRANT_COLLECTION and
QDRANT_MODEL. Point ids are a stable hash of the POI id, so re-running
overwrites instead of duplicating.
Hosted copy: https://autcir.github.io/awesome-salerno/data/rag/chunks.jsonl
Query the dataset from any MCP client (Claude Code, Claude Desktop). Stdlib only, no dependencies.
{
"mcpServers": {
"awesome-salerno": {
"command": "python3",
"args": ["/path/to/awesome-salerno/mcp/server.py"]
}
}
}| Tool | Description |
|---|---|
search_poi |
Fuzzy search with categoria, zona, tipo, citta filters |
get_poi |
Full record by id |
nearby_poi |
POI within a radius in km of a GPS point, nearest first |
list_events |
Events in a date window, optionally by city (curated + scraped) |
search_rag |
Semantic / keyword search over the 5529 RAG dataset chunks |
get_sources_status |
Live status, coverage and licenses of monitored sources |
The project connects open source geospatial data, automated ingestion, and AI consumer surfaces:
[OpenStreetMap / Overpass] ──┐
[PA Comuni / Istituzionali] ──┼──> [scripts/ingest_events.py] ──> [data/*.json] ──┬──> [Interactive Web Map]
[SalernoToday & Testate] ──┤ (obscura stealth fetch) (5529 POI) ├──> [REST API server.py]
[Luci d'Artista Ufficiale] ──┘ ├──> [MCP Server stdlib]
└──> [SalernOS Civic Core]
Ingest & Freshness: Daily headless fetch runs on a dedicated systemd timer via obscura, strictly isolating scraped records (curated: false) from curated records.
Quality & Contracts: Every update enforces JSON Schema validation and bit-exact parity with the SalernOS sovereign catalog.
Distribution: Data is served via static GeoJSON/KML on GitHub Pages, JSON REST endpoints, and stdlib Model Context Protocol (MCP).
import json
import pandas as pd
# Load monuments
with open("data/monumenti.json") as f:
df = pd.DataFrame(json.load(f))
# Filter in-scope Salerno points
salerno_df = df[(df["citta"] == "Salerno") & (df["in_ambito"] == True)]
print(f"Loaded {len(salerno_df)} verified monuments in Salerno")Import data/awesome-salerno.geojson directly into QGIS as a vector layer or open data/awesome-salerno.kml in Google Earth.
# Start JSON API
python3 api/server.py
# Run MCP Demo / Test Suite
npm testIf you use this dataset, API, or tooling in research, publications, or public services, please cite:
@software{awesome_salerno_2026,
author = {Autuori, Ciro and contributors},
title = {Awesome Salerno: The Curated Open Tourism Dataset for Salerno, Amalfi Coast and Cilento},
year = {2026},
url = {https://github.com/autcir/awesome-salerno},
version = {1.0.0}
}See CITATION.cff for the machine-readable citation metadata conforming to CFF 1.2.0.
Contributions are welcome! Please read CONTRIBUTING.md and docs/criteria.md before submitting a Pull Request.
Rules:
- Only verifiable data from public sources (no invented data, no spam)
- Accurate GPS coordinates required (
lat39–42,lng14–16) - Links to official sources, OpenStreetMap or Wikipedia
- Consistent JSON format matching
schema/definitions - Every contribution must pass
npm test(awesome-lint, ask tests, MCP demo, er0s contract)