🌍GBFS世界旅行 ～車両編～

前回、GBFSで世界中のシェアモビリティの**ステーション所在地**をマッピングしました🌎

https://qiita.com/hiskoh/items/d4fa1f032cce199ea701

今回はステーションではなく**車両**のマッピングをしてみました。GBFSでは``free_bike_status.json``という、**現在レンタルされていない車両**を公開するためのファイル仕様があります。今回はこれをすべて可視化します。全世界で**330サービス/約19万台**！出典は後掲の通りです[^1]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/b6c9441b-11f6-2fd3-801c-8bd6ce620ccb.png)

:::note info 
本記事では筆者が取得に成功したGBFSを根拠にサービス数・車両数を算出しています。例えばデータの取得漏れ（サービス側のDBメンテナンスでデータ取得ができなかった等）や公開されているデータが古い・誤っているなど、実体を正確に反映しきれていない可能性がゼロではないこと、ご留意ください。
:::

# free_bike_status.jsonとは？
GBFSはシェアモビリティの**リアルタイムな乗換案内**を実現するためのデータフォーマットです[^2]。

シェアモビリティサービスを大別すると、乗降拠点があらかじめ設置されてある**ステーション型**と、街中どこでも乗り捨て・借り出し可能な**ドックレス型**の2種類があります。両方を採用したハイブリッド型も存在します。日本ではステーション型が一般的です。

ステーション型であれば、ステーション情報さえ公開すれば乗換案内は実現できますが、ドックレス型やハイブリッド型の場合、車両そのものの位置情報を公開しないと乗換案内が実現できません。``free_bike_status.json``は、ドックレス型サービスでも乗換案内ができるようにレンタル前の車両の位置情報等のデータを公開するためのファイルフォーマットです。

:::note info
近日公開されるGBFS ver3.0では、free_bike_status.jsonは廃止され、代わってvehicle_status.jsonというファイルが使用される予定です。GBFSがシェアサイクルだけでなく、スクーターやカーシェア対応したことが背景にあるようです。
:::

## サービス体系との関係性
GBFSの仕様上、ステーション型ではステーション情報を公開必須、ドックレス型サービスでは車両情報を公開必須となっています。ただ、ステーション型であっても車両情報の公開は可能なため、**車両情報があるからといってドックレス型とは限らない**ことに注意が必要です。 

収集したデータを見ていると、ステーション型サービスでも車両情報を公開してるパターンが見受けられました（その逆も若干ありました）。ファイル構成とサービスタイプの関係を整理すると、どうやら下図のようになっていそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/58b3b69f-4b91-21a6-d24e-121cc31d0bac.png)
GBFSは700近く公開されているので、実際にはもっと複雑なパターンが存在しそうですが、今回そこには深入りしないようにします。単純に車両情報の可視化を試みます。

# やり方
前回同様、GBFSの取得に特化したモジュールgbfs-clientを使用します。

```python
from gbfs.services import SystemDiscoveryService
import pandas as pd

ds = SystemDiscoveryService()

#システム一覧を取得（gbfs-clientを使用）
system_list = ds.systems

#ステーション一覧格納用の空DFを用意
column = ['system_id','bike_id','lon','lat']
df = pd.DataFrame(columns=column)

#各システムの第一言語（）
for system in system_list:
    
    #systemIDの取得
    system_id = system["System ID"]    
    
    #gbfsのurlを取得
    gbfs_url = system["Auto-Discovery URL"]
    
    #systemID使って該当サービスの情報を保持（gbfs-clientを使用）
    try:
        #英語で取得をトライ
        client = ds.instantiate_client(system_id,'en')
    except BaseException as e:       
        #英語でのデータ公開がない場合、エラーメッセージをもとに第一言語を特定
        error_message = str(e)
        first_language = error_message.split(':')[1].split(',')[0].replace(' ','')
        
        try:
            #第一言語で再取得をトライ
            client = ds.instantiate_client(system_id,first_language)
        except:
            #それでも失敗した場合は処理中断
            print("言語情報の取得失敗, " + system_id )
            continue
    
    #車両情報が存在する場合、車両情報をDFに追加
    if 'free_bike_status' in client.feed_names:
          
        #車両一覧を取得（id）
        try:
            bikes = [ [system_id , bike["bike_id"] ,bike["lon"],bike["lat"]] for bike in client.request_feed('free_bike_status').get('data').get('bikes') ]   
        except:
            print("フリーバイク情報取得失敗, " + system_id )
            continue
            
        #車両一覧のDFに追加
        df = pd.concat([df, pd.DataFrame(bikes,columns=column)], ignore_index=True)
        print("フリーバイク取得成功！, " + system_id )
    else:
        print("フリーバイク情報なし, " + system_id )
        
        
#csv出力
df.to_csv('C:\\Users\\***\\Downloads\\free_bike.csv')
```
# GBFSで世界旅行をしてみよう
[前回](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701)はPythonモジュール``folium``でも可視化を試みましたが、今回は早速QGISで可視化し、世界を巡ってみたいと思います。出典は後掲の通りです[^1]。

## 北米
[前回のステーション情報](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E5%8C%97%E7%B1%B3)同様に北米は多くの事業者がGBFSを公開しています。119サービス/約6.4万台が存在していました。

なおここでの車両台数は“レンタルされていない車両”の台数のため、利用中の車両を含めるともっと多くの車両が存在しているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/deded948-d286-011c-cf19-4f6bb82cbaa4.png)

## 南米
[前回はステーションが存在していた](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E5%8D%97%E7%B1%B3)南米ですが、今回はデータなし。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/667711b7-4569-b9bf-b990-1172bd8ff2b2.png)

## ヨーロッパ
さすがヨーロッパ。[前回同様](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E3%83%A8%E3%83%BC%E3%83%AD%E3%83%83%E3%83%91)に各地に車両がプロットされました。199サービス/約11.9万台が存在しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/86cfa510-263e-30d1-b01c-aac4e8e1bcc3.png)

## アフリカ
[前回](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB)に引き続き、データなし。相変わらず[ヌル島](https://ja.wikipedia.org/wiki/%E3%83%8C%E3%83%AB%E5%B3%B6)にピンがありますが、これはデータ側の誤りなのでノーカウント。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/7510b229-45c5-cfe1-bf52-9fd39fb55857.png)

## 中東
イスラエルのテルアビブに存在。2サービス/約4千台。
2サービスはいずれもキックボード事業者（Bird,Lime）でした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/0ff40a27-8c88-ce9a-ff0d-e66eeff01e16.png)

## 中央アジア
インドに1台だけプロットされました。1台だけって怪しいですよね。
気になって中を見ると、データが誤っているようでした。北欧にいるはずの車両がなぜかインドに投下されてました。。。当然、集計対象外です。

よって中央アジアは車両情報なし。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/af22e474-3e6d-b1f0-65cd-3e11e0ab8841.png)


## 東アジア
日本が属している地域なので一応ご紹介。
[前回記事で見たように](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2)HELLO CYCLINGとドコモ・バイクシェア東京のステーション情報が確認できた本地域ですが、車両情報に関しては空白地帯です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/8123294d-cdea-a254-4327-a3d9573109e8.png)


## オセアニア
[前回](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E3%82%AA%E3%82%BB%E3%82%A2%E3%83%8B%E3%82%A2)はニュージーランドのみにステーション情報が存在しましたが、車両を可視化するとオーストラリアにも車両がプロットされました。11サービス/約2000台が存在しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/a44e7bf2-f2ae-ce89-3a75-4f5a4b04298e.png)

# 得られた知見
[前回記事での言及](https://qiita.com/hiskoh/items/d4fa1f032cce199ea701#%E5%BE%97%E3%82%89%E3%82%8C%E3%81%9F%E7%9F%A5%E8%A6%8B)同様に、処理を進める中でGBFSの仕様に沿っていないデータの存在や、各々のライセンスをどうやって確認するかの課題を感じました。

加えて、本記事の最初に指摘したように、**車両情報の可視化＝ドックレス型サービスの可視化ではない**という点も、可視化する中で改めて実感しました。ステーション型サービスだけど、``free_bike_status.json``を公開している事業者が思っていたより多そうです。

# おわりに
今回は車両情報``free_bike_status.json``の可視化を試みました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119284/b6c9441b-11f6-2fd3-801c-8bd6ce620ccb.png)
本当は「ドックレス型サービスの可視化」をしたかったのですが、何度も言及した通り、ステーション型であっても車両情報を公開している場合があったため、今回は断念しました。

ただ、前回取得したステーション情報と今回の車両情報を突き合せることで、そのような事例を除外できるはずです。次回こそは、ドックレス型サービスの可視化に挑戦したいと思います。

[^1]: HOPR Miami	https://gbfs.hopr.city/api/gbfs/11/
Neuron Mobility	https://mds-global-bne.neuron-mobility.com/gbfs/2/
Neuron Mobility	https://mds-global-cbr.neuron-mobility.com/gbfs/2/
Neuron Mobility	https://mds-global-drw.neuron-mobility.com/gbfs/2/
Neuron Newcastle	https://mds-global-ncl.neuron-mobility.com/gbfs/2/
Neuron Mobility Auckland	https://mds-global-akl.neuron-mobility.com/gbfs/2/
Neuron Mobility Christchurch	https://mds-global-chc.neuron-mobility.com/gbfs/2/
Neuron Mobility Dunedin	https://mds-global-dud.neuron-mobility.com/gbfs/2/
Neuron Mobility	https://mds-global-tsv.neuron-mobility.com/gbfs/2/
UBC	https://gbfs.hopr.city/api/gbfs/13
HOPR Atlanta	https://gbfs.hopr.city/api/gbfs/20/
HOPR Margaritaville	https://gbfs.hopr.city/api/gbfs/21/
HOPR Bishop Ranch	https://gbfs.hopr.city/api/gbfs/27/
Menlo Park Labs	https://gbfs.hopr.city/api/gbfs/35/
HOPR Tampa	https://gbfs.hopr.city/api/gbfs/8/
Wheels Austin	https://austin-gbfs.getwheelsapp.com/gbfs.json
Bay Wheels	https://gbfs.baywheels.com/gbfs/gbfs.json
Cykl	https://www.cykl.nl/gbfs/gbfs.json
Alcala de Henares	https://mds.linkyour.city/gbfs/es_alcala_de_henares/gbfs.json
LINK Alexandria	https://mds.linkyour.city/gbfs/us_va_alexandria/gbfs.json
LINK Arlington	https://mds.linkyour.city/gbfs/us_va_arlington/gbfs.json
Asbury Park	https://mds.linkyour.city/gbfs/us_nj_asbury_park/gbfs.json
Austin	https://mds.linkyour.city/gbfs/us_tx_austin/gbfs.json
Baltimore	https://mds.linkyour.city/gbfs/us_md_baltimore/gbfs.json
Link Cagnes-sur-Mer	https://mds.linkyour.city/gbfs/fr_cagnessurmer/gbfs.json
Canary Islands	https://mds.linkyour.city/gbfs/es_canary_islands/gbfs.json
Cascais	https://mds.linkyour.city/gbfs/pt_cascais/gbfs.json
Cleveland	https://mds.linkyour.city/gbfs/us_oh_cleveland/gbfs.json
Link Derby	https://mds.linkyour.city/gbfs/gb_derby/gbfs.json
Detroit	https://mds.linkyour.city/gbfs/us_mi_detroit/gbfs.json
El Puerto de Santa Maria	https://mds.linkyour.city/gbfs/es_el_puerto_de_santa_maria/gbfs.json
Faro	https://mds.linkyour.city/gbfs/pt_faro/gbfs.json
Hartford	https://mds.linkyour.city/gbfs/us_ct_hartford/gbfs.json
Jacksonville	https://mds.linkyour.city/gbfs/us_fl_jacksonville/gbfs.json
Knoxville	https://mds.linkyour.city/gbfs/us_tn_knoxville/gbfs.json
Link Linz	https://mds.linkyour.city/gbfs/at_linz/gbfs.json
Lisbon	https://mds.linkyour.city/gbfs/pt_lisbon/gbfs.json
LINK Los Angeles	https://mds.linkyour.city/gbfs/us_ca_los_angeles/gbfs.json
Madrid	https://mds.linkyour.city/gbfs/es_madrid/gbfs.json
Malaga	https://mds.linkyour.city/gbfs/es_malaga/gbfs.json
LINK Manhattan	https://mds.linkyour.city/gbfs/us_ks_manhattan/gbfs.json
Moncalieri	https://mds.linkyour.city/gbfs/it_moncalieri/gbfs.json
Nottingham	https://mds.linkyour.city/gbfs/gb_nottingham/gbfs.json
LINK Oakland	https://mds.linkyour.city/gbfs/us_ca_oakland/gbfs.json
Palermo	https://mds.linkyour.city/gbfs/it_palermo/gbfs.json
Perpignan	https://mds.linkyour.city/gbfs/fr_perpignan/gbfs.json
Pomezia	https://mds.linkyour.city/gbfs/it_pomezia/gbfs.json
Rome	https://mds.linkyour.city/gbfs/it_rome/gbfs.json
San Diego	https://mds.linkyour.city/gbfs/us_ca_san_diego/gbfs.json
LINK Seattle	https://mds.linkyour.city/gbfs/us_wa_seattle/gbfs.json
Tenerife	https://mds.linkyour.city/gbfs/es_tenerife/gbfs.json
Turin	https://mds.linkyour.city/gbfs/it_turin/gbfs.json
Vienna	https://mds.linkyour.city/gbfs/at_vienna/gbfs.json
Link Villaviciosa de Odon	https://mds.linkyour.city/gbfs/es_villaviciosa_de_odon/gbfs.json
LINK Nuremberg	https://mds.linkyour.city/gbfs/de_nuremberg/gbfs.json
Beryl - BCP	https://gbfs.beryl.cc/v2/BCP/gbfs.json
Beryl - Cornwall	https://gbfs.beryl.cc/v2/Cornwall/gbfs.json
Beryl - Greater Manchester	https://gbfs.beryl.cc/v2/Greater_Manchester/gbfs.json
Beryl - Hereford	https://gbfs.beryl.cc/v2/Hereford/gbfs.json
Beryl - Hertsmere	https://gbfs.beryl.cc/v2/Hertsmere/gbfs.json
Beryl - Isle of Wight	https://gbfs.beryl.cc/v2/Isle_of_Wight/gbfs.json
Beryl - Norwich	https://gbfs.beryl.cc/v2/Norwich/gbfs.json
Beryl - Portsmouth	https://gbfs.beryl.cc/v2/Portsmouth/gbfs.json
Beryl - Southampton	https://gbfs.beryl.cc/v2/Southampton/gbfs.json
Beryl - Watford	https://gbfs.beryl.cc/v2/Watford/gbfs.json
Beryl - West Midlands	https://gbfs.beryl.cc/v2/West_Midlands/gbfs.json
Beryl - Wool	https://gbfs.beryl.cc/v2/Wool/gbfs.json
BIKETOWN	https://gbfs.biketownpdx.com/gbfs/gbfs.json
Bird Lisbon	https://mds.bird.co/gbfs/v2/public/lisbon/gbfs.json
Bird Zaragoza	https://mds.bird.co/gbfs/v2/public/zaragoza/gbfs.json
Bird Alexandria	https://mds.bird.co/gbfs/v2/public/alexandria/gbfs.json
Bird Antwerp	https://mds.bird.co/gbfs/v2/public/antwerp/gbfs.json
Bird Basel	https://mds.bird.co/gbfs/v2/public/basel/gbfs.json
Bird Bordeaux	https://mds.bird.co/gbfs/v2/public/bordeaux/gbfs.json
Bird Braga	https://mds.bird.co/gbfs/v2/public/braga/gbfs.json
Bird Bulle	https://mds.bird.co/gbfs/v2/public/bulle/gbfs.json
Bird Cascais	https://mds.bird.co/gbfs/v2/public/cascais/gbfs.json
Bird Chalonsenchampagne	https://mds.bird.co/gbfs/v2/public/chalonsenchampagne/gbfs.json
Bird Cleveland	https://mds.bird.co/gbfs/v2/public/cleveland/gbfs.json
Bird Columbus	https://mds.bird.co/gbfs/v2/public/columbus/gbfs.json
Bird Culver City	https://mds.bird.co/gbfs/v2/public/culver-city/gbfs.json
Bird Detriot	https://mds.bird.co/gbfs/v2/public/detroit/gbfs.json
Bird Dieppe	https://mds.bird.co/gbfs/v2/public/dieppe/gbfs.json
Bird Durham	https://mds.bird.co/gbfs/v2/public/durham/gbfs.json
Bird Fairfax	https://mds.bird.co/gbfs/v2/public/fairfax/gbfs.json
Bird Indianapolis	https://mds.bird.co/gbfs/v2/public/indianapolis/gbfs.json
Bird Kansas City	https://mds.bird.co/gbfs/v2/public/kansas-city/gbfs.json
Bird Larochesuryon	https://mds.bird.co/gbfs/v2/public/larochesuryon/gbfs.json
Bird Laval	https://mds.bird.co/gbfs/v2/public/laval/gbfs.json
Bird Los Angeles	https://mds.bird.co/gbfs/v2/public/los-angeles/gbfs.json
Bird Louisville	https://mds.bird.co/gbfs/v2/public/louisville/gbfs.json
Bird Madrid	https://mds.bird.co/gbfs/v2/public/madrid/gbfs.json
Bird Marseille	https://mds.bird.co/gbfs/v2/public/marseille/gbfs.json
Bird Millau	https://mds.bird.co/gbfs/v2/public/millau/gbfs.json
Bird New York	https://mds.bird.co/gbfs/v2/public/new-york/gbfs.json
Bird Portland	https://mds.bird.co/gbfs/v2/public/portland/gbfs.json
Bird Rome	https://mds.bird.co/gbfs/v2/public/rome/gbfs.json
Bird San Francisco	https://mds.bird.co/gbfs/v2/public/san-francisco/gbfs.json
Bird St Louis	https://mds.bird.co/gbfs/v2/public/st-louis/gbfs.json
Bird Tel Aviv	https://mds.bird.co/gbfs/v2/public/tel-aviv/gbfs.json
Bird Tempe	https://mds.bird.co/gbfs/v2/public/tempe/gbfs.json
Bird Vichy	https://mds.bird.co/gbfs/v2/public/vichy/gbfs.json
Bird Washington DC	https://mds.bird.co/gbfs/v2/public/washington-dc/gbfs.json
Bird Zurich	https://mds.bird.co/gbfs/v2/public/zurich/gbfs.json
Bolt Bergen	https://api.entur.io/mobility/v2/gbfs/boltbergen/gbfs
Bolt Hamar	https://api.entur.io/mobility/v2/gbfs/bolthamar/gbfs
Bolt Lillestrom	https://api.entur.io/mobility/v2/gbfs/boltlillestrom/gbfs
Bolt Oslo	https://api.entur.io/mobility/v2/gbfs/boltoslo/gbfs
Capital Bike Share	https://gbfs.capitalbikeshare.com/gbfs/gbfs.json
Lyft Scooters Chicago	https://s3.amazonaws.com/lyft-lastmile-production-iad/lbs/chi/gbfs.json
CoGo	https://gbfs.cogobikeshare.com/gbfs/gbfs.json
Divvy	https://gbfs.divvybikes.com/gbfs/gbfs.json
Flamingo Palerston North	https://data.rideflamingo.com/gbfs/palmerston-north/gbfs.json
Flamingo Waimakariri	https://data.rideflamingo.com/gbfs/waimakariri/gbfs.json
Flamingo Wellington	https://data.rideflamingo.com/gbfs/wellington/gbfs.json
Lime Antwerp	https://data.lime.bike/api/partners/v2/gbfs/antwerp/gbfs.json
Lime Arlington	https://data.lime.bike/api/partners/v2/gbfs/arlington/gbfs.json
Lime Brussels	https://data.lime.bike/api/partners/v2/gbfs/brussels/gbfs.json
Lime Chicago	https://data.lime.bike/api/partners/v2/gbfs/chicago/gbfs.json
Lime Cleveland	https://data.lime.bike/api/partners/v2/gbfs/cleveland/gbfs.json
Lime Colorado Springs	https://data.lime.bike/api/partners/v2/gbfs/colorado_springs/gbfs.json
Lime Detroit	https://data.lime.bike/api/partners/v2/gbfs/detroit/gbfs.json
Lime Grand Rapids	https://data.lime.bike/api/partners/v2/gbfs/grand_rapids/gbfs.json
Lime Hamburg	https://data.lime.bike/api/partners/v2/gbfs/hamburg/gbfs.json
Lime Louisville	https://data.lime.bike/api/partners/v2/gbfs/louisville/gbfs.json
Lime Marseille	https://data.lime.bike/api/partners/v2/gbfs/marseille/gbfs.json
Lime New York	https://data.lime.bike/api/partners/v2/gbfs/new_york/gbfs.json
Lime Oakland	https://data.lime.bike/api/partners/v2/gbfs/oakland/gbfs.json
Lime Opfikon	https://data.lime.bike/api/partners/v2/gbfs/opfikon/gbfs.json
Lime Paris	https://data.lime.bike/api/partners/v2/gbfs/paris/gbfs.json
Lime Portland	https://data.lime.bike/api/partners/v2/gbfs/portland/gbfs.json
Lime Rome	https://data.lime.bike/api/partners/v2/gbfs/rome/gbfs.json
Lime San Francisco	https://data.lime.bike/api/partners/v2/gbfs/san_francisco/gbfs.json
Lime San Jose	https://data.lime.bike/api/partners/v2/gbfs/san_jose/gbfs.json
Lime Seattle	https://data.lime.bike/api/partners/v2/gbfs/seattle/gbfs.json
Lime Tel Aviv	https://data.lime.bike/api/partners/v2/gbfs/tel_aviv/gbfs.json
Lime Washington DC	https://data.lime.bike/api/partners/v2/gbfs/washington_dc/gbfs.json
Lime Zug	https://data.lime.bike/api/partners/v2/gbfs/zug/gbfs.json
Lyft	https://s3.amazonaws.com/lyft-lastmile-production-iad/lbs/dca/gbfs.json
Lyft Scooters Denver	https://s3.amazonaws.com/lyft-lastmile-production-iad/lbs/den/gbfs.json
Lyft Scooters San Diego	https://s3.amazonaws.com/lyft-lastmile-production-iad/lbs/san/gbfs.json
Bergisches e-Bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ac/gbfs.json
SWA Rad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ag/gbfs.json
BikeKIA	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ak/gbfs.json
city bike Linz	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_al/gbfs.json
nextbike BIH	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ba/gbfs.json
Grad Šibenik (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bc/gbfs.json
Bonn nextbike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bf/gbfs.json
BL bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bj/gbfs.json
nextbike Berlin	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bn/gbfs.json
Bilbaobizi (Bilbao)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bo/gbfs.json
BelfastBikes	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bu/gbfs.json
Zenica	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_bz/gbfs.json
Nomago Bikes -  LJUBLJANA	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cc/gbfs.json
Nomago Bikes - GO2GO	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ce/gbfs.json
Nomago Bikes - ZANAPREJ	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cf/gbfs.json
Grad Velika Gorica (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cg/gbfs.json
nextbike Switzerland	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ch/gbfs.json
Jastrebarsko (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cj/gbfs.json
Nomago Bikes - PORTOROZ	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cl/gbfs.json
Grad Metković (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cm/gbfs.json
Nomago Bikes - KOLESCE	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cn/gbfs.json
nextbike Cyprus	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cy/gbfs.json
nextbike Prostejov	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_cz/gbfs.json
Graben - ready4green	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_da/gbfs.json
Potsdam Rad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dc/gbfs.json
nextbike Düsseldorf	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dd/gbfs.json
Frelo Freiburg	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_df/gbfs.json
meinSiggi	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dg/gbfs.json
nextbike Gütersloh	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dj/gbfs.json
nextbike Kassel	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dk/gbfs.json
nextbike Offenburg	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dl/gbfs.json
Nibelungen-Bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dn/gbfs.json
nextbike Rüsselsheim am Main	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_do/gbfs.json
RVK	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dr/gbfs.json
SAP Walldorf	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ds/gbfs.json
nextbike Würzburg	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dt/gbfs.json
VAG_Rad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dv/gbfs.json
wupsiRad Leverkusen	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dw/gbfs.json
MOBIbike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dx/gbfs.json
Oeynrad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_dz/gbfs.json
Eifel e-Bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_eb/gbfs.json
EDEKA Grünheide	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ed/gbfs.json
nextbike Erfurt	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ef/gbfs.json
ibizi	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ei/gbfs.json
Sitycleta (Las Palmas)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_el/gbfs.json
eMobi (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_em/gbfs.json
Co-bikes	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_eu/gbfs.json
BBK Klimabizi	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ey/gbfs.json
nextbike Frankfurt	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ff/gbfs.json
KVV.nextbike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_fg/gbfs.json
OVO Bikes Glasgow	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_gg/gbfs.json
Grad Split (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_gt/gbfs.json
Heraeus Hanau	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_hg/gbfs.json
nextbike Croatia	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_hr/gbfs.json
ARVAL	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ia/gbfs.json
nextbike Bergamo	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ib/gbfs.json
nextbike Klagenfurt Austria	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ka/gbfs.json
KVB Rad Germany	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_kg/gbfs.json
Santander Cycles - Milton Keynes	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ku/gbfs.json
nextbike Niederösterreich Austria	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_la/gbfs.json
nextbike Leipzig	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_le/gbfs.json
nextbike Lippstadt	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_li/gbfs.json
nextbike Lahr (Pedelecs)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_lr/gbfs.json
Lovesharing (Canary Islands)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ls/gbfs.json
Grad Makarska (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ma/gbfs.json
metropolradruhr Germany	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_mr/gbfs.json
nextbike Malta	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_mt/gbfs.json
nextbike Gießen	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ng/gbfs.json
nextbike Marburg	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_nm/gbfs.json
nextbike Norderstedt	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_nn/gbfs.json
nextbike Romania	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_nw/gbfs.json
nextbike New Zealand	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_nz/gbfs.json
Hvar	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ol/gbfs.json
WRM nextbike Poland	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_pl/gbfs.json
Rowerowe Łódzkie Poland (RL)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_pw/gbfs.json
RSVG-Bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_rb/gbfs.json
mobic	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_re/gbfs.json
Rower Powiatowy Sokołów Podlaski	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_rq/gbfs.json
Saturn	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_rs/gbfs.json
Općina Pitomača (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_se/gbfs.json
Sprottenflotte	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_sf/gbfs.json
Grad Zaprešić (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_sg/gbfs.json
Stadtrad Innsbruck Austria	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_si/gbfs.json
nextbike León	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_sl/gbfs.json
NEW MöBus nextbike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_sn/gbfs.json
University of Surrey	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_su/gbfs.json
nextbike Tirol Austria	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ta/gbfs.json
Demoland	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tb/gbfs.json
nextbike Berounsko	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_td/gbfs.json
nextbike Brno	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_te/gbfs.json
nextbike Dvůr Králové	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tf/gbfs.json
nextbike Praha	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tg/gbfs.json
nextbike Olomouc	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ti/gbfs.json
nextbike Opava	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tj/gbfs.json
nextbike Kladno	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tk/gbfs.json
nextbike Hradec Králové	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tl/gbfs.json
nextbike Pardubice	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tm/gbfs.json
nextbike Ostrava	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_to/gbfs.json
nextbike Mladoboleslavsko	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tq/gbfs.json
nextbike Uherské Hradiště	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tt/gbfs.json
nextbike Zlín	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tv/gbfs.json
nextbike Písek	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ty/gbfs.json
nextbike Jihlava	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_tz/gbfs.json
Santander Cycles - Brunel	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ub/gbfs.json
OVO Bikes Cardiff & Vale of Glamorgan	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_uc/gbfs.json
StadtRad Greifswald	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ug/gbfs.json
nextbike Stirling	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_uk/gbfs.json
MV-Rad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_um/gbfs.json
UsedomRad Germany	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_ur/gbfs.json
Santander Cycles - Swansea	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_uu/gbfs.json
nextbike Vinnitsa (Ukraine)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_uv/gbfs.json
VRNnextbike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_vn/gbfs.json
VVT REGIORAD Tirol	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_vt/gbfs.json
WinsenRad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_wd/gbfs.json
WK-Bike (Bremen)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_wk/gbfs.json
nextbike Wiesbaden	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_wn/gbfs.json
OLi-Bike	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_wo/gbfs.json
WienMobil Rad	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_wr/gbfs.json
Grad Zadar (Croatia)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_zd/gbfs.json
Styr & Ställ (Sweden, Göteborg)	https://gbfs.nextbike.net/maps/gbfs/v2/nextbike_zg/gbfs.json
Felyx Aachen	https://nitro.openvelo.org/aachen/felyx/v2/gbfs.json
Tier Aachen	https://nitro.openvelo.org/aachen/tier/v2/gbfs.json
PeaceHealth Rides	https://peacehealthrides.com/opendata/gbfs.json
Pony Angers	https://gbfs.getapony.com/v1/angers/en/gbfs.json
Pony Evry	https://gbfs.getapony.com/v1/evry/en/gbfs.json
Pony Namur	https://gbfs.getapony.com/v1/namur/en/gbfs.json
Pony Bordeaux	https://gbfs.getapony.com/v1/bordeaux/en/gbfs.json
Pony Brussels	https://gbfs.getapony.com/v1/brussels/en/gbfs.json
#N/A	#N/A
Pony Paris	https://gbfs.getapony.com/v1/paris/en/gbfs.json
Revel New York	https://gbfs.gorevel.com/gbfs/v2/newyork/en/gbfs.json
Revel Oakland	https://gbfs.gorevel.com/gbfs/v2/oakland/en/gbfs.json
Revel San Francisco	https://gbfs.gorevel.com/gbfs/v2/sanfrancisco/en/gbfs.json
Revel Washington D.C.	https://gbfs.gorevel.com/gbfs/v2/washingtondc/en/gbfs.json
sharedmobility.ch	https://www.sharedmobility.ch/gbfs.json
Sobi Hamilton	https://hamilton.socialbicycles.com/opendata/gbfs.json
Spin Akron 	https://gbfs.spin.pm/api/gbfs/v2_3/akron/gbfs
Spin Alexandria	https://gbfs.spin.pm/api/gbfs/v2_3/alexandria/gbfs
Spin Ann Arbor	https://gbfs.spin.pm/api/gbfs/v2_3/ann_arbor/gbfs
Spin Atlanta	https://gbfs.spin.pm/api/gbfs/v2_3/atlanta/gbfs
Spin Baltimore	https://gbfs.spin.pm/api/gbfs/v2_3/baltimore/gbfs.json
Spin Boise	https://gbfs.spin.pm/api/gbfs/v2_3/boise/gbfs
Spin Chicago	https://gbfs.spin.pm/api/gbfs/v2_3/chicago_territory/gbfs
Spin Cleveland	https://gbfs.spin.pm/api/gbfs/v2_3/cleveland/gbfs
Spin Columbus	https://gbfs.spin.pm/api/gbfs/v2_3/columbus/gbfs
Spin Coral Gables	https://gbfs.spin.pm/api/gbfs/v2_3/coral_gables/gbfs
Spin Dayton	https://gbfs.spin.pm/api/gbfs/v2_3/dayton/gbfs
Spin Durham	https://gbfs.spin.pm/api/gbfs/v2_3/durham/gbfs
Spin Fayetteville	https://gbfs.spin.pm/api/gbfs/v2_3/fayetteville/gbfs
Spin Fort Collins	https://gbfs.spin.pm/api/gbfs/v2_3/fort_collins/gbfs
Spin Fort Pierce	https://gbfs.spin.pm/api/gbfs/v2_3/fort_pierce/gbfs
Spin Gainesville	https://gbfs.spin.pm/api/gbfs/v2_3/gainesville/gbfs
Spin Garden City	https://gbfs.spin.pm/api/gbfs/v2_3/garden_city/gbfs
Spin Jacksonville	https://gbfs.spin.pm/api/gbfs/v2_3/jacksonville/gbfs
Spin Kansas City	https://gbfs.spin.pm/api/gbfs/v2_3/kansas_city/gbfs
Spin Lexington	https://gbfs.spin.pm/api/gbfs/v2_3/lexington/gbfs
Spin Los Angeles	https://gbfs.spin.pm/api/gbfs/v2_3/los_angeles/gbfs
Spin Memphis	https://gbfs.spin.pm/api/gbfs/v2_3/memphis/gbfs
Spin Minneapolis	https://gbfs.spin.pm/api/gbfs/v2_3/minneapolis/gbfs
Spin Nashville	https://gbfs.spin.pm/api/gbfs/v2_3/nashville/gbfs
Spin Oakland University	https://gbfs.spin.pm/api/gbfs/v2_3/oakland_university/gbfs
Spin Ohio State	https://gbfs.spin.pm/api/gbfs/v2_3/ohio_state/gbfs
Spin Orlando	https://gbfs.spin.pm/api/gbfs/v2_3/orlando/gbfs
Spin Phoenix	https://gbfs.spin.pm/api/gbfs/v2_3/phoenix/gbfs
Spin Pittsburgh	https://gbfs.spin.pm/api/gbfs/v2_3/pittsburgh/gbfs
Spin Portland	https://gbfs.spin.pm/api/gbfs/v2_3/portland/gbfs
Spin Providence	https://gbfs.spin.pm/api/gbfs/v2_3/providence/gbfs
Spin Purdue University	https://gbfs.spin.pm/api/gbfs/v2_3/purdue_university/gbfs
Spin Raleigh	https://gbfs.spin.pm/api/gbfs/v2_3/raleigh/gbfs
Spin Salt Lake City	https://gbfs.spin.pm/api/gbfs/v2_3/salt_lake_city/gbfs
Spin San Diego	https://gbfs.spin.pm/api/gbfs/v2_3/san_diego/gbfs
Spin San Francisco	https://gbfs.spin.pm/api/gbfs/v2_3/san_francisco/gbfs
Spin San Marcos	https://gbfs.spin.pm/api/gbfs/v2_3/san_marcos/gbfs
Spin Santa Monica	https://gbfs.spin.pm/api/gbfs/v2_3/santa%20monica/gbfs
Spin St George	https://gbfs.spin.pm/api/gbfs/v2_3/st_george/gbfs
Spin Stillwater	https://gbfs.spin.pm/api/gbfs/v2_3/stillwater/gbfs
Spin Tallahassee	https://gbfs.spin.pm/api/gbfs/v2_3/tallahassee/gbfs
Spin Tampa	https://gbfs.spin.pm/api/gbfs/v2_3/tampa/gbfs
Spin Tempe	https://gbfs.spin.pm/api/gbfs/v2_3/tempe/gbfs
Spin UC San Diego	https://gbfs.spin.pm/api/gbfs/v2_3/uc_san_diego/gbfs
Spin University of Central Florida	https://gbfs.spin.pm/api/gbfs/v2_3/university_of_central_florida/gbfs
Spin Washington DC	https://gbfs.spin.pm/api/gbfs/v2_3/washington_dc/gbfs
Spin Wichita	https://gbfs.spin.pm/api/gbfs/v2_3/wichita/gbfs
Spin Winston Salem	https://gbfs.spin.pm/api/gbfs/v2_3/winston_salem/gbfs
Tier Asker	https://api.entur.io/mobility/v2/gbfs/tierasker/gbfs
Tier Baerum	https://api.entur.io/mobility/v2/gbfs/tierbaerum/gbfs
Tier Drammen	https://api.entur.io/mobility/v2/gbfs/tierdrammen/gbfs
Voi Technology AB	https://api.entur.io/mobility/v2/gbfs/voi/gbfs
Zvipp	https://api.entur.io/mobility/v2/gbfs/zvipptrondheim/gbfs

[^2]: https://github.com/MobilityData/gbfs#what-is-gbfs