BYTETOOLS

CityBikes API

Free CityBikes API with no key: live bike share station availability across 500+ networks in cities worldwide, with coordinates and free bike counts. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the CityBikes API?

CityBikes is a free, key-free API aggregating live bike share data from more than 500 networks worldwide, returning station locations, available bikes and free docks for each system.

CityBikes solves a genuinely annoying problem: every city's bike share scheme publishes data in its own format, if at all. CityBikes normalises hundreds of them into one consistent schema, so the same code works in Barcelona, New York and Taipei.

The API is two-step by design. First fetch `/v2/networks` to find the network id for a city, then request that network to get its stations with live availability. Fetching all networks with full station detail in one call is not supported, and would be enormous.

Quick facts

Base URL
https://api.citybik.es/v2
Authentication
No API key required.
Rate limit
No published limit; the maintainers ask for reasonable polling.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the CityBikes API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. List all bike share networks

GET https://api.citybik.es/v2/networks

curl
curl 'https://api.citybik.es/v2/networks'
JavaScript (fetch)
const res = await fetch("https://api.citybik.es/v2/networks");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.citybik.es/v2/networks", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "networks": [
    {
      "id": "abu-dhabi-careem-bike",
      "name": "Abu Dhabi Careem BIKE",
      "location": {
        "latitude": 24.4866,
        "longitude": 54.3728,
        "city": "Abu Dhabi",
        "country": "AE"
      },
      "href": "/v2/networks/abu-dhabi-careem-bike",
      "company": [
        "Careem"
      ],
      "gbfs_href": "https://dubai.publicbikesystem.net/customer/gbfs/v2/en/gbfs.json"
    },
    {
      "id": "acces-velo-saguenay",
      "name": "Accès Vélo",
      "location": {
        "latitude": 48.433333,
        "longitude": -71.083333,
        "city": "Saguenay",
        "country": "CA"
      },
      "href": "/v2/networks/acces-velo-saguenay",
      "company": [
        "PBSC Urban Solutions"
      ],
      "gbfs_href": "https://saguenay.publicbikesystem.net/customer/gbfs/v2/gbfs.json"
    },
    {
      "id": "aduriz",
      "name": "Aduriz en Bici",
      "location": {
        "latitude": 42.9294,
        "longitude": -3.488,
        "city": "Medina de Pomar",
        "country": "ES"
      },
      "href": "/v2/networks/aduriz",
      "company": [
        "Instituto Tecnológico de Castilla y León (ITCL)"
      ],
      "system": "bicicard"
    },
    {
      "id": "aksu",
      "name": "Aksu",
      "location": {
        "latitude": 41.1664,
        "longitude": 80.2617,
        "city": "阿克苏市 (Aksu City)",
        "country": "CN"
      },
      "href": "/v2/networks/aksu",
      "company": [
        "阿克苏公共服务"
      ]
    },
    {
      "id": "alba",
      "name": "Alba",
      "location": {
        "latitude": 44.716667,

Parameters

ParameterTypeRequiredDescription
fieldsstringOptionalRestrict returned fields on the networks list. id,name,location
networks/<id>pathOptionalFetch one network including its stations. networks/bicing

Response fields

networks[].idstring
Network identifier used to fetch station detail.
networks[].namestring
Bike share scheme name.
networks[].locationobject
City, country and centre coordinates.
networks[].companyarray
Operating company or companies.
network.stations[].free_bikesinteger
Bikes currently available at that station.
network.stations[].empty_slotsinteger
Free docks available for returning a bike.

What you can build with the CityBikes API

  • Build a bike share availability map for any supported city
  • Find the nearest station with available bikes or free docks
  • Analyse usage patterns across cities with one consistent schema
  • Add multi-city bike hire to a travel or mobility app

Common errors and how to fix them

404

Unknown network id.

Fix: Fetch /v2/networks first and use an id from that list — ids are not city names.

Large networks list

Over 500 networks with full metadata.

Fix: Use the `fields` parameter to request only id, name and location when building a city picker.

Stale availability

Some networks update infrequently.

Fix: Check the station `timestamp` field; not every operator publishes real-time counts.

CityBikes API — frequently asked questions

Is the CityBikes API free?

Yes, completely free and open source with no API key required.

How many cities does it cover?

More than 500 bike share networks worldwide, normalised into a single consistent schema regardless of the local operator's own format.

How do I get stations for a specific city?

Two steps: fetch /v2/networks to find the network id for that city, then request /v2/networks/<id> to get its stations with live availability.

Is the availability data real-time?

It depends on the operator. Most update every minute or two, but some publish less frequently. Check the station timestamp before presenting counts as live.

Tools that pair with this API

CityBikes is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.