# External integration - Public transit (GTFS)

**URL:** <https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150>\
**Category:** Développement\
**Tags:** integration-externe\
**Created:** [October 14, 2026, 7:31am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150 "2026-10-14T07:31:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 14, 2026, 7:31am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/1 "2026-10-14T07:31:22Z")

</div>

![cover-gtfs](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/2/d/2dfa7048cba97673edffac6e990fc394017830d5.png)

Hi everyone!

After Tisséo for Toulouse, several people have networks that don’t have their own dedicated integration. Instead of creating one per city, here’s **Public Transport (GTFS)**: the next arrivals at your stops and disruptions for **any network published on [transport.data.gouv.fr](http://transport.data.gouv.fr)**. TER and TGV SNCF, Naolib, STAR, TaM, M, Ilévia, Stan… around 490 networks, 220 of which have real-time data. Everything comes from open data: no account and no key required.

## What it does

- The **network is selected in Gladys** : search in the national catalog, or enter the address of a GTFS file for a network not listed there. Up to 3 networks.
- **One device per stop** (up to 20): for each line and direction, the minutes until the next arrival and the following one, the next three arrivals in text, and traffic info. Real-time data is used when the network publishes it; a theoretical schedule is marked with « ≈ ».
- A **widget** « Next Arrivals », a **trigger** « Disruption on a followed line » and an **action** that prepares a message ready to send.

## The cool part

> At 7:45 AM on weekdays → the message with the next arrivals at my stop on Telegram  
> Disruption on my TER line → message on my phone before leaving  
> Bus in less than 4 minutes → the entrance light flashes

## Installation

**Gladys 5.1 minimum.**

It will be available in the store at the next indexer update. In the meantime: **Integrations → Install from GitHub** , with the address [GitHub - guim31/gladys-gtfs: Next departures and disruptions for any French public transport network (GTFS / GTFS-RT from transport.data.gouv.fr) in Gladys Assistant · GitHub](https://github.com/guim31/gladys-gtfs)

1. In **Configuration** : search for your network, add it, then search for and add your stops (by name or around your home).
2. Create the devices from the **Discovery** tab, then add the widget.

For Toulouse, Lyon, Île-de-France, and Bordeaux, the dedicated integrations (Tisséo, TCL, IDFM, TBM) remain more complete: the documentation mentions them. Île-de-France is actually too large for this one.

Honest caveats: real-time data depends on what each network publishes, and it can be heavy (up to around 100 MB per hour and per network with a refresh every minute; at night, a read every 15 minutes). It has been tested on real data (SNCF at Nantes station, Naolib, Aix-Marseille) under Gladys’ sandbox conditions, with a peak at 138 MB of memory, but not yet in a real instance.

Coded with the help of Claude Code, based on the code of my Tisséo integration. Independent project, not affiliated with [transport.data.gouv.fr](http://transport.data.gouv.fr) or the networks.

Repository: [GitHub - guim31/gladys-gtfs: Next departures and disruptions for any French public transport network (GTFS / GTFS-RT from transport.data.gouv.fr) in Gladys Assistant · GitHub](https://github.com/guim31/gladys-gtfs)

Let me know which network you try it on 🙂

---

<div class="post-metadata">

**Author:** ![ruegerth](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/r/dbc845/32.png) [@ruegerth](https://community.gladysassistant.com/u/ruegerth)\
**Post date:** [October 14, 2026, 9:28am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/2 "2026-10-14T09:28:55Z")

</div>

Hey @guim31 you little rascal 😂

What about worldwide? :

 ![belastungstest_toulouse](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/2/e/2ef7bf7c2a35746d4cd8f0b2f04e3f4d8ad7fab5.png)

My load test from today… and since I have grown fond of Toulouse in the last few days, I went to 64 Boulevard Pierre Semard Toulouse, better known as Matabiau, for testing.

And here the same result for Heidelberg Hauptbahnhof:

 ![belastungstest_heidelberg](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/b/6/b62553fa6cf9821206a48dc069eecb4259dc580f.png)

Everything included, urban buses (BUS), interregional bus lines (COACH), urban trams (TRAM), interregional trains (FERN), local commuter trains (S-BAHN).

Ferries (FÄHRE) are also displayed, here the example of the Elbphilharmonie in Hamburg:

 ![belastungstest_hamburg](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/a/b/ab18b9231f68b2d26acc8d5e74bab5a27f9a6f60.png)

and after someone here pointed out to me that there might also be cable cars or similar:

Here is the city of Heidelberg with a funicular/cable car (FUNICULAR):

 ![belastungstest_seilbahn](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/2/4/242e552dd207939adca82ed774449eff52327860.png)

and what about our North American friends, here Quebec in Canada:

 ![belastungstest_quebec](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/1/b/1b352f59c3eb99e84149c0bacde9ebfb86dd833e.png)

1.) Only internet access required

2.) No downloads

3.) Update controllable

4.) Radius controllable

5.) Location by geodata, planned: city name

If everything goes well, then I will be done with the tests today and then I will, as an absolute beginner in GitHub, briefly familiarize myself with creating an external integration or simply hand over the project to someone who masters it…

Greetings

Tom

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 14, 2026, 10:36am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/3 "2026-10-14T10:36:20Z")

</div>

I just found out that the real-time data for the Ginko network in Besançon is on this opendata platform. I’m going to test your integration, and if it works, it’ll be another Node-RED hack I can get rid of!

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 14, 2026, 10:48am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/4 "2026-10-14T10:48:03Z")

</div>

So actually, the integration does find the Ginko network in Besançon, but it’s only the theoretical schedules in GTFS format.  
Real-time schedules are mentioned on the [transport.data.gouv.fr](http://transport.data.gouv.fr) website, but in SIRI format. The details explain that it goes through an API requiring a key.

On the website, there’s this:

 ![IMG_8439](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/c/1/c17a3a00389fc81c3e986bcbcedfab87abf261d8.jpeg)

And the details of the SIRI interface are here: [Jeu de données ouvert SIRI - API SIRI pour Réseau urbain Ginko - CU Grand Besançon Métropole](https://transport.data.gouv.fr/resources/81742)

I have such a key, that’s how I make my node-red tinkering work.  
Do you think, @guim31, that you could complete your integration with this format?

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 14, 2026, 11:38am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/5 "2026-10-14T11:38:26Z")

</div>

@StephaneB well spotted, and yes it’s doable. I checked: Ginko isn’t alone in this case, around twenty networks publish their real-time data only in SIRI on [transport.data.gouv.fr](http://transport.data.gouv.fr) (Strasbourg, Pays de la Loire, Idelis, TUB…). I’ll get to it: an optional field for the network key, and the integration will fetch the SIRI stops when there’s no GTFS-RT. Your stops remain the same, nothing to recreate. I’ll let you know as soon as it’s ready, and your Node-RED tinkering will be the perfect test ^^

@ruegerth nice load test 😃 Which source are you using to get Germany, Hamburg, and Quebec without downloading anything? If it’s an open global API, I’m interested, whether to complement this one or for your own integration.

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 14, 2026, 2:21pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/6 "2026-10-14T14:21:59Z")

</div>

@StephaneB it’s online: the **1.1.0** reads the real-time **SIRI** and **SIRI Lite** of networks that don’t have GTFS-RT, including Ginko.

To activate it: in the integration configuration, field **« SIRI API Keys »** , add a line `Ginko = your-key`. The key never appears in the logs. Your stops remain the same: followed trips are displayed without the « ≈ » when they are in real-time, and Ginko disruptions feed the traffic info and the trigger.

I was able to test from my home against the real servers: Ginko responds well, but with no stops when you don’t have a key, so you’re going to make the first real test ^^ If the integration reports an unknown stop or a rejected key, let me know.

By the way, it also works for about fifteen other networks in the same situation: Pays de la Loire (Aléop and the urban networks of the aggregate), Saint-Brieuc (TUB), several networks in Nouvelle-Aquitaine (Tanlib, Calibus, R’Bus, TuT…), Strasbourg with a CTS key… Small reservation: the Okina platform, behind many of these networks, only accepts one request every 30 seconds or so. It’s better to follow one or two stops there, not ten.

---

<div class="post-metadata">

**Author:** ![ruegerth](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/r/dbc845/32.png) [@ruegerth](https://community.gladysassistant.com/u/ruegerth)\
**Post date:** [October 14, 2026, 2:42pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/7 "2026-10-14T14:42:09Z")

</div>

@Guim31: Look here 😂

> [@External integration - Worldwide departure](https://community.gladysassistant.com/t/externe-integration-weltweite-abfahrt/11174):
>
> Hello everyone, who wants to test my new and first widget. Created without Claude. Currently still with some shortcomings, but: Current procedure: Installation only directly from Github: First shortcoming: The widget configuration only comes when adding the widget. Currently, only one location can be displayed; you need your geolocation. The other values are self-explanatory, so keep the search radius at the beginning between 100 and 2000 meters, the display of max hit…

Best regards

---

<div class="post-metadata">

**Author:** ![ruegerth](https://gladys-assistant-community.b-cdn.net/letter_avatar_proxy/v4/letter/r/dbc845/32.png) [@ruegerth](https://community.gladysassistant.com/u/ruegerth)\
**Post date:** [October 14, 2026, 2:47pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/8 "2026-10-14T14:47:51Z")

</div>

> [@StephaneB](#):
>
> Besançon

For everyone:

Besançon gives me:

 ![besancon](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/1/1/11b3551deea5e42ab124f803b4f9b5e767d83ace.png)

Note: I am already working on an object Object. The following settings were used:

47.242222°, 6.021389°

Regards

Tom

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 16, 2026, 6:26pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/9 "2026-10-16T18:26:04Z")

</div>

> [@guim31](#):
>
> @StephaneB it’s online: the **1.1.0** reads the real-time **SIRI** and **SIRI Lite** of networks that don’t have GTFS-RT, including Ginko.

I tested it. It’s progressing well, but here are my feedback:

- I wanted to modify the network I had already configured, but you can’t. You can only add and delete, and there isn’t even a list of already configured networks to know where you are.
- It’s strange to add the SIRI API key in the Configuration section, when it’s specific to the network.
- The API key field is therefore intended to be able to write «&nbsp;Network1 = API 1; Network 2 = API 2&nbsp;». Except that it’s a field that masks what you type, so it’s complicated… Maybe it’s even more reason to define the API key in the «&nbsp;Add a network&nbsp;» action
- In the «&nbsp;Search for a stop&nbsp;» action, if you don’t fill in anything to do the «&nbsp;near me&nbsp;» search, the selection of the home is missing when you have several
- At the bus stop near my house, there are 2 lines x 2 directions x (the next bus + the following one). I hadn’t entered anything in the ‹&nbsp;Line&nbsp;› field, so it discovered the stop with 8 features. I should have entered only the lines that interested me, but at this stage I didn’t know them. It would be great if their names were displayed when you have performed the «&nbsp;add a stop&nbsp;» action.
- And ideally, it would be great to be able to add only one ‹&nbsp;line+direction&nbsp;› pair. In front of my house. I never take the line that goes towards the west…

Then when I add the widget to the dashboard, I only have the theoretical times. For example:

 ![IMG_8450](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/5/3/53cc4fbe38bc8edbe04a13a3445a66f14c96caf0.jpeg)

In the integration logs, there is this:

```auto
[2026-10-16T18:01:43.871Z] [INFO] [gtfs] Stop added: 4 Vents (Ginko)
[2026-10-16T18:01:53.074Z] [WARN] [gtfs-feed] Ginko: realtime (SIRI) unavailable: api.ginko.voyage: answers without any stop nor departure

```

And I also think that the widget could be better displayed, so that the line name is on two lines to avoid truncating the passage times

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 16, 2026, 8:30pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/10 "2026-10-16T20:30:16Z")

</div>

Thanks @StephaneB for this very complete feedback!

The **1.2.0** is online, with almost everything you asked for:

- **SIRI API key by network** : «&nbsp;Add a network&nbsp;» now has a **SIRI API Key** field. No need for the «&nbsp;Network = key&nbsp;» format in the configuration (it still works).
- **Modify a network** : Add it again by filling in only what changes (name, stream, key): it is updated and its stops remain. The list of networks and stops already added is in **View monitoring** , the last action on the page.
- **Multiple homes** : «&nbsp;Search for a stop&nbsp;» has a **Home** field, and the response cites the other homes.
- **Lines and directions** : «&nbsp;Add a stop&nbsp;» now lists the lines and directions of the stop. You can keep only one with `3 > Chazal` in «&nbsp;Lines&nbsp;» (line 3, direction Hauts du Chazal). Add the stop again to reduce your device, then «&nbsp;Update&nbsp;» in the Discovery tab.

For Ginko’s real-time, the log message means the server responds, but empty: that’s what it does without a key, or with a key it doesn’t recognize. Did you ask for one from Ginko support? If so, put it back in the new field and let me know what «&nbsp;View monitoring&nbsp;» gives 🙂

For the widget, the layout of the lines comes from Gladys, not the integration: I can’t make the name wrap on two lines on my side. Keeping only your directions should already leave more room.

To enjoy it, update from Gladys.

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 17, 2026, 8:37am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/11 "2026-10-17T08:37:48Z")

</div>

Thanks @guim31 for these updates

My feedback:

- The ‹&nbsp;Siri API key&nbsp;› field in the network addition is better. But I don’t see the point of keeping it in the configuration section. I find it confusing.
- For the ‹&nbsp;home&nbsp;› field to search for nearby stops, it works well. But it would be better to be able to choose the home in a selector rather than having to type its name.
- For adding a stop by configuring the line and direction, it works. But you have to ‹&nbsp;guess&nbsp;› how the direction is named. It would be practical if the ‹&nbsp;search for a stop&nbsp;› action listed the lines and directions, and in the format ‹&nbsp;line \> direction&nbsp;› since it’s the expected format when adding a stop, rather than ‹&nbsp;line → direction&nbsp;›.

And above all, it’s strange for the real-time operation. I’m sure of my API key, it works when I build my HTTP request in Node-RED. Would it help if I sent you my key in a private message for your tests?

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 17, 2026, 9:35am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/12 "2026-10-17T09:35:53Z")

</div>

Thanks @StephaneB, these feedbacks are perfect!

**1.3.0** is online:

- **SIRI Key** : It is now only in « Add a network ». The configuration field has disappeared, and a key entered there automatically moves to its network.
- **Home** : It is now a list of your homes (Gladys 5.2.0 is required).
- **Directions** : « Add a stop » writes them in the format of « Lines » (`3 > Hauts du Chazal`), ready to copy. I cannot list them from « Search a stop »: to keep it light, the integration only reads detailed schedules from followed stops. The simplest is to add the stop once with all its lines, copy the desired directions, then add it again with them.

For real-time, no need to send me your key 🙂 Rather, tell me how your request is made in node-red, while masking the key: the called address, and where the key goes (URL parameter, header, or `RequestorRef` in the XML). Today, the integration puts it in the `RequestorRef` of the SOAP request. If Ginko expects it in the URL, you can already try entering `apiKey=your-key` (with the name of the parameter of your request) in the « SIRI API Key » field: the integration will then put it there.

To take advantage of it, update from Gladys.

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 17, 2026, 11:27am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/13 "2026-10-17T11:27:24Z")

</div>

Do you have the format of a request to Ginko’s real-time API:  
[https://api.ginko.voyage/TR/getTempsLieu.do?apiKey=XXX&nb=1&nom=4%25vents](https://api.ginko.voyage/TR/getTempsLieu.do?apiKey=XXX&nb=1&nom=4%25vents)

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 17, 2026, 11:39am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/14 "2026-10-17T11:39:17Z")

</div>

Thanks @StephaneB, that was exactly the info I needed!

I queried Ginko’s SIRI server: just like the request you use in node-red, it expects the key in the `apiKey` parameter of the address. The integration was putting it in the XML of the request, where Ginko can’t see it. And when the key is missing, it responds with a small error message that the integration took for an empty response.

This is fixed in **1.3.1** : the key now goes in `apiKey`, and a rejected key is displayed as such in «&nbsp;View Monitoring&nbsp;». Nothing to change on your side: update from Gladys, and real-time should arrive at the next refresh. Let me know if it’s good 🙂

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 17, 2026, 1:27pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/15 "2026-10-17T13:27:40Z")

</div>

My feedback on this 1.3.1:

1. Real-time doesn’t work.

I have an error «&nbsp;&nbsp;» in the log. But I’m sure of my API key which works in my HTTP requests, and I changed the API key to «&nbsp;BIDON&nbsp;» and then put the correct key back, without changing anything. That said, strange point: my full logs (in the log tab) are:

```auto
[2026-10-17T12:05:13.878Z] [INFO] Starting the GTFS public transport integration...
[2026-10-17T12:05:15.644Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-10-17T12:05:26.652Z] [WARN] [gtfs-feed] Ginko: realtime (SIRI) unavailable: api.ginko.voyage: Error: You do not have the necessary rights for this service.
[2026-10-17T12:10:54.285Z] [INFO] [gtfs] Stop added: 4 Vents (Ginko)
[2026-10-17T12:12:04.483Z] [INFO] [gtfs] Stop updated: 4 Vents (Ginko)
[2026-10-17T12:16:39.495Z] [INFO] [gtfs] Network updated: Ginko (tdg80590)
[2026-10-17T12:18:02.567Z] [INFO] [gtfs] Network updated: Ginko (tdg80590)

```

You can see the ‹&nbsp;starting&nbsp;› just after the update to 1.3.1, then a real-time failure, and below the two ‹&nbsp;network updated&nbsp;› correspond to the API key changes (first «&nbsp;BIDON&nbsp;» then the real key), but there are no new attempts to connect to the real-time API (I expected at least a new line «&nbsp;unavailable&nbsp;» with the key «&nbsp;BIDON&nbsp;».  
Do I need to completely delete the network to reconfigure it?

Another thing: in the device tab, when I open the ‹&nbsp;technical&nbsp;› section, there is nothing in the realtime\_urls line, I don’t know if it’s normal:

 ![image](https://gladys-assistant-community.b-cdn.net/uploads/default/original/3X/0/3/03969f12ba371b10fd0e8e104443ba6a5f76e078.png)

1. improve the widget

The current widget only allows you to choose one stop and displays it as is, with the already mentioned disadvantage of a long name that causes the waiting times to be truncated.

I suggest that this widget works like the device widget: be able to add multiple stops, be able to rename the display label of the stop, and be able to order the stops

1. rename the extension

It’s a detail, but shouldn’t the extension be called «&nbsp;Public Transport (GTFS and SIRI)&nbsp;»?

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 17, 2026, 2:11pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/16 "2026-10-17T14:11:57Z")

</div>

Thanks @StephaneB, your log is very helpful!

The line « You do not have the necessary rights for this service » comes from Ginko’s server itself. Before version 1.3.1, it said it couldn’t see a key. Now, it recognizes the key, but it doesn’t open the SIRI service. Your key works with `getTempsLieu` (their in-house API), but real-time SIRI seems to be a separate service at Ginko. The simplest solution: ask their support to activate SIRI on your key. Nothing to reconfigure on your side, you can keep the network as is.

For your two other questions:

- **No new line after changing the key** : this is intentional. To avoid filling the log, the same failure is only written once, then a single line when it comes back. The last error remains visible in « View Monitoring ».
- **`realtime_urls` empty** : this is normal. This field is for GTFS-RT feeds, and Ginko doesn’t have any, only SIRI.

The widget with multiple stops and the name « GTFS and SIRI », I’ll note that, I’ll look into it 🙂

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 17, 2026, 2:32pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/17 "2026-10-17T14:32:25Z")

</div>

ok, I’m making a request to Ginko to enable the Siri API

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 18, 2026, 9:46am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/18 "2026-10-18T09:46:40Z")

</div>

@guim31 While browsing the page [Open data du réseau Ginko](https://api.ginko.voyage/#prez), I understand that Ginko provides only one API key for GTFS and for SIRI. So the one I have should work

I also discovered that there is actually a GTFS-RT API, described on [Open data du réseau Ginko](https://api.ginko.voyage/#gtfsrt) (even if it is not referenced on the site [transport.data.gouv.fr](http://transport.data.gouv.fr)). As the requests start with `https://api.ginko.voyage/GTFSRT/tripUpdates.do?apiKey=XXX`, I added `https://api.ginko.voyage/GTFSRT/tripUpdates.do` in the «&nbsp;GTFS-RT URL&nbsp;» field in the config page.

But the information displayed in the widget remains theoretical, no real-time…

I assume this is because Ginko’s GTFS-RT API requires an API key, whereas you only provided the notion of API key for the SIRI interface?

---

<div class="post-metadata">

**Author:** ![guim31](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/guim31/32/4840_2.png) [@guim31](https://community.gladysassistant.com/u/guim31)\
**Post date:** [October 18, 2026, 10:20am UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/19 "2026-10-18T10:20:51Z")

</div>

Well spotted @StephaneB, thanks for the tip!

The integration only set the key on the SIRI. With **1.3.2** , the network key also goes to the GTFS-RT streams of the platforms that request one, including Ginko (in the `apiKey` parameter). The field is now called **Network API Key**.

Since you have already added `https://api.ginko.voyage/GTFSRT/tripUpdates.do` in « GTFS-RT URL » and your key in the network, you just need to update from Gladys. Real-time should arrive at the next refresh, and « Display monitoring » should indicate « Real-time: updated … ». Let me know if it works 🙂

---

<div class="post-metadata">

**Author:** ![StephaneB](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/stephaneb/32/15443_2.png) [@StephaneB](https://community.gladysassistant.com/u/StephaneB)\
**Post date:** [October 18, 2026, 1:49pm UTC](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150/20 "2026-10-18T13:49:54Z")

</div>

Updated integration but still no real-time data.

In ‹&nbsp;display monitoring&nbsp;›:  
Networks: 1  
■ Ginko [tdg80590]  
Schedules: downloaded on 17/10/2026, known passages until 25/10/2026.  
Real-time: not yet read.  
Monitored stops: 2  
• Bouquet de Soleils [st\_bouquet\_de\_soleils] (12 → Prés de Vaux)  
• 4 Vents [st\_4\_vents] (L4)  
Last error: api.ginko.voyage: HTTP 403

In the log:

```auto
[2026-10-18T13:07:04.406Z] [INFO] Starting the GTFS public transport integration...
[2026-10-18T13:07:05.420Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
[2026-10-18T13:07:15.009Z] [WARN] [gtfs-feed] Ginko: realtime feed unavailable: api.ginko.voyage: HTTP 403

```

[Next page](https://community.gladysassistant.com/t/integration-externe-transports-en-commun-gtfs/11150.md?page=2)
