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
| Action | What it does |
|---|---|
| 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. |
| Find networks near a place | Find the bike share schemes closest to a point, nearest first, each with how far away it is. |
| 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. |
| 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. |
| 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. |
| 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. |
| List countries | List every country with at least one bike share network, with how many networks and how many cities each has. |
| 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. |
| List networks | Browse the bike share networks CityBikes tracks worldwide. |
| List stations | List a network's docking stations with what is waiting at each one right now. |
| 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. |
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
- Latitude
latitudenumberRequired - Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
- Longitude
longitudenumberRequired - 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. - Network
network_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 types
vehicle_kindslist - Optional. Only these kinds of vehicle. Leave empty for every kind.One or more of:
bike,ebike(E-bike),scooter. - Networks to search
max_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 results
limitnumber - 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
- Latitude
latitudenumberRequired - Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
- Longitude
longitudenumberRequired - 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 results
limitnumber - 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
- Latitude
latitudenumberRequired - Latitude of the point to search from, in decimal degrees (48.8566 for Paris).From -90 to 90.
- Longitude
longitudenumberRequired - 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. - Network
network_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 available
min_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 free
min_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 search
max_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 results
limitnumber - 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
- Network
network_idtextRequired - The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
- Include every station
include_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
- Network
network_idtextRequired - The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
- Station
station_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
- Network
network_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
- Network
network_idtextRequired - The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
- Vehicle types
vehicle_kindslist - Optional. Only these kinds of vehicle. Leave empty for every kind.One or more of:
bike,ebike(E-bike),scooter. - Only working ones
only_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 results
limitnumber - Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - 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
- Country
countrytext - Optional. Only networks in this country. The list holds just the countries that actually have one, with how many each has.
- City
citytext - Optional. Only networks serving this city. Pick from the list, which narrows to the country chosen above.
- Operator
companytext - Optional. Only networks run by an operator whose name contains this, or built on a platform of that name (e.g. 'Nextbike', 'Lyft').
- Must offer
offerslist - 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 by
sort_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 results
limitnumber - Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - 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
- Network
network_idtextRequired - The bike share network to read. Pick it from the list: every network CityBikes tracks is there, labelled with its city.
- Search text
querytext - Optional. Only stations whose name, address or printed number contains this. Matching ignores capitals.
- Minimum bikes available
min_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 free
min_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 stations
only_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 by
sort_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 results
limitnumber - Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - 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 text
querytextRequired - The text to look for. Matching ignores capitals and matches anywhere, so "barce" finds Barcelona and "velib" finds Vélib' Métropole.
- Number of results
limitnumber - Optional. How many results to return in this page. Between 1 and 500; 25 by default.From 1 to 500. Default:
25. - Skip
offsetnumber - 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
}