The Dublin Bikes scheme, run by the French advertising multinational J.C. Decaux, has been in operation for about 7 weeks now. J.C. Decaux report that over 16,000 people have signed up so the scheme seems to be popular. It has certainly been very useful to me on a few occasions.

Shortly after the scheme began I noticed that there was an iPhone app, written by Fusio which can be used to find out how many bikes are docked at each of the 40 stations around the city in "real-time". Unfortunately J.C. Decaux succeeded in getting Fusio to withdraw their app only a few days after it appeared but the app gave me an idea. I thought it might be interesting to keep a record of how many bikes were available at the various stations around the city and see what I could learn by analysing the data at a later date.

I discovered that the information I was interested in is available on the Dublin Bikes website and that the data could be easily obtained at URLs like this. I thus set a simple python script running to poll these URLs about once a minute for each station. This script has been running since 19 Sep 2009 so I have 40 days of data at the time of writing, 29 Oct 2009. Since I've had some spare time recently, I thought that it was about time to try analysing my data a little.

In addition to gathering the data from the web, I decided to estimate how long it takes for an event (i.e. a bike being docked/undocked) to reach the above URLs. I thus spent about 15 minutes beside a station on the way home from work one evening and watched as bikes were docked/undocked while simultaneously polling the data from the web. It looked like the data took about 90 seconds to update.

Total number of available bikes as a function of time

In the middle of the night when it is not possible to undock a bike and when most people have returned their bike, the red line moves horizontally. If all bikes were always returned to a station at night and no bikes were ever decomissioned then the red line should always meet the blue line at night. Evidentally this is not the case. We can see from the blue line that the maximum number of bikes that has ever been available is 449. However this was only achieved on one date 11 Oct 2009 and since 22 Oct 2009, there have never been more than 425 bikes available. It looks like J.C. Decaux have either decomissioned some bikes or they keep a cache of about 25 bikes off the streets. (Incidentally there are 795 docking pillers distributed across the 40 stations around the city.)
Note also the three smallest local minima taken by the red line (the obvious downward spikes). These occur on the dates: 6, 18, 26 Oct 2009. These do not represent enormous numbers of people suddenly undocking bikes. They either mean that most of the bike stations were temporarily suspended on these dates or that J.C. Decaux's website was not displaying the correct number of available bikes. At least for 26 Oct 2009 the former explanation is probably the case. This was a bank holiday Monday and also the day of the Dublin city marathon. I walked by a couple of bike stations on this day and noted that they were suspended.

Other than the above three dates there have never been fewer than 300 bikes available, meaning that no more than about 150 bikes have ever been in use. We can thus see that at peak times bike usage reaches about 33%.

Let's zoom in and take a closer look at a region of the above chart.

Total number of available bikes as a function of time

If we look closely it look like there is a fairly consistent pattern of usage in the above. For example it looks like there usually tend to be 3 local minima on weekdays. I thought I'd spend a little time investigating this.

For this post, I decided to focus on the first of the above two types of busyness. I thus divided the time of day up into 5 minute chunks and looked at the average number of bikes available (i.e. docked at a station) across all stations for each little 5 minute chunk. For obvious reasons, I chose to carry this out separately for weekdays and weekends. I graphed the results and obtained the below results:Times of day with the greatest number of bikes in use (i.e. the fewest bikes docked at the stations). Times of day when the turnover of bikes was the highest (i.e. the rate at which bikes are docked and undocked is the greatest).

Average number of available bikes on weekdays as function of time of day

Average number of available bikes on weekends as function of time of day

The weekday graph is the most interesting, showing clearly (I think) that people are using these bikes to go to and return from work and to a lesser extent, to get around at lunchtime. The heaviest used times are: 08:50-08:55, 13:20-13:25 and 17:50-17:55.
One thing I like about the above simple results is that they give us information about the average length of the working day in Dublin. With this in mind, the following questions occurred to me:

How do the above results compare to those for, say, Paris (particularly as the French are often alleged to work shorter hours than other countries). Perhaps I will start recording that Parisian data after all! Another way to continue these investigations would be to look at the busiest times of day on a per station basis. The stations grouped around the IFSC come to mind. This is partly because I work there and partly because I suspect the IFSC is a fairly homogeneous area with a concentration of people working slightly longer hours than the average for the city. I think it would be interesting if it was possible to demonstrate/quantify/refute this claim using this bike data. (It is worth pointing out that I would probably need more data to get statistically significant results here: the fewer the stations, the "noisier" the data. For example, all else being equal, if there are 4 IFSC stations then to compensate for using 4 stations instead of 40, I would need data for 60 weeks of data instead of 6.) A final thought here is to try to estimate if, on average, people leave work earlier/later on Fridays or arrive earlier/later on Mondays etc.

Carrying out the above I found that the busiest station was Custom House Quay and the quietest (by far) was Hardwicke Street. In an attempt to give some idea of the distribution of this per-station-busyness I present a table of relative busyness below. The number opposite each station is its busyness relative to Custom House Quay.

List of stations in increasing order of relative busyness for full day.

Hardwicke street | 0.20 |

Blessington Street | 0.31 |

Parnell Square North | 0.35 |

Georges Quay | 0.36 |

Greek Street | 0.40 |

Fitzwilliam Square West | 0.43 |

Bolton Street | 0.44 |

Cathal Brugha Street | 0.46 |

Eccles Street | 0.48 |

Custom House | 0.49 |

Golden Lane | 0.51 |

Ormond Quay Upper | 0.52 |

Leinster Street South | 0.53 |

James Street East | 0.54 |

Mountjoy Square West | 0.56 |

Townsend Street | 0.56 |

Christchurch Place | 0.57 |

Earlsfort Terrace | 0.57 |

St. Stephen's Green East | 0.57 |

Parnell Street | 0.59 |

Merrion Square West | 0.62 |

High Street | 0.62 |

Merrion Square East | 0.63 |

Jervis Street | 0.65 |

Dame Street | 0.65 |

Fownes Street Upper | 0.65 |

Talbot Street | 0.65 |

Molesworth Street | 0.67 |

Portobello Harbour | 0.75 |

St. Stephen's Green South | 0.76 |

Charlemont Street | 0.77 |

Wilton Terrace | 0.79 |

Princes Street / O'Connell Street | 0.82 |

Grantham Street | 0.87 |

Chatham Street | 0.89 |

Exchequer Street | 0.90 |

Smithfield | 0.91 |

Herbert Place | 0.94 |

Pearse Street | 0.95 |

Custom House Quay | 1.00 |

Station | Busyness rank full day | Busyness rank 8-10am weekdays | Emptiness rank | Fullness rank |
---|---|---|---|---|

(higher rank means busier) | (higher rank means busier) | (higher rank means more often empty) | (higher rank means more often full) | |

Blessington Street | 2 | 3 | 28 | 15 |

Bolton Street | 7 | 12 | 6 | 22 |

Cathal Brugha Street | 8 | 8 | 20 | 13 |

Charlemont Street | 31 | 36 | 11 | 39 |

Chatham Street | 35 | 31 | 33 | 21 |

Christchurch Place | 17 | 18 | 7 | 8 |

Custom House | 10 | 15 | 3 | 35 |

Custom House Quay | 40 | 39 | 27 | 30 |

Dame Street | 25 | 17 | 22 | 27 |

Earlsfort Terrace | 18 | 27 | 32 | 28 |

Eccles Street | 9 | 7 | 19 | 31 |

Exchequer Street | 36 | 25 | 34 | 16 |

Fitzwilliam Square West | 6 | 11 | 31 | 17 |

Fownes Street Upper | 26 | 14 | 5 | 24 |

Georges Quay | 4 | 9 | 4 | 29 |

Golden Lane | 11 | 16 | 8 | 3 |

Grantham Street | 34 | 37 | 13 | 36 |

Greek Street | 5 | 6 | 24 | 38 |

Hardwicke street | 1 | 1 | 36 | 1 |

Herbert Place | 38 | 38 | 14 | 25 |

High Street | 22 | 22 | 23 | 26 |

James Street East | 14 | 19 | 38 | 18 |

Jervis Street | 24 | 5 | 9 | 11 |

Leinster Street South | 13 | 13 | 29 | 23 |

Merrion Square East | 23 | 24 | 35 | 19 |

Merrion Square West | 21 | 30 | 40 | 14 |

Molesworth Street | 28 | 26 | 37 | 6 |

Mountjoy Square West | 15 | 23 | 18 | 34 |

Ormond Quay Upper | 12 | 10 | 25 | 4 |

Parnell Square North | 3 | 2 | 12 | 2 |

Parnell Street | 20 | 4 | 2 | 12 |

Pearse Street | 39 | 40 | 16 | 5 |

Portobello Harbour | 29 | 33 | 15 | 40 |

Princes Street / O'Connell Street | 33 | 20 | 26 | 9 |

Smithfield | 37 | 34 | 17 | 37 |

St. Stephen's Green East | 19 | 21 | 39 | 10 |

St. Stephen's Green South | 30 | 35 | 30 | 7 |

Talbot Street | 27 | 29 | 10 | 33 |

Townsend Street | 16 | 28 | 1 | 32 |

Wilton Terrace | 32 | 32 | 21 | 20 |

Hardwicke Street stands out a mile. It is the least busiest, the least often full and almost the most often empty. Other notable stations are the joint busiest: Custom House Quay and Pearse Street. Also, Merrion Square West is most often empty, Townsend Street is least often empty and Portobello Harbour is most often full.

Do particularly quiet days correlate with mm rainfall statistics? How much is total daily usage increasing as a function of time? (I've actually looked at this briefly but it's quite noisy and would be better studied with several months of data.) Can we identify particular stations as bike-sources (where bikes tend to be taken from rather than returned to) or vice-versa? Perhaps this question might be most interesting at critical times of day, like 8-9am on weekdays. J.C. Decaux has vans redistributing bikes around the city to try to deal with bike clustering. Can we see the results of this van-action in our data (e.g. occasions when the number of bikes at a station with particularly few bikes suddenly jumps) and estimate how much of this is taking place? (and why are they neglecting poor Hardwicke Street?) Is a particular day of the week busiest? Could I produce a nice heat-map type animation of the bikes moving around the city? (Ben suggested this interesting idea.)

I am indebted to Richard Bean for pointing out that some of the URLs have changed. For example the old app's URLs like this or this no longer work. Furthermore J.C.Decaux have gone to some trouble to put some rather flimsy security in place on their new app, presumably in an attempt to frustrate attempts at using their API outside of their own app. I thought I would record the details of how to get around this pseudo-security here for the benefit of anyone interested in using the 'allbikesnow' data.

The base URL is here but you need to jump through a couple of hoops to get it to work for you. First you need a token which you can obtain by visiting this URL. Tokens seem to be valid for 10 minutes. For example, I just queried and received the following JSON response:

```
{"token":"8fc12d45fd83fbc12958c3e6822e2b8149ea4802","endValidity":"2015-06-20T16:55:19Z"}
```

With this token in hand, you can now get the bike data by substituting it
into URLs like this.
For example I just queried and got the following JSON response:
```
{"tstp":1434818794623,"ststates":[{"nb":1,"state":"open","connstate":"connected","freebk":7,"freebs":22,"lastCheck":"2015-06-20T16:45:04Z"},{"nb":2,"state":"open","connstate":"connected","freebk":3,"freebs":17,"lastCheck":"2015-06-20T16:44:41Z"},{"nb":3,"state":"open","connstate":"connected","freebk":20,"freebs":0,"lastCheck":"2015-06-20T16:42:36Z"},{"nb":4,"state":"open","connstate":"connected","freebk":19,"freebs":1,"lastCheck":"2015-06-20T16:40:36Z"},{"nb":5,"state":"open","connstate":"connected","freebk":6,"freebs":34,"lastCheck":"2015-06-20T16:43:15Z"},{"nb":6,"state":"open","connstate":"connected","freebk":16,"freebs":4,"lastCheck":"2015-06-20T16:46:30Z"},{"nb":7,"state":"open","connstate":"connected","freebk":13,"freebs":16,"lastCheck":"2015-06-20T16:42:25Z"},{"nb":8,"state":"open","connstate":"connected","freebk":17,"freebs":13,"lastCheck":"2015-06-20T16:39:40Z"},{"nb":9,"state":"open","connstate":"connected","freebk":14,"freebs":10,"lastCheck":"2015-06-20T16:46:10Z"},{"nb":10,"state":"open","connstate":"connected","freebk":13,"freebs":3,"lastCheck":"2015-06-20T16:44:08Z"},{"nb":11,"state":"open","connstate":"connected","freebk":1,"freebs":29,"lastCheck":"2015-06-20T16:38:08Z"},{"nb":12,"state":"open","connstate":"connected","freebk":1,"freebs":19,"lastCheck":"2015-06-20T16:44:59Z"},{"nb":13,"state":"open","connstate":"connected","freebk":0,"freebs":30,"lastCheck":"2015-06-20T16:40:45Z"},{"nb":14,"state":"open","connstate":"connected","freebk":16,"freebs":14,"lastCheck":"2015-06-20T16:45:20Z"},{"nb":15,"state":"open","connstate":"connected","freebk":1,"freebs":15,"lastCheck":"2015-06-20T16:46:33Z"},{"nb":16,"state":"closed","connstate":"connected","freebk":0,"freebs":20,"lastCheck":"2015-06-20T16:45:32Z"},{"nb":17,"state":"open","connstate":"connected","freebk":0,"freebs":20,"lastCheck":"2015-06-20T16:42:36Z"},{"nb":18,"state":"open","connstate":"connected","freebk":6,"freebs":24,"lastCheck":"2015-06-20T16:38:08Z"},{"nb":19,"state":"open","connstate":"connected","freebk":13,"freebs":17,"lastCheck":"2015-06-20T16:46:01Z"},{"nb":20,"state":"open","connstate":"connected","freebk":3,"freebs":27,"lastCheck":"2015-06-20T16:37:41Z"},{"nb":21,"state":"open","connstate":"connected","freebk":11,"freebs":19,"lastCheck":"2015-06-20T16:46:03Z"},{"nb":22,"state":"open","connstate":"connected","freebk":5,"freebs":15,"lastCheck":"2015-06-20T16:46:33Z"},{"nb":23,"state":"open","connstate":"connected","freebk":23,"freebs":7,"lastCheck":"2015-06-20T16:46:15Z"},{"nb":24,"state":"open","connstate":"connected","freebk":11,"freebs":4,"lastCheck":"2015-06-20T16:39:45Z"},{"nb":25,"state":"open","connstate":"connected","freebk":3,"freebs":27,"lastCheck":"2015-06-20T16:44:56Z"},{"nb":26,"state":"open","connstate":"connected","freebk":11,"freebs":9,"lastCheck":"2015-06-20T16:39:12Z"},{"nb":27,"state":"open","connstate":"connected","freebk":3,"freebs":16,"lastCheck":"2015-06-20T16:45:07Z"},{"nb":28,"state":"open","connstate":"connected","freebk":9,"freebs":21,"lastCheck":"2015-06-20T16:43:05Z"},{"nb":29,"state":"open","connstate":"connected","freebk":29,"freebs":0,"lastCheck":"2015-06-20T16:41:53Z"},{"nb":30,"state":"open","connstate":"connected","freebk":18,"freebs":2,"lastCheck":"2015-06-20T16:41:26Z"},{"nb":31,"state":"open","connstate":"connected","freebk":11,"freebs":9,"lastCheck":"2015-06-20T16:46:31Z"},{"nb":32,"state":"open","connstate":"connected","freebk":23,"freebs":7,"lastCheck":"2015-06-20T16:44:25Z"},{"nb":33,"state":"open","connstate":"connected","freebk":18,"freebs":4,"lastCheck":"2015-06-20T16:46:29Z"},{"nb":34,"state":"open","connstate":"connected","freebk":24,"freebs":6,"lastCheck":"2015-06-20T16:46:18Z"},{"nb":35,"state":"open","connstate":"connected","freebk":10,"freebs":20,"lastCheck":"2015-06-20T16:46:12Z"},{"nb":36,"state":"open","connstate":"connected","freebk":17,"freebs":23,"lastCheck":"2015-06-20T16:46:11Z"},{"nb":37,"state":"open","connstate":"connected","freebk":11,"freebs":19,"lastCheck":"2015-06-20T16:39:57Z"},{"nb":38,"state":"open","connstate":"connected","freebk":25,"freebs":14,"lastCheck":"2015-06-20T16:45:55Z"},{"nb":39,"state":"open","connstate":"connected","freebk":5,"freebs":15,"lastCheck":"2015-06-20T16:45:57Z"},{"nb":40,"state":"open","connstate":"connected","freebk":14,"freebs":7,"lastCheck":"2015-06-20T16:44:15Z"},{"nb":41,"state":"open","connstate":"connected","freebk":1,"freebs":19,"lastCheck":"2015-06-20T16:45:35Z"},{"nb":42,"state":"open","connstate":"connected","freebk":23,"freebs":7,"lastCheck":"2015-06-20T16:46:25Z"},{"nb":43,"state":"open","connstate":"connected","freebk":9,"freebs":21,"lastCheck":"2015-06-20T16:45:17Z"},{"nb":44,"state":"open","connstate":"connected","freebk":28,"freebs":2,"lastCheck":"2015-06-20T16:36:49Z"},{"nb":45,"state":"open","connstate":"connected","freebk":30,"freebs":0,"lastCheck":"2015-06-20T16:37:09Z"},{"nb":46,"state":"open","connstate":"connected","freebk":28,"freebs":7,"lastCheck":"2015-06-20T16:42:42Z"},{"nb":47,"state":"open","connstate":"connected","freebk":0,"freebs":40,"lastCheck":"2015-06-20T16:42:30Z"},{"nb":48,"state":"open","connstate":"connected","freebk":12,"freebs":28,"lastCheck":"2015-06-20T16:37:09Z"},{"nb":49,"state":"open","connstate":"connected","freebk":11,"freebs":28,"lastCheck":"2015-06-20T16:45:25Z"},{"nb":51,"state":"open","connstate":"connected","freebk":40,"freebs":0,"lastCheck":"2015-06-20T16:42:01Z"},{"nb":52,"state":"open","connstate":"connected","freebk":27,"freebs":5,"lastCheck":"2015-06-20T16:45:07Z"},{"nb":53,"state":"open","connstate":"noresponse","freebk":4,"freebs":36,"lastCheck":"2015-06-20T16:46:16Z"},{"nb":54,"state":"open","connstate":"connected","freebk":1,"freebs":32,"lastCheck":"2015-06-20T16:41:14Z"},{"nb":55,"state":"open","connstate":"connected","freebk":0,"freebs":36,"lastCheck":"2015-06-20T16:40:24Z"},{"nb":56,"state":"open","connstate":"connected","freebk":2,"freebs":38,"lastCheck":"2015-06-20T16:45:37Z"},{"nb":57,"state":"open","connstate":"connected","freebk":2,"freebs":20,"lastCheck":"2015-06-20T16:40:25Z"},{"nb":58,"state":"open","connstate":"connected","freebk":9,"freebs":31,"lastCheck":"2015-06-20T16:40:50Z"},{"nb":59,"state":"open","connstate":"connected","freebk":2,"freebs":18,"lastCheck":"2015-06-20T16:38:52Z"},{"nb":60,"state":"open","connstate":"connected","freebk":28,"freebs":2,"lastCheck":"2015-06-20T16:43:36Z"},{"nb":61,"state":"open","connstate":"connected","freebk":13,"freebs":12,"lastCheck":"2015-06-20T16:43:42Z"},{"nb":62,"state":"open","connstate":"connected","freebk":6,"freebs":34,"lastCheck":"2015-06-20T16:38:39Z"},{"nb":63,"state":"open","connstate":"connected","freebk":9,"freebs":26,"lastCheck":"2015-06-20T16:44:29Z"},{"nb":64,"state":"open","connstate":"connected","freebk":11,"freebs":29,"lastCheck":"2015-06-20T16:46:09Z"},{"nb":65,"state":"open","connstate":"connected","freebk":0,"freebs":40,"lastCheck":"2015-06-20T16:37:23Z"},{"nb":66,"state":"open","connstate":"connected","freebk":14,"freebs":26,"lastCheck":"2015-06-20T16:43:48Z"},{"nb":67,"state":"open","connstate":"connected","freebk":25,"freebs":15,"lastCheck":"2015-06-20T16:45:17Z"},{"nb":68,"state":"open","connstate":"connected","freebk":1,"freebs":39,"lastCheck":"2015-06-20T16:45:59Z"},{"nb":69,"state":"open","connstate":"connected","freebk":6,"freebs":34,"lastCheck":"2015-06-20T16:46:04Z"},{"nb":70,"state":"open","connstate":"connected","freebk":11,"freebs":29,"lastCheck":"2015-06-20T16:46:32Z"},{"nb":71,"state":"open","connstate":"connected","freebk":1,"freebs":39,"lastCheck":"2015-06-20T16:43:20Z"},{"nb":72,"state":"open","connstate":"connected","freebk":16,"freebs":15,"lastCheck":"2015-06-20T16:43:16Z"},{"nb":73,"state":"open","connstate":"connected","freebk":13,"freebs":16,"lastCheck":"2015-06-20T16:44:05Z"},{"nb":74,"state":"open","connstate":"connected","freebk":17,"freebs":13,"lastCheck":"2015-06-20T16:42:34Z"},{"nb":75,"state":"open","connstate":"connected","freebk":15,"freebs":25,"lastCheck":"2015-06-20T16:44:53Z"},{"nb":76,"state":"open","connstate":"connected","freebk":11,"freebs":27,"lastCheck":"2015-06-20T16:45:57Z"},{"nb":77,"state":"open","connstate":"connected","freebk":25,"freebs":4,"lastCheck":"2015-06-20T16:43:51Z"},{"nb":78,"state":"open","connstate":"connected","freebk":12,"freebs":28,"lastCheck":"2015-06-20T16:44:13Z"},{"nb":79,"state":"open","connstate":"connected","freebk":23,"freebs":4,"lastCheck":"2015-06-20T16:45:00Z"},{"nb":80,"state":"open","connstate":"connected","freebk":13,"freebs":27,"lastCheck":"2015-06-20T16:43:58Z"},{"nb":81,"state":"open","connstate":"connected","freebk":24,"freebs":16,"lastCheck":"2015-06-20T16:38:47Z"},{"nb":82,"state":"open","connstate":"connected","freebk":2,"freebs":20,"lastCheck":"2015-06-20T16:43:22Z"},{"nb":83,"state":"open","connstate":"connected","freebk":8,"freebs":32,"lastCheck":"2015-06-20T16:46:10Z"},{"nb":84,"state":"open","connstate":"connected","freebk":4,"freebs":26,"lastCheck":"2015-06-20T16:43:29Z"},{"nb":85,"state":"open","connstate":"connected","freebk":1,"freebs":34,"lastCheck":"2015-06-20T16:39:04Z"},{"nb":86,"state":"open","connstate":"connected","freebk":9,"freebs":29,"lastCheck":"2015-06-20T16:39:32Z"},{"nb":87,"state":"open","connstate":"connected","freebk":0,"freebs":38,"lastCheck":"2015-06-20T16:43:30Z"},{"nb":88,"state":"open","connstate":"connected","freebk":5,"freebs":25,"lastCheck":"2015-06-20T16:46:12Z"},{"nb":89,"state":"open","connstate":"connected","freebk":0,"freebs":40,"lastCheck":"2015-06-20T16:37:47Z"},{"nb":90,"state":"open","connstate":"connected","freebk":10,"freebs":30,"lastCheck":"2015-06-20T16:45:48Z"},{"nb":91,"state":"open","connstate":"connected","freebk":7,"freebs":23,"lastCheck":"2015-06-20T16:41:36Z"},{"nb":92,"state":"open","connstate":"connected","freebk":31,"freebs":9,"lastCheck":"2015-06-20T16:44:56Z"},{"nb":93,"state":"open","connstate":"connected","freebk":30,"freebs":10,"lastCheck":"2015-06-20T16:39:26Z"},{"nb":94,"state":"open","connstate":"connected","freebk":7,"freebs":33,"lastCheck":"2015-06-20T16:46:11Z"},{"nb":95,"state":"open","connstate":"connected","freebk":22,"freebs":17,"lastCheck":"2015-06-20T16:42:46Z"},{"nb":96,"state":"open","connstate":"connected","freebk":14,"freebs":16,"lastCheck":"2015-06-20T16:42:23Z"},{"nb":97,"state":"open","connstate":"connected","freebk":1,"freebs":39,"lastCheck":"2015-06-20T16:45:21Z"},{"nb":98,"state":"open","connstate":"connected","freebk":19,"freebs":21,"lastCheck":"2015-06-20T16:44:12Z"},{"nb":99,"state":"open","connstate":"connected","freebk":2,"freebs":28,"lastCheck":"2015-06-20T16:45:55Z"},{"nb":100,"state":"open","connstate":"connected","freebk":25,"freebs":0,"lastCheck":"2015-06-20T16:36:35Z"},{"nb":101,"state":"open","connstate":"connected","freebk":6,"freebs":24,"lastCheck":"2015-06-20T16:40:07Z"},{"nb":102,"state":"open","connstate":"connected","freebk":21,"freebs":19,"lastCheck":"2015-06-20T16:43:15Z"}]}
```

This gives bike availability data for all stations in the city. To get the
city code used in the above URL ("dublin" in the above example) you can visit a URL
like this
which will respond with a blob of JSON containing information about the various
cities that J.C.Decaux's API supports.