CityBikes

App · Travel & Places · 11 actions

Live public bike share data for about 800 schemes worldwide, from Vélib' in Paris to Citi Bike in New York, all through one API. Find the networks near a place, search them by city or operator, and read any station's bikes and free docks right now, including how many of the bikes are electric. Find the stations nearest a set of coordinates without knowing what the local scheme is called, locate dockless bikes and scooters parked loose, and add a whole network up into one availability figure for a scheduled check. No account or API key required.

Actions

ActionWhat it does
Find free-floating vehicles near a placeFind the dockless bikes and scooters closest to a point, nearest first, each with how far away it is.
Find networks near a placeFind the bike share schemes closest to a point, nearest first, each with how far away it is.
Find stations near a placeFind the docking stations closest to a point, nearest first, each with how far away it is and what is waiting there.
Get a networkGet one network's details: who runs it, where it is, whether it has electric bikes, the licence its data is published under, together with its live availability totals.
Get a stationGet one station's live availability: bikes waiting, docks free, how many of the bikes are electric, and whether the station is renting and accepting returns.
Get availability summaryAdd a whole network up into one set of numbers: bikes available, docks free, how many stations are empty or full, how many vehicles are parked loose, and how fresh the data is.
List countriesList every country with at least one bike share network, with how many networks and how many cities each has.
List free-floating vehiclesList the bikes and scooters a network has parked away from any station, the dockless ones a rider can leave anywhere.
List networksBrowse the bike share networks CityBikes tracks worldwide.
List stationsList a network's docking stations with what is waiting at each one right now.
Search networksFind a bike share network by name, city, country, operator or platform, the quickest way to turn "the scheme in Barcelona" into the id every other action needs.

Find free-floating vehicles near a place

Find the dockless bikes and scooters closest to a point, nearest first, each with how far away it is. Leave the network blank and it searches the schemes nearest the point. No API key required.

Inputs

LatitudelatitudenumberRequired
Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point to search from, in decimal degrees (2.3522 for Paris).From -180 to 180.
Search radius (km)radius_kmnumber
How far from the point to look, in kilometres. 1 by default: about a ten-minute walk. Up to 100.From 0.01 to 100.0. Default: 1.0.
Networknetwork_idtext
Optional. The network to search. Leave blank to search the networks closest to the point, which is what you want when you know where you are but not what the local scheme is called.
Vehicle typesvehicle_kindslist
Optional. Only these kinds of vehicle. Leave empty for every kind.One or more of: bike, ebike (E-bike), scooter.
Networks to searchmax_networksnumber
Optional. How many nearby networks to open when no network is named: 3 by default, up to 5. Cities often have more than one scheme, so the default looks at a few; each one is a separate request, so keep it low unless you need the overlap. Ignored when a network is chosen.From 1 to 5. Default: 3.
Number of resultslimitnumber
Optional. How many results to return, nearest first. Between 1 and 200; 10 by default.From 1 to 200. Default: 10.

Outputs

countnumber
How many records are in this page.
latitudenumber
The latitude that was searched from.
longitudenumber
The longitude that was searched from.
nearest_vehicleobject
The closest vehicle that passed the filters. Null when nothing was in range.
networks_searchedlist
The networks that were actually opened. Worth reading when no network was named, to see which systems the answer came from.
radius_kmnumber
The radius that was applied, in kilometres, after the maximum was enforced.
vehicleslist
The vehicles in range, nearest first.
Example output
{
  "count": 1,
  "latitude": 50.8229,
  "longitude": -0.1363,
  "nearest_vehicle": {
    "distance_km": 0.087,
    "extra": {
      "online": true,
      "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
    },
    "id": "020f4c88b358f88dff51f86f54e051bb",
    "is_ebike": true,
    "is_online": true,
    "kind": "ebike",
    "kind_label": "E-bike",
    "latitude": 50.824215,
    "longitude": -0.153256,
    "network": {
      "city": "Paris",
      "country": "France",
      "id": "velib",
      "name": "V\u00e9lib' M\u00e9tropole"
    },
    "timestamp": "2026-08-23T23:13:35Z",
    "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
  },
  "networks_searched": [
    {
      "city": "Paris",
      "country": "France",
      "id": "velib",
      "name": "V\u00e9lib' M\u00e9tropole"
    }
  ],
  "radius_km": 1.0,
  "vehicles": [
    {
      "distance_km": 0.087,
      "extra": {
        "online": true,
        "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
      },
      "id": "020f4c88b358f88dff51f86f54e051bb",
      "is_ebike": true,
      "is_online": true,
      "kind": "ebike",
      "kind_label": "E-bike",
      "latitude": 50.824215,
      "longitude": -0.153256,
      "network": {
        "city": "Paris",
        "country": "France",
        "id": "velib",
        "name": "V\u00e9lib' M\u00e9tropole"
      },
      "timestamp": "2026-08-23T23:13:35Z",
      "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
    }
  ]
}

Find networks near a place

Find the bike share schemes closest to a point, nearest first, each with how far away it is. Use it to answer "is there bike share where I'm going?" before looking for a station. No API key required.

Inputs

LatitudelatitudenumberRequired
Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point to search from, in decimal degrees (2.3522 for Paris).From -180 to 180.
Search radius (km)radius_kmnumber
How far from the point to look, in kilometres. 50 by default: a city and its neighbours. Raise it to cover a region.From 0.01 to 20037.0. Default: 50.0.
Number of resultslimitnumber
Optional. How many results to return, nearest first. Between 1 and 200; 10 by default.From 1 to 200. Default: 10.

Outputs

countnumber
How many records are in this page.
latitudenumber
The latitude that was searched from.
longitudenumber
The longitude that was searched from.
nearest_networkobject
The closest network, ready to feed straight into a station lookup. Null when nothing was in range.
networkslist
The networks in range, nearest first.
radius_kmnumber
The radius that was applied, in kilometres, after the maximum was enforced.
Example output
{
  "count": 1,
  "latitude": 48.8566,
  "longitude": 2.3522,
  "nearest_network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": 0.812,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "networks": [
    {
      "api_url": "https://api.citybik.es/v2/networks/velib",
      "city": "Paris",
      "companies": [
        "Smovengo"
      ],
      "country": "France",
      "country_code": "FR",
      "distance_km": 0.812,
      "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
      "has_ebikes": true,
      "has_scooters": null,
      "id": "velib",
      "latitude": 48.856614,
      "license_name": "OPEN LICENCE 2.0",
      "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
      "longitude": 2.3522219,
      "name": "V\u00e9lib' M\u00e9tropole",
      "source_url": null,
      "system": null
    }
  ],
  "radius_km": 50.0
}

Find stations near a place

Find the docking stations closest to a point, nearest first, each with how far away it is and what is waiting there. Ask for a minimum number of bikes to find somewhere to pick one up, or a minimum number of free docks to find somewhere to leave one. Leave the network blank and it searches the schemes nearest the point, so a set of coordinates is all you need. No API key required.

Inputs

LatitudelatitudenumberRequired
Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point to search from, in decimal degrees (2.3522 for Paris).From -180 to 180.
Search radius (km)radius_kmnumber
How far from the point to look, in kilometres. 1 by default: about a ten-minute walk. Up to 100.From 0.01 to 100.0. Default: 1.0.
Networknetwork_idtext
Optional. The network to search. Leave blank to search the networks closest to the point, which is what you want when you know where you are but not what the local scheme is called.
Minimum bikes availablemin_free_bikesnumber
Optional. Only stations with at least this many bikes waiting. Set it to 1 to skip the empty ones. Stations that don't report a bike count are left out, since they can't be shown to meet the minimum.At least 0.
Minimum docks freemin_empty_slotsnumber
Optional. Only stations with at least this many free docks. Use it to find somewhere to return a bike. Stations that don't report a dock count are left out.At least 0.
Networks to searchmax_networksnumber
Optional. How many nearby networks to open when no network is named: 3 by default, up to 5. Cities often have more than one scheme, so the default looks at a few; each one is a separate request, so keep it low unless you need the overlap. Ignored when a network is chosen.From 1 to 5. Default: 3.
Number of resultslimitnumber
Optional. How many results to return, nearest first. Between 1 and 200; 10 by default.From 1 to 200. Default: 10.

Outputs

countnumber
How many records are in this page.
latitudenumber
The latitude that was searched from.
longitudenumber
The longitude that was searched from.
nearest_stationobject
The closest station that passed the filters. Null when nothing was in range.
networks_searchedlist
The networks that were actually opened. Worth reading when no network was named, to see which systems the answer came from.
radius_kmnumber
The radius that was applied, in kilometres, after the maximum was enforced.
stationslist
The stations in range, nearest first.
Example output
{
  "count": 1,
  "latitude": 48.8566,
  "longitude": 2.3522,
  "nearest_station": {
    "address": null,
    "availability_ratio": 0.12,
    "distance_km": 0.214,
    "ebikes": 2,
    "empty_slots": 22,
    "extra": {
      "ebikes": 2,
      "normal_bikes": 1,
      "renting": 1,
      "returning": 1,
      "slots": 25,
      "uid": "22002"
    },
    "free_bikes": 3,
    "has_ebikes": true,
    "has_payment_terminal": false,
    "id": "0003131bffcf527ba3a560fc46d38b6f",
    "is_empty": false,
    "is_full": false,
    "is_online": null,
    "is_renting": true,
    "is_returning": true,
    "is_virtual": false,
    "last_updated": "2026-08-23T12:22:07Z",
    "latitude": 48.888559,
    "longitude": 2.2642,
    "name": "Argenson - Ch\u00e2teau",
    "network": {
      "city": "Paris",
      "country": "France",
      "id": "velib",
      "name": "V\u00e9lib' M\u00e9tropole"
    },
    "normal_bikes": 1,
    "payment_methods": [],
    "rental_uris": {
      "android": null,
      "ios": null,
      "web": null
    },
    "station_number": null,
    "status": null,
    "timestamp": "2026-08-23T12:31:27Z",
    "total_slots": 25,
    "uid": "22002"
  },
  "networks_searched": [
    {
      "city": "Paris",
      "country": "France",
      "id": "velib",
      "name": "V\u00e9lib' M\u00e9tropole"
    }
  ],
  "radius_km": 1.0,
  "stations": [
    {
      "address": null,
      "availability_ratio": 0.12,
      "distance_km": 0.214,
      "ebikes": 2,
      "empty_slots": 22,
      "extra": {
        "ebikes": 2,
        "normal_bikes": 1,
        "renting": 1,
        "returning": 1,
        "slots": 25,
        "uid": "22002"
      },
      "free_bikes": 3,
      "has_ebikes": true,
      "has_payment_terminal": false,
      "id": "0003131bffcf527ba3a560fc46d38b6f",
      "is_empty": false,
      "is_full": false,
      "is_online": null,
      "is_renting": true,
      "is_returning": true,
      "is_virtual": false,
      "last_updated": "2026-08-23T12:22:07Z",
      "latitude": 48.888559,
      "longitude": 2.2642,
      "name": "Argenson - Ch\u00e2teau",
      "network": {
        "city": "Paris",
        "country": "France",
        "id": "velib",
        "name": "V\u00e9lib' M\u00e9tropole"
      },
      "normal_bikes": 1,
      "payment_methods": [],
      "rental_uris": {
        "android": null,
        "ios": null,
        "web": null
      },
      "station_number": null,
      "status": null,
      "timestamp": "2026-08-23T12:31:27Z",
      "total_slots": 25,
      "uid": "22002"
    }
  ]
}

Get a network

Get one network's details: who runs it, where it is, whether it has electric bikes, the licence its data is published under, together with its live availability totals. Turn the station list on to get every station in the same step. No API key required.

Inputs

Networknetwork_idtextRequired
The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
Include every stationinclude_stationstrue/false
Optional. Also return the full station list. Off by default: the totals below already cover the whole network, and a large city's station list is a megabyte of data to carry between steps. Use List stations when you want to filter or page them.Default: false.

Outputs

networkobject
One bike share network and everything CityBikes knows about it.
stationslist
Every station in the network. Empty unless the station list was asked for.
stations_includedtrue/false
True when the station list was asked for, so an empty list can be told from one that wasn't requested.
summaryobject
The whole network's availability right now, added up across every station. A count no station reports is null rather than 0.
Example output
{
  "network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": null,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "stations": [],
  "stations_included": false,
  "summary": {
    "availability_ratio": 0.478,
    "ebikes": 7411,
    "empty_slots": 20114,
    "free_bikes": 18432,
    "free_floating_vehicles": 0,
    "newest_reading": "2026-08-23T12:31:27Z",
    "normal_bikes": 11021,
    "oldest_reading": "2026-08-23T12:29:30Z",
    "station_count": 1518,
    "stations_empty": 116,
    "stations_full": 63,
    "stations_offline": 0,
    "stations_with_bikes": 1402,
    "total_slots": 41560,
    "vehicles_by_kind": {}
  }
}

Get a station

Get one station's live availability: bikes waiting, docks free, how many of the bikes are electric, and whether the station is renting and accepting returns. Takes the station's CityBikes id, the operator's own id, the number painted on it, or its exact name. No API key required.

Inputs

Networknetwork_idtextRequired
The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
Stationstation_idtextRequired
Which station. Use the id from List stations, or the operator's own id, the number printed on the station, or its exact name, whichever you have.

Outputs

matched_ontext
Which field the reference matched: 'id', 'uid', 'station_number' or 'name'.
networkobject
One bike share network and everything CityBikes knows about it.
stationobject
One docking station and what is waiting at it right now.
Example output
{
  "matched_on": "id",
  "network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": null,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "station": {
    "address": null,
    "availability_ratio": 0.12,
    "distance_km": null,
    "ebikes": 2,
    "empty_slots": 22,
    "extra": {
      "ebikes": 2,
      "normal_bikes": 1,
      "renting": 1,
      "returning": 1,
      "slots": 25,
      "uid": "22002"
    },
    "free_bikes": 3,
    "has_ebikes": true,
    "has_payment_terminal": false,
    "id": "0003131bffcf527ba3a560fc46d38b6f",
    "is_empty": false,
    "is_full": false,
    "is_online": null,
    "is_renting": true,
    "is_returning": true,
    "is_virtual": false,
    "last_updated": "2026-08-23T12:22:07Z",
    "latitude": 48.888559,
    "longitude": 2.2642,
    "name": "Argenson - Ch\u00e2teau",
    "network": {
      "city": "Paris",
      "country": "France",
      "id": "velib",
      "name": "V\u00e9lib' M\u00e9tropole"
    },
    "normal_bikes": 1,
    "payment_methods": [],
    "rental_uris": {
      "android": null,
      "ios": null,
      "web": null
    },
    "station_number": null,
    "status": null,
    "timestamp": "2026-08-23T12:31:27Z",
    "total_slots": 25,
    "uid": "22002"
  }
}

Get availability summary

Add a whole network up into one set of numbers: bikes available, docks free, how many stations are empty or full, how many vehicles are parked loose, and how fresh the data is. Built for a scheduled check: alert when too many stations run empty, or chart availability over the day. No API key required.

Inputs

Networknetwork_idtextRequired
The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.

Outputs

networkobject
One bike share network and everything CityBikes knows about it.
summaryobject
The whole network's availability right now, added up across every station. A count no station reports is null rather than 0.
Example output
{
  "network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": null,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "summary": {
    "availability_ratio": 0.478,
    "ebikes": 7411,
    "empty_slots": 20114,
    "free_bikes": 18432,
    "free_floating_vehicles": 0,
    "newest_reading": "2026-08-23T12:31:27Z",
    "normal_bikes": 11021,
    "oldest_reading": "2026-08-23T12:29:30Z",
    "station_count": 1518,
    "stations_empty": 116,
    "stations_full": 63,
    "stations_offline": 0,
    "stations_with_bikes": 1402,
    "total_slots": 41560,
    "vehicles_by_kind": {}
  }
}

List countries

List every country with at least one bike share network, with how many networks and how many cities each has. A one-step picture of where public bike share exists. No API key required.

Inputs

None.

Outputs

countnumber
How many countries have a network.
countrieslist
Every country with a network, A to Z.
network_countnumber
How many networks there are in total.
Example output
{
  "count": 52,
  "countries": [
    {
      "city_count": 64,
      "country": "France",
      "country_code": "FR",
      "network_count": 66
    }
  ],
  "network_count": 803
}

List free-floating vehicles

List the bikes and scooters a network has parked away from any station, the dockless ones a rider can leave anywhere. Filter to a vehicle type or to the ones reporting themselves as working. Dock-only schemes return an empty list. No API key required.

Inputs

Networknetwork_idtextRequired
The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
Vehicle typesvehicle_kindslist
Optional. Only these kinds of vehicle. Leave empty for every kind.One or more of: bike, ebike (E-bike), scooter.
Only working onesonly_onlinetrue/false
Optional. Leave out anything reporting itself as down. Off by default. Operators that never report a status are always kept. Silence isn't a fault.Default: false.
Number of resultslimitnumber
Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default: 25.
Skipoffsetnumber
Optional. How many matches to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more matched than this page holds.
networkobject
One bike share network and everything CityBikes knows about it.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
total_countnumber
How many records matched in total, across every page.
vehicle_countnumber
How many free-floating vehicles the network has in total, before any filter. 0 for a dock-only scheme.
vehicleslist
The vehicles in this page.
Example output
{
  "count": 1,
  "has_more": true,
  "network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": null,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "next_offset": 25,
  "total_count": 36,
  "vehicle_count": 36,
  "vehicles": [
    {
      "distance_km": null,
      "extra": {
        "online": true,
        "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
      },
      "id": "020f4c88b358f88dff51f86f54e051bb",
      "is_ebike": true,
      "is_online": true,
      "kind": "ebike",
      "kind_label": "E-bike",
      "latitude": 50.824215,
      "longitude": -0.153256,
      "network": {
        "city": "Paris",
        "country": "France",
        "id": "velib",
        "name": "V\u00e9lib' M\u00e9tropole"
      },
      "timestamp": "2026-08-23T23:13:35Z",
      "uid": "b2a04a20a30f4bc0886d23ebec9d02d7"
    }
  ]
}

List networks

Browse the bike share networks CityBikes tracks worldwide. Narrow to a country, a city or an operator, or to the schemes that run electric bikes or scooters, and order the result by name, city or country. No API key required.

Inputs

Countrycountrytext
Optional. Only networks in this country. The list holds just the countries that actually have one, with how many each has.
Citycitytext
Optional. Only networks serving this city. Pick from the list, which narrows to the country chosen above.
Operatorcompanytext
Optional. Only networks run by an operator whose name contains this, or built on a platform of that name (e.g. 'Nextbike', 'Lyft').
Must offerofferslist
Optional. Only networks running these. Every network has ordinary pedal bikes, so only the extras are listed here.One or more of: ebikes (E-bikes), scooters.
Order bysort_bytext
Optional. How to order the result. By network name by default; ties always break by name, so paging is stable.One of: name (Network name), city, country. Default: name.
Number of resultslimitnumber
Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default: 25.
Skipoffsetnumber
Optional. How many matches to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more matched than this page holds.
networkslist
The networks in this page.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
sorted_bytext
The ordering that was applied.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "networks": [
    {
      "api_url": "https://api.citybik.es/v2/networks/velib",
      "city": "Paris",
      "companies": [
        "Smovengo"
      ],
      "country": "France",
      "country_code": "FR",
      "distance_km": null,
      "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
      "has_ebikes": true,
      "has_scooters": null,
      "id": "velib",
      "latitude": 48.856614,
      "license_name": "OPEN LICENCE 2.0",
      "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
      "longitude": 2.3522219,
      "name": "V\u00e9lib' M\u00e9tropole",
      "source_url": null,
      "system": null
    }
  ],
  "next_offset": 25,
  "sorted_by": "name",
  "total_count": 66
}

List stations

List a network's docking stations with what is waiting at each one right now. Search by name or address, keep only the stations with bikes to take or docks to return to, and order by name or by availability. No API key required.

Inputs

Networknetwork_idtextRequired
The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
Search textquerytext
Optional. Only stations whose name, address or printed number contains this. Matching ignores capitals.
Minimum bikes availablemin_free_bikesnumber
Optional. Only stations with at least this many bikes waiting. Set it to 1 to skip the empty ones. Stations that don't report a bike count are left out, since they can't be shown to meet the minimum.At least 0.
Minimum docks freemin_empty_slotsnumber
Optional. Only stations with at least this many free docks. Use it to find somewhere to return a bike. Stations that don't report a dock count are left out.At least 0.
Only working stationsonly_onlinetrue/false
Optional. Leave out stations reporting themselves as down. Off by default. Operators that never report a status are always kept. Silence isn't a fault.Default: false.
Order bysort_bytext
Optional. How to order the stations. By name by default. The availability orderings run highest first and put the stations that don't report a count last, rather than treating them as zero.One of: name (Station name), free_bikes (Most bikes available), empty_slots (Most empty docks). Default: name.
Number of resultslimitnumber
Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default: 25.
Skipoffsetnumber
Optional. How many matches to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more matched than this page holds.
networkobject
One bike share network and everything CityBikes knows about it.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
sorted_bytext
The ordering that was applied.
station_countnumber
How many stations the network has in total, before any filter.
stationslist
The stations in this page.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": true,
  "network": {
    "api_url": "https://api.citybik.es/v2/networks/velib",
    "city": "Paris",
    "companies": [
      "Smovengo"
    ],
    "country": "France",
    "country_code": "FR",
    "distance_km": null,
    "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
    "has_ebikes": true,
    "has_scooters": null,
    "id": "velib",
    "latitude": 48.856614,
    "license_name": "OPEN LICENCE 2.0",
    "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
    "longitude": 2.3522219,
    "name": "V\u00e9lib' M\u00e9tropole",
    "source_url": null,
    "system": null
  },
  "next_offset": 25,
  "sorted_by": "name",
  "station_count": 1518,
  "stations": [
    {
      "address": null,
      "availability_ratio": 0.12,
      "distance_km": null,
      "ebikes": 2,
      "empty_slots": 22,
      "extra": {
        "ebikes": 2,
        "normal_bikes": 1,
        "renting": 1,
        "returning": 1,
        "slots": 25,
        "uid": "22002"
      },
      "free_bikes": 3,
      "has_ebikes": true,
      "has_payment_terminal": false,
      "id": "0003131bffcf527ba3a560fc46d38b6f",
      "is_empty": false,
      "is_full": false,
      "is_online": null,
      "is_renting": true,
      "is_returning": true,
      "is_virtual": false,
      "last_updated": "2026-08-23T12:22:07Z",
      "latitude": 48.888559,
      "longitude": 2.2642,
      "name": "Argenson - Ch\u00e2teau",
      "network": {
        "city": "Paris",
        "country": "France",
        "id": "velib",
        "name": "V\u00e9lib' M\u00e9tropole"
      },
      "normal_bikes": 1,
      "payment_methods": [],
      "rental_uris": {
        "android": null,
        "ios": null,
        "web": null
      },
      "station_number": null,
      "status": null,
      "timestamp": "2026-08-23T12:31:27Z",
      "total_slots": 25,
      "uid": "22002"
    }
  ],
  "total_count": 1518
}

Search networks

Find a bike share network by name, city, country, operator or platform, the quickest way to turn "the scheme in Barcelona" into the id every other action needs. No API key required.

Inputs

Search textquerytextRequired
The text to look for. Matching ignores capitals and matches anywhere, so "barce" finds Barcelona and "velib" finds Vélib' Métropole.
Number of resultslimitnumber
Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default: 25.
Skipoffsetnumber
Optional. How many matches to skip before this page. Use the next offset from the previous result to page through. 0 by default.At least 0. Default: 0.

Outputs

countnumber
How many records are in this page.
has_moretrue/false
True when more matched than this page holds.
networkslist
The matching networks in this page.
next_offsetnumber
The offset that fetches the next page. Null when this is the last one.
querytext
The text that was searched for.
total_countnumber
How many records matched in total, across every page.
Example output
{
  "count": 1,
  "has_more": false,
  "networks": [
    {
      "api_url": "https://api.citybik.es/v2/networks/velib",
      "city": "Paris",
      "companies": [
        "Smovengo"
      ],
      "country": "France",
      "country_code": "FR",
      "distance_km": null,
      "gbfs_url": "https://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/gbfs.json",
      "has_ebikes": true,
      "has_scooters": null,
      "id": "velib",
      "latitude": 48.856614,
      "license_name": "OPEN LICENCE 2.0",
      "license_url": "etalab.gouv.fr/wp-content/uploads/2018/11/open-licence.pdf",
      "longitude": 2.3522219,
      "name": "V\u00e9lib' M\u00e9tropole",
      "source_url": null,
      "system": null
    }
  ],
  "next_offset": null,
  "query": "velib",
  "total_count": 1
}

On this page