{"id":12834,"date":"2024-04-26T07:42:48","date_gmt":"2024-04-26T07:42:48","guid":{"rendered":"https:\/\/torino.arriva.it\/bus-torino-airport-salone-del-libro-2024\/"},"modified":"2026-04-22T08:19:09","modified_gmt":"2026-04-22T08:19:09","slug":"bus-torino-airport-salone-del-libro-2026","status":"publish","type":"page","link":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/","title":{"rendered":"Bus Torino Airport &#8211; Salone del Libro 2026"},"content":{"rendered":"\n<div class=\"wp-block-ktk-container  ktk-block-container\"><div class=\"ktk-block-container__content ktk-block-container__content--bg-none\">\n<div class=\"wp-block-acf-ktk-simple-text simple-text-block\">\n                    <div class=\"simple-text-block__text\">\n        <h1 style=\"text-align: center;\"><strong><span class=\"paragraph-secondary\">Your experience at the Salone del Libro di Torino starts here!<\/span><\/strong><\/h1>\n<p style=\"text-align: center;\"><span class=\"paragraph-secondary\">Discover the daily connection that brings you comfortably from\u00a0<strong>Torino Airport<\/strong>\u00a0to the city center \u2013\u00a0<strong>Porta Nuova and Porta Susa stations<\/strong>\u00a0\u2013 and gives you a discount to travel to the\u00a0<strong>Salone del Libro 2026<\/strong>. \u00a0<\/span><\/p>\n    <\/div>\n        <\/div>\n\n\n\n<p><img decoding=\"async\" style=\"display: block;margin-left: auto;margin-right: auto;width: 100%\" class=\"flex\" src=\"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2026\/04\/Header_toApt-SalTO.png\" alt=\"caselle-torino-airport\"><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-ktk-container  ktk-block-container ktk-block-container--bg-gray\"><div class=\"ktk-block-container__content \">\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#2d146e\" class=\"has-inline-color\">Use the code <strong><em>SALONE2026 <\/em><\/strong>get a <strong>\u20ac2.00 discount* on a round-trip ticket<\/strong> at checkout.<\/mark><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#2d146e\" class=\"has-inline-color\">Travel between May 11 and 19, 2026, and visit the Salone del Libro in Turin!<\/mark><\/h3>\n\n\n\n<div class=\"wp-block-ktk-card-wrapper  ktk-block-card-wrapper ktk-block-card-wrapper--bg-white card\">\n<div class=\"wp-block-acf-ktk-card-text-content  \">\n    <div class=\"wp-block-acf-ktk-card-text-content__text-container\">\n                    <h5 class=\"wp-block-acf-ktk-card-text-content__title\">TORINO CITY CENTER \u2013 TORINO AIRPORT TIMETABLE<\/h5>\n                            <div class=\"wp-block-acf-ktk-card-text-content__text\"><p>Routes\u00a0<strong>every 15\/30 minutes<\/strong>\u00a0which make stops in the\u00a0<strong>main stations of Torino \u2013 Porta Nuova and Porta Susa<\/strong>, Corso Umbria corner via Livorno, Via Borgaro 103, Strada Aeroporto (Veronese bus stop),\u00a0<strong>Borgaro Torinese<\/strong>\u00a0and\u00a0<strong>Caselle Torinese<\/strong>.<\/p>\n<p>For a direct service without intermediate stops, discover the\u00a0<strong>EXPRESS routes<\/strong>\u00a0which connect the Torino City Center with Torino Airport.<\/p>\n<\/div>\n            <\/div>\n    <div class=\"wp-block-acf-ktk-card-text-content__btn-container\">\n            <\/div>\n<\/div>\n\n\n\n<a\n    class=\"btn wp-block-acf-ktk-button btn-block \"\n    href=\"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2020\/07\/000268.pdf\" \n    target=\"_blank\"\n>\n    Timetable<\/a>\n\n\n<a\n    class=\"btn wp-block-acf-ktk-button btn-block \"\n    href=\"https:\/\/estore.arriva.it\/start_your_trip?code=TORCAS&#038;lang=en\" \n    target=\"_blank\"\n>\n    Buy your ticket HERE<\/a>\n\n\n<div id=\"OM-iframe-container\"><iframe loading=\"lazy\" id=\"arriva-prod\" src=\"https:\/\/estore.arriva.it\/start_your_trip?code=TORCAS&#038;lang=en\" style=\"border: none; border-radius: 0 0 24px;\" title=\"Arriva Torino-Caselle\" width=\"100%\" height=\"680\"><\/iframe><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">*Discount valid, while supplies last, for the online purchase of a round-trip ticket on the Turin City Center \u2013 Turin Airport route<\/h4>\n<\/div>\n\n\n\n<!-- === TA Schedules (responsive + titles white) === -->\r\n\r\n<!-- === DATI INLINE: Porta Nuova \u2192 Aeroporto === -->\r\n<script type=\"application\/json\" id=\"to-airport-json\">\r\n{\r\n  \"weekday\": [\r\n    \"4:45\",\"5:15\",\"5:45\",\"6:15\",\"6:30\",\"6:45\",\"7:00\",\"7:15\",\"7:30\",\"7:45\",\"8:00\",\"8:15\",\"8:30\",\"8:45\",\"9:00\",\"9:15\",\"9:30\",\"9:45\",\r\n    \"10:00\",\"10:15\",\"10:30\",\"10:45\",\"11:00\",\"11:15\",\"11:30\",\"11:45\",\"12:00\",\"12:15\",\"12:30\",\"12:45\",\"13:00\",\"13:15\",\"13:30\",\"13:45\",\r\n    \"14:00\",\"14:15\",\"14:30\",\"14:45\",\"15:00\",\"15:15\",\"15:30\",\"15:45\",\"16:00\",\"16:15\",\"16:30\",\"16:45\",\"17:00\",\"17:15\",\"17:30\",\"17:45\",\r\n    \"18:00\",\"18:15\",\"18:30\",\"18:45\",\"19:00\",\"19:20\",\"19:40\",\"20:00\",\"20:30\",\"21:00\",\"21:30\",\"22:00\",\"22:30\",\"23:00\",\"23:30\"\r\n  ],\r\n  \"weekday_meta\": [\r\n    { \"time\": \"04:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"05:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"05:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"06:15\", \"type\": \"stradale 7 fermate | 7 stops\", \"calendar\": \"SCOL\", \"dow\": \"12345\" },\r\n    { \"time\": \"06:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"06:45\", \"type\": \"stradale 7 fermate | 7 stops\", \"calendar\": \"SCOL\", \"dow\": \"12345\" },\r\n    { \"time\": \"07:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"07:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"07:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"07:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"08:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"08:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"09:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"09:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"10:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"10:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"11:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"11:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"12:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"12:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"13:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"13:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"13:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"13:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"14:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"14:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"15:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"15:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"16:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"16:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"17:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"19:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"19:20\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"19:40\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"20:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"20:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"21:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"21:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"22:00\", \"type\": \"diretto | express\", \"notes\": [\"K\"] },\r\n    { \"time\": \"22:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:00\", \"type\": \"diretto | express\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"notes\": [\"K\"] }\r\n  ],\r\n  \"weekend\": [\r\n    \"4:15\",\"5:15\",\"5:30\",\"5:45\",\"6:15\",\"6:30\",\"7:00\",\"7:30\",\"8:00\",\"8:30\",\"9:00\",\"9:30\",\"10:00\",\"10:30\",\"11:00\",\"11:30\",\"12:00\",\"12:30\",\"13:00\",\"13:30\",\"14:00\",\"14:30\",\"15:00\",\"15:30\",\"16:00\",\"16:30\",\"17:00\",\"17:30\",\"18:00\",\"18:30\",\"19:00\",\"19:30\",\"20:00\",\"20:30\",\"21:00\",\"21:30\",\"22:00\",\"22:30\",\"23:00\",\"23:30\"\r\n  ],\r\n  \"weekend_meta\": [\r\n    { \"time\": \"04:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"05:15\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"05:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"78\", \"notes\": [\"#\"] },\r\n    { \"time\": \"05:45\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"06:15\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"78\" },\r\n    { \"time\": \"06:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"07:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\" },\r\n    { \"time\": \"07:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"08:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"08:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"09:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"10:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"11:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"12:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"13:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"13:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"14:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"15:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"16:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"17:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"18:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"18:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"19:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"19:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"20:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"20:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"21:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"21:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"22:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"22:30\", \"type\": \"diretto | express\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] }\r\n  ],\r\n  \"holidays_it\": [\r\n    \"2025-01-01\",\"2025-01-06\",\"2025-04-20\",\"2025-04-21\",\"2025-04-25\",\"2025-05-01\",\r\n    \"2025-06-02\",\"2025-06-24\",\"2025-08-15\",\"2025-11-01\",\"2025-12-08\",\"2025-12-25\",\"2025-12-26\"\r\n  ],\r\n  \"notes_legend\": {\r\n    \"K\": \"Non si effettua il 31\/12 - no service on 31\/12\",\r\n    \"NFF\": \"Non si effettua nei giorni festivi infrasettimanali\",\r\n    \"#\": \"Si effettua anche il 25\/12 - service on 25\/12\",\r\n    \"SCOL\": \"Corsa scolastica secondo calendario scolastico Torino (vedi 'calendars.SCOL_turin_2025_26')\"\r\n  },\r\n  \"calendars\": {\r\n    \"SCOL_turin_2025_26\": {\r\n      \"start_date\": \"2025-09-10\",\r\n      \"end_date\": \"2026-06-10\",\r\n      \"sospensioni\": [\r\n        { \"name\": \"Ognissanti\", \"from\": \"2025-11-01\", \"to\": \"2025-11-01\" },\r\n        { \"name\": \"Immacolata\", \"from\": \"2025-12-08\", \"to\": \"2025-12-08\" },\r\n        { \"name\": \"Vacanze di Natale\", \"from\": \"2025-12-22\", \"to\": \"2026-01-06\" },\r\n        { \"name\": \"Carnevale\", \"from\": \"2026-02-14\", \"to\": \"2026-02-17\" },\r\n        { \"name\": \"Vacanze di Pasqua\", \"from\": \"2026-04-02\", \"to\": \"2026-04-07\" },\r\n        { \"name\": \"Festa della Liberazione\", \"from\": \"2026-04-25\", \"to\": \"2026-04-25\" },\r\n        { \"name\": \"Ponte Festa dei Lavoratori\", \"from\": \"2026-05-01\", \"to\": \"2026-05-02\" },\r\n        { \"name\": \"Ponte Festa della Repubblica\", \"from\": \"2026-06-01\", \"to\": \"2026-06-02\" },\r\n        { \"name\": \"Santo Patrono Torino \u2013 San Giovanni\", \"from\": \"2026-06-24\", \"to\": \"2026-06-24\" }\r\n      ]\r\n    }\r\n  }\r\n}\r\n<\/script>\r\n\r\n<!-- === DATI INLINE: Aeroporto \u2192 Porta Nuova === -->\r\n<script type=\"application\/json\" id=\"from-airport-json\">\r\n{\r\n  \"weekday\": [\r\n    \"6:10\",\"6:30\",\"6:45\",\"7:00\",\"7:05\",\"7:10\",\"7:25\",\"7:45\",\"8:00\",\"8:15\",\"8:30\",\"8:45\",\"9:00\",\"9:15\",\"9:30\",\"9:45\",\r\n    \"10:00\",\"10:15\",\"10:30\",\"10:45\",\"11:00\",\"11:15\",\"11:30\",\"11:45\",\"12:00\",\"12:15\",\"12:30\",\"12:45\",\"13:00\",\"13:15\",\"13:30\",\"13:45\",\r\n    \"14:00\",\"14:15\",\"14:30\",\"14:45\",\"15:00\",\"15:15\",\"15:30\",\"15:45\",\"16:00\",\"16:15\",\"16:30\",\"16:45\",\"17:00\",\"17:15\",\"17:30\",\"17:45\",\r\n    \"18:00\",\"18:15\",\"18:30\",\"18:45\",\"19:00\",\"19:20\",\"19:40\",\"20:00\",\"20:30\",\"21:00\",\"21:30\",\"22:00\",\"22:30\",\"23:00\",\"23:30\",\"0:00\"\r\n  ],\r\n  \"weekday_meta\": [\r\n    { \"time\": \"06:10\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"06:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"06:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"07:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"calendar\": \"SCOL\", \"dow\": \"12345\" },\r\n    { \"time\": \"07:05\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"07:10\", \"type\": \"stradale 7 fermate | 7 stops\", \"calendar\": \"SCOL\", \"dow\": \"12345\" },\r\n    { \"time\": \"07:25\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"07:45\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:15\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"09:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"09:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"10:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"10:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"11:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"11:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"12:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"12:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"13:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"13:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"13:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"13:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"14:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"14:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"15:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"15:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"16:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"16:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"17:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"17:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"17:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"18:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:15\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"18:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"18:45\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"19:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"19:20\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"19:40\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"20:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"20:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"21:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"21:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"22:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"22:30\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"23:00\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"23:30\", \"type\": \"stradale 7 fermate | 7 stops\", \"notes\": [\"K\"], \"dow\": \"12345\" },\r\n    { \"time\": \"00:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"notes\": [\"K\",\"NFF\"], \"dow\": \"2345\" }\r\n  ],\r\n  \"weekend\": [\r\n    \"5:10\",\"6:10\",\"6:35\",\"6:50\",\"7:00\",\"7:05\",\"7:30\",\"8:00\",\"8:30\",\"9:00\",\"9:30\",\"10:00\",\"10:30\",\"11:00\",\"11:30\",\"12:00\",\"12:30\",\r\n    \"13:00\",\"13:30\",\"14:00\",\"14:30\",\"15:00\",\"15:30\",\"16:00\",\"16:30\",\"17:00\",\"17:30\",\"18:00\",\"18:30\",\"19:00\",\"19:30\",\"20:00\",\"20:30\",\r\n    \"21:00\",\"21:30\",\"22:00\",\"22:30\",\"23:15\",\"23:45\",\"0:00\"\r\n  ],\r\n  \"weekend_meta\": [\r\n    { \"time\": \"05:10\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"06:10\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"06:35\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"#\"] },\r\n    { \"time\": \"06:50\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"07:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"78\" },\r\n    { \"time\": \"07:05\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\" },\r\n    { \"time\": \"07:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"08:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"08:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"09:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"09:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"10:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"10:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"11:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"11:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"12:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"12:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"13:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"13:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"14:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"14:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"15:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"15:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"16:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"16:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"17:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"17:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"18:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"18:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"19:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"19:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"20:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"20:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"21:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"21:30\", \"type\": \"diretto | express\" },\r\n    { \"time\": \"22:00\", \"type\": \"stradale 7 fermate | 7 stops\" },\r\n    { \"time\": \"22:30\", \"type\": \"diretto | express\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:15\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"23:45\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"678\", \"notes\": [\"K\"] },\r\n    { \"time\": \"00:00\", \"type\": \"stradale 7 fermate | 7 stops\", \"dow\": \"6\", \"notes\": [\"K\"] }\r\n  ],\r\n  \"holidays_it\": [\r\n    \"2025-01-01\",\"2025-01-06\",\"2025-04-20\",\"2025-04-21\",\"2025-04-25\",\"2025-05-01\",\r\n    \"2025-06-02\",\"2025-06-24\",\"2025-08-15\",\"2025-11-01\",\"2025-12-08\",\"2025-12-25\",\"2025-12-26\"\r\n  ],\r\n  \"notes_legend\": {\r\n    \"K\": \"Non si effettua il 31\/12 - no service on 31\/12\",\r\n    \"NFF\": \"Non si effettua nei giorni festivi infrasettimanali\",\r\n    \"#\": \"Si effettua anche il 25\/12 - service on 25\/12\",\r\n    \"SCOL\": \"Corsa scolastica secondo calendario scolastico Torino (vedi 'calendars.SCOL_turin_2025_26')\"\r\n  },\r\n  \"calendars\": {\r\n    \"SCOL_turin_2025_26\": {\r\n      \"start_date\": \"2025-09-10\",\r\n      \"end_date\": \"2026-06-10\",\r\n      \"sospensioni\": [\r\n        { \"name\": \"Ognissanti\", \"from\": \"2025-11-01\", \"to\": \"2025-11-01\" },\r\n        { \"name\": \"Immacolata\", \"from\": \"2025-12-08\", \"to\": \"2025-12-08\" },\r\n        { \"name\": \"Vacanze di Natale\", \"from\": \"2025-12-22\", \"to\": \"2026-01-06\" },\r\n        { \"name\": \"Carnevale\", \"from\": \"2026-02-14\", \"to\": \"2026-02-17\" },\r\n        { \"name\": \"Vacanze di Pasqua\", \"from\": \"2026-04-02\", \"to\": \"2026-04-07\" },\r\n        { \"name\": \"Festa della Liberazione\", \"from\": \"2026-04-25\", \"to\": \"2026-04-25\" },\r\n        { \"name\": \"Ponte Festa dei Lavoratori\", \"from\": \"2026-05-01\", \"to\": \"2026-05-02\" },\r\n        { \"name\": \"Ponte Festa della Repubblica\", \"from\": \"2026-06-01\", \"to\": \"2026-06-02\" },\r\n        { \"name\": \"Santo Patrono Torino \u2013 San Giovanni\", \"from\": \"2026-06-24\", \"to\": \"2026-06-24\" }\r\n      ]\r\n    }\r\n  }\r\n}\r\n<\/script>\r\n\r\n<div id=\"ta-schedules\"\r\n     class=\"ta-sched\"\r\n     data-url-a=\"\"\r\n     data-fallback-a=\"to-airport-json\"\r\n     data-title-a=\"Torino Porta Nuova \u2192 Torino Airport\"\r\n     data-url-b=\"\"\r\n     data-fallback-b=\"from-airport-json\"\r\n     data-title-b=\"Torino Airport \u2192 Torino Porta Nuova\"\r\n     data-refresh-ms=\"60000\"\r\n     data-max-rows=\"8\">\r\n  <div class=\"ta-grid\">\r\n    <section class=\"ta-col\">\r\n      <h3 class=\"ta-title\"><\/h3>\r\n      <table class=\"ta-table\" aria-live=\"polite\">\r\n        <colgroup>\r\n          <col class=\"col-time\"><col class=\"col-type\"><col class=\"col-next\">\r\n        <\/colgroup>\r\n        <thead>\r\n          <tr>\r\n            <th>ORARIO<\/th>\r\n            <th>TIPO<\/th>\r\n            <th>PROSSIMO BUS IN<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody class=\"ta-body\"><\/tbody>\r\n      <\/table>\r\n    <\/section>\r\n\r\n    <section class=\"ta-col\">\r\n      <h3 class=\"ta-title\"><\/h3>\r\n      <table class=\"ta-table\" aria-live=\"polite\">\r\n        <colgroup>\r\n          <col class=\"col-time\"><col class=\"col-type\"><col class=\"col-next\">\r\n        <\/colgroup>\r\n        <thead>\r\n          <tr>\r\n            <th>ORARIO<\/th>\r\n            <th>TIPO<\/th>\r\n            <th>PROSSIMO BUS IN<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody class=\"ta-body\"><\/tbody>\r\n      <\/table>\r\n    <\/section>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n\/* ===== Scoped styles (no conflict) ===== *\/\r\n#ta-schedules.ta-sched{ --ta-cyan:#00becd; --ta-accent:#f9b500; --ta-ink:#001e22; --ta-bg:rgba(0,0,0,.4); }\r\n#ta-schedules.ta-sched *{ box-sizing:border-box; }\r\n\r\n#ta-schedules.ta-sched .ta-grid{ display:grid; gap:18px; grid-template-columns:1fr 1fr; }\r\n@media (max-width: 820px){ #ta-schedules.ta-sched .ta-grid{ grid-template-columns:1fr; } }\r\n\r\n#ta-schedules.ta-sched .ta-col{ width:100%; }\r\n#ta-schedules.ta-sched .ta-title{\r\n  margin:0 0 10px; font-weight:900;\r\n  font-size:clamp(18px,2.6vw,22px); color:#00becd;  \/* \u2190 titoli bianchi *\/\r\n}\r\n\r\n\/* Tabella *\/\r\n#ta-schedules.ta-sched .ta-table{\r\n  width:100%; border-collapse:separate; border-spacing:0;\r\n  border:2px solid var(--ta-cyan); border-radius:12px; overflow:hidden;\r\n  background:var(--ta-bg); table-layout:fixed;\r\n}\r\n#ta-schedules.ta-sched .col-time{ width:28%; }\r\n#ta-schedules.ta-sched .col-type{ width:auto; }\r\n#ta-schedules.ta-sched .col-next{ width:32%; }\r\n\r\n#ta-schedules.ta-sched thead th{\r\n  background:#00343a; color:#a9edf2; padding:12px 14px;\r\n  text-align:left; font-size:14px; text-transform:uppercase; letter-spacing:.03em;\r\n  white-space:nowrap;\r\n}\r\n#ta-schedules.ta-sched td{\r\n  padding:12px 14px; border-bottom:1px solid rgba(255,255,255,.08);\r\n  font-size:16px; color:#fff;\r\n  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\r\n}\r\n#ta-schedules.ta-sched td:nth-child(2),\r\n#ta-schedules.ta-sched th:nth-child(2){ white-space:normal; }\r\n#ta-schedules.ta-sched tbody tr:nth-child(even){ background:rgba(255,255,255,.05); }\r\n\r\n#ta-schedules.ta-sched .ta-strong{ font-weight:800; font-variant-numeric:tabular-nums; }\r\n\r\n#ta-schedules.ta-sched .ta-tag{\r\n  display:inline-block; padding:6px 10px; border-radius:999px;\r\n  font-weight:800; border:2px solid var(--ta-accent);\r\n  background:var(--ta-ink); color:#a9edf2; font-size:14px;\r\n}\r\n#ta-schedules.ta-sched .ta-tag--stradale{ border-color:var(--ta-cyan); }\r\n\r\n#ta-schedules.ta-sched .ta-count{\r\n  display:inline-block; padding:6px 10px; border-radius:10px;\r\n  border:2px solid var(--ta-accent); background:rgba(255,255,255,.1);\r\n  font-weight:900; font-variant-numeric:tabular-nums; font-size:14px;\r\n  white-space:nowrap;\r\n}\r\n\r\n@media (max-width:560px){\r\n  #ta-schedules.ta-sched thead th{ font-size:12px; padding:10px 12px; }\r\n  #ta-schedules.ta-sched td{ font-size:14px; padding:10px 12px; }\r\n  #ta-schedules.ta-sched .ta-tag{ font-size:12px; padding:5px 8px; }\r\n  #ta-schedules.ta-sched .ta-count{ font-size:12px; padding:5px 8px; }\r\n  #ta-schedules.ta-sched .col-time{ width:26%; }\r\n  #ta-schedules.ta-sched .col-next{ width:34%; }\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const root = document.getElementById('ta-schedules'); if(!root) return;\r\n  const TZ = 'Europe\/Rome';\r\n  const REFRESH = parseInt(root.dataset.refreshMs || '60000',10);\r\n  const MAXROWS = parseInt(root.dataset.maxRows || '8',10);\r\n\r\n  const sections = root.querySelectorAll('.ta-col');\r\n  const config = [\r\n    { el: sections[0], url: (root.dataset.urlA||'').trim(), fallbackId: root.dataset.fallbackA, title: root.dataset.titleA || 'Colonna A' },\r\n    { el: sections[1], url: (root.dataset.urlB||'').trim(), fallbackId: root.dataset.fallbackB, title: root.dataset.titleB || 'Colonna B' }\r\n  ];\r\n  config.forEach(c => { const h=c.el.querySelector('.ta-title'); if(h) h.textContent=c.title; });\r\n\r\n  \/\/ --- Time helpers ---\r\n  function romeNowParts(){\r\n    const fmt = new Intl.DateTimeFormat('it-IT',{timeZone:TZ,hour:'2-digit',minute:'2-digit',weekday:'short'});\r\n    const parts = Object.fromEntries(fmt.formatToParts(new Date()).map(p=>[p.type,p.value]));\r\n    return { hh:parseInt(parts.hour,10), mm:parseInt(parts.minute,10), wk:parts.weekday.toLowerCase() };\r\n  }\r\n  function minutesToLabel(min){ return (min>=60)?`${Math.floor(min\/60)}h ${min%60}m`:`${min} min`; }\r\n  function normTime(s){\r\n    const m=String(s||'').trim().match(\/^(\\d{1,2}):(\\d{2})$\/); if(!m) return null;\r\n    return `${String(+m[1]).padStart(2,'0')}:${m[2]}`;\r\n  }\r\n  function typeLabel(t){\r\n    const s=(t||'').toLowerCase();\r\n    if (s.includes('stradale')) return {text:'Stradale (7 fermate)', cls:'ta-tag ta-tag--stradale'};\r\n    return {text:'Diretto', cls:'ta-tag'};\r\n  }\r\n\r\n  \/\/ Supporta sia *_meta che array semplici\r\n  function pickMeta(data){\r\n    const {wk}=romeNowParts();\r\n    const weekend = \/sab|dom\/.test(wk);\r\n    const srcMeta = weekend ? (data.weekend_meta || data.weekday_meta || []) : (data.weekday_meta || []);\r\n    let list = srcMeta.map(o=>({ time:normTime(o.time||o.orario), type:(o.type||o.tipo||'').trim() })).filter(o=>o.time);\r\n    if (list.length) return list;\r\n    const srcArr = weekend ? (data.weekend || []) : (data.weekday || []);\r\n    if (Array.isArray(srcArr) && srcArr.length){\r\n      list = srcArr.map(t => ({ time:normTime(t), type:'' })).filter(o=>o.time);\r\n      return list;\r\n    }\r\n    return [];\r\n  }\r\n\r\n  function nextDepartures(meta, n){\r\n    const {hh,mm}=romeNowParts(), now = hh*60+mm;\r\n    return meta.map(o=>{\r\n      const [H,M]=o.time.split(':').map(Number), dep=H*60+M;\r\n      const delta=(dep-now+1440)%1440;\r\n      return { time:o.time, type:o.type, delta };\r\n    }).sort((a,b)=>a.delta-b.delta).slice(0,n);\r\n  }\r\n\r\n  async function loadAndRenderOne(cfg){\r\n    const body = cfg.el.querySelector('.ta-body');\r\n\r\n    const renderData = (data)=>{\r\n      const list = nextDepartures(pickMeta(data), MAXROWS);\r\n      if(!list.length){ body.innerHTML = `<tr><td colspan=\"3\">Nessun orario disponibile<\/td><\/tr>`; return; }\r\n      body.innerHTML = list.map(i=>{\r\n        const t = typeLabel(i.type);\r\n        return `<tr>\r\n          <td><span class=\"ta-strong\">${i.time}<\/span><\/td>\r\n          <td><span class=\"${t.cls}\">${t.text}<\/span><\/td>\r\n          <td><span class=\"ta-count\">${minutesToLabel(i.delta)}<\/span><\/td>\r\n        <\/tr>`;\r\n      }).join('');\r\n    };\r\n\r\n    \/\/ 1) Se c'\u00e8 fallback inline, usalo subito (evita CORS upload ecc.)\r\n    if (cfg.fallbackId){\r\n      try{\r\n        const tag=document.getElementById(cfg.fallbackId);\r\n        const txt=(tag && tag.textContent)||'';\r\n        if(txt.trim()){\r\n          renderData(JSON.parse(txt));\r\n          return;\r\n        }\r\n      }catch(e){\r\n        console.error('[TA] JSON inline non valido', e);\r\n        body.innerHTML = `<tr><td colspan=\"3\">Errore dati inline<\/td><\/tr>`;\r\n        return;\r\n      }\r\n    }\r\n\r\n    \/\/ 2) Altrimenti tenta fetch (qui non verr\u00e0 usato perch\u00e9 data-url-* \u00e8 vuoto)\r\n    if (cfg.url){\r\n      try{\r\n        const url = cfg.url + (cfg.url.includes('?') ? '&' : '?') + 't=' + Date.now();\r\n        const res = await fetch(url, {cache:'no-store'});\r\n        if(!res.ok) throw new Error(`HTTP ${res.status} ${res.statusText}`);\r\n        let data;\r\n        try{ data = await res.json(); }\r\n        catch{ data = JSON.parse(await res.text()); }\r\n        renderData(data);\r\n        return;\r\n      }catch(e){\r\n        console.error('[TA] Errore fetch', e);\r\n        body.innerHTML = `<tr><td colspan=\"3\">Errore caricamento dati<\/td><\/tr>`;\r\n      }\r\n    }else{\r\n      body.innerHTML = `<tr><td colspan=\"3\">Nessun dato configurato<\/td><\/tr>`;\r\n    }\r\n  }\r\n\r\n  async function renderAll(){ await Promise.all(config.map(loadAndRenderOne)); }\r\n  renderAll();\r\n  setInterval(renderAll, REFRESH);\r\n})();\r\n<\/script>\r\n<!-- === \/TA Schedules === -->\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-ktk-container  ktk-block-container\"><div class=\"ktk-block-container__content ktk-block-container__content--bg-none\">\n<div class=\"wp-block-columns is-layout-flex wp-container-3\">\n<div class=\"wp-block-column is-layout-flow\">\n<div class=\"wp-block-ktk-container  ktk-block-container\"><div class=\"ktk-block-container__content ktk-block-container__content--bg-none\">\n<div class=\"wp-block-ktk-card-wrapper  ktk-block-card-wrapper ktk-block-card-wrapper--bg-robins-egg-blue card\">\n<div class=\"wp-block-acf-ktk-card-text-content  \">\n    <div class=\"wp-block-acf-ktk-card-text-content__text-container\">\n                    <h5 class=\"wp-block-acf-ktk-card-text-content__title\">Arrivals \/ Departures Torino Airport<\/h5>\n                            <div class=\"wp-block-acf-ktk-card-text-content__text\"><p>Find out in real time the flights arriving\/departing and all the information about Torino Airport.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"\" src=\"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2022\/04\/Arrivi-e-Partenze-Torino-Airport.png\" width=\"180\" height=\"53\" \/><\/p>\n<\/div>\n            <\/div>\n    <div class=\"wp-block-acf-ktk-card-text-content__btn-container\">\n                    <a class=\"btn wp-block-acf-ktk-card-text-content__btn \" href=\"https:\/\/www.aeroportoditorino.it\/it\/tofly\/voli\/partenze-arrivi\"  target=\"_blank\">\n                Discover            <\/a>\n            <\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow\">\n<div class=\"wp-block-ktk-container  ktk-block-container\"><div class=\"ktk-block-container__content ktk-block-container__content--bg-none\">\n<div class=\"wp-block-ktk-card-wrapper  ktk-block-card-wrapper ktk-block-card-wrapper--bg-robins-egg-blue card\">\n<div class=\"wp-block-acf-ktk-card-text-content  \">\n    <div class=\"wp-block-acf-ktk-card-text-content__text-container\">\n                    <h5 class=\"wp-block-acf-ktk-card-text-content__title\">Plan your visit to the Saloner<\/h5>\n                            <div class=\"wp-block-acf-ktk-card-text-content__text\"><p><strong>Salone Internazionale del Libro di Torino<\/strong><\/p>\n<p>From May 14 to 18, 2025, the most important book and culture fair returns to Torino.<\/p>\n<\/div>\n            <\/div>\n    <div class=\"wp-block-acf-ktk-card-text-content__btn-container\">\n                    <a class=\"btn wp-block-acf-ktk-card-text-content__btn \" href=\"https:\/\/www.salonelibro.it\/eng\/Tickets.html\"  target=\"_blank\">\n                Discover            <\/a>\n            <\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino<\/title>\n<meta name=\"description\" content=\"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino\" \/>\n<meta property=\"og:description\" content=\"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/\" \/>\n<meta property=\"og:site_name\" content=\"Arriva Italia - Torino\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-22T08:19:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2022\/05\/Torino-PiazzaSanCarlo.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1015\" \/>\n\t<meta property=\"og:image:height\" content=\"524\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2022\/05\/Torino-PiazzaSanCarlo.jpeg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"17 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/\",\"url\":\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/\",\"name\":\"Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino\",\"isPartOf\":{\"@id\":\"https:\/\/torino.arriva.it\/#website\"},\"datePublished\":\"2024-04-26T07:42:48+00:00\",\"dateModified\":\"2026-04-22T08:19:09+00:00\",\"description\":\"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.\",\"breadcrumb\":{\"@id\":\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/torino.arriva.it\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bus Torino Airport &#8211; Salone del Libro 2026\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/torino.arriva.it\/#website\",\"url\":\"https:\/\/torino.arriva.it\/\",\"name\":\"Arriva Italia - Torino\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/torino.arriva.it\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino","description":"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"en_US","og_type":"article","og_title":"Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino","og_description":"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.","og_url":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/","og_site_name":"Arriva Italia - Torino","article_modified_time":"2026-04-22T08:19:09+00:00","og_image":[{"width":1015,"height":524,"url":"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2022\/05\/Torino-PiazzaSanCarlo.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_image":"https:\/\/arriva.it\/app\/uploads\/sites\/4\/2022\/05\/Torino-PiazzaSanCarlo.jpeg","twitter_misc":{"Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/","url":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/","name":"Bus Torino Airport - Salone del Libro 2026 - Arriva Italia - Torino","isPartOf":{"@id":"https:\/\/torino.arriva.it\/#website"},"datePublished":"2024-04-26T07:42:48+00:00","dateModified":"2026-04-22T08:19:09+00:00","description":"Scopri il Il collegamento quotidiano di Arriva Italia che ti porta comodamente dal centro di Torino al Torino Airport di Caselle.","breadcrumb":{"@id":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/torino.arriva.it\/en\/bus-torino-airport-salone-del-libro-2026\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/torino.arriva.it\/en\/"},{"@type":"ListItem","position":2,"name":"Bus Torino Airport &#8211; Salone del Libro 2026"}]},{"@type":"WebSite","@id":"https:\/\/torino.arriva.it\/#website","url":"https:\/\/torino.arriva.it\/","name":"Arriva Italia - Torino","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/torino.arriva.it\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}},"acf":{"featured_image_mask":"none"},"_links":{"self":[{"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/pages\/12834"}],"collection":[{"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/comments?post=12834"}],"version-history":[{"count":22,"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/pages\/12834\/revisions"}],"predecessor-version":[{"id":15353,"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/pages\/12834\/revisions\/15353"}],"wp:attachment":[{"href":"https:\/\/torino.arriva.it\/en\/wp-json\/wp\/v2\/media?parent=12834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}