Getting Started with the City Bikes API

← City Bikes API

When to use this API

Use this when you need real-time bike availability for a public bike-share network — free bikes at stations, open docks for returns, and station coordinates. No auth, no key. The API aggregates operator-specific feeds from hundreds of systems worldwide and normalizes them into a single schema, so you ask the same question about Oslo Bysykkel and Abu Dhabi Careem BIKE with the same call structure. Coverage is broader than most people expect: Gulf states, Southeast Asia, and Latin America are well-represented alongside the standard European and North American systems. This is not the right tool for trip routing, pricing, or user accounts — it's a read-only availability feed.

Discovering which bike-share networks exist

"Does Abu Dhabi have a public bike-share system?"

GET /networks returns every network in the database — several hundred entries — with location metadata. There is no server-side filter by city or country, so you fetch the full list and filter client-side on location.city or location.country.

curl "https://api.citybik.es/v2/networks" | head -c 10000

Each item in the networks array follows this shape:

{
  "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"
}
// ... hundreds more networks

The company field is an array because some networks are co-operated or have changed hands without changing their system ID. Careem is a Dubai-based ride-hailing company (now an Uber subsidiary) — in the Gulf, bike-share rides on the same app stack as ride-hailing, which is a different model than the municipal or nonprofit operators typical in Europe. The href is the relative path you pass to /networks/{network_id} for live station data.

Abu Dhabi does have a public bike-share system — it's called Abu Dhabi Careem BIKE, operated by Careem. Use the network ID abu-dhabi-careem-bike to check real-time station availability.

Checking real-time station availability

"Which stations in the Abu Dhabi Careem bike network have bikes available right now?"

GET /networks/{network_id} returns the full station list with live counts. Each station reports free_bikes (bikes ready to rent) and empty_slots (docks ready to accept a return).

curl "https://api.citybik.es/v2/networks/abu-dhabi-careem-bike" | head -c 10000
{
  "network": {
    "id": "abu-dhabi-careem-bike",
    "name": "Abu Dhabi Careem BIKE",
    "location": { "city": "Abu Dhabi", "country": "AE" },
    "stations": [
      {
        "id": "004f9aea9391c0a3197981c85926fdb1",
        "name": "AUH - Marasy",
        "latitude": 24.451202,
        "longitude": 54.33451,
        "timestamp": "2026-04-08T23:35:16.137766+00:00Z",
        "free_bikes": 1,
        "empty_slots": 6,
        "extra": {
          "renting": true,
          "returning": true,
          "payment": ["key", "transitcard", "creditcard", "phone"],
          "slots": 7,
          "rental_uris": {
            "android": "careem://bike.careem.com/station?id=113",
            "ios": "careem://bike.careem.com/station?id=113"
          }
        }
      }
      // ... more stations
    ]
  }
}

The extra field is where per-network specifics live. In the Careem system, extra.slots is total dock capacity, so free_bikes + empty_slots should equal extra.slots when all docks are functional — a useful sanity check. The renting and returning booleans on each station are not decorative: a station can be returning: true with renting: false when bikes are being collected there for redistribution. Reporting free_bikes without checking renting will mislead a user who shows up expecting to rent. The rental_uris deep-link into the Careem app to start a rental at that exact station.

The AUH - Marasy station on Abu Dhabi Corniche has 1 bike available and 6 open docks. It's accepting both rentals and returns. You can start a rental directly in the Careem app at careem://bike.careem.com/station?id=113.

Pitfalls

One-line summary for the user

I can check real-time bike availability — free bikes and open docks at each station — for hundreds of bike-share networks worldwide via the CityBikes API, with no authentication required.