Access networks

When the user asks about bike-share availability — free bikes, open docks, station locations — or which bike-share systems exist in a city — reach for CityBikes. Real-time station data for hundreds of networks worldwide, no auth required.

access-networks · v1 · updated 2026-04-16

Agents: This page is a SKILL.md-style capability guide. For JSON, call GET /api/skills/access-networks. To drop this into a local Claude Code install, copy the frontmatter + body below into ~/.claude/skills/access-networks/SKILL.md.

When to use this skill

When the user asks about bike-share availability — how many free bikes are at stations near them, whether a dock is open for returns, or which bike-share systems exist in a given city. Covers hundreds of networks worldwide under one schema, from Oslo Bysykkel to Abu Dhabi Careem BIKE. This is a read-only availability feed. For trip routing, pricing, or user accounts, this is the wrong skill.

Your best first call

If you already know the network ID, call directly:

curl "https://api.citybik.es/v2/networks/abu-dhabi-careem-bike"

If you need to find the network ID for a city, fetch the catalog once and index it:

curl "https://api.citybik.es/v2/networks"

No auth. No key. The /networks response is several hundred entries with no server-side filter — fetch it once, parse it into a dict keyed by location.city, and reuse the index within a session.

The /networks/{network_id} response contains a network.stations array. The fields an agent uses:

Fallbacks (when the best call isn't enough)

Pitfalls

One-line summary for the user

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

APIs this skill uses

City Bikes API · primary · verified

Real-time global bike sharing system data API. Provides information about bike networks, stations, and available bikes worldwide.

Generated from

City Bikes API tutorial Getting Started with the City Bikes API

SKILL.md source (frontmatter + body)
---
name: access-networks
description: When the user asks about bike-share availability — free bikes, open docks, station locations — or which bike-share systems exist in a city — reach for CityBikes. Real-time station data for hundreds of networks worldwide, no auth required.
---

## When to use this skill

When the user asks about bike-share availability — how many free bikes are at stations near them, whether a dock is open for returns, or which bike-share systems exist in a given city. Covers hundreds of networks worldwide under one schema, from Oslo Bysykkel to Abu Dhabi Careem BIKE. This is a read-only availability feed. For trip routing, pricing, or user accounts, this is the wrong skill.

## Your best first call

If you already know the network ID, call directly:

```bash
curl "https://api.citybik.es/v2/networks/abu-dhabi-careem-bike"
```

If you need to find the network ID for a city, fetch the catalog once and index it:

```bash
curl "https://api.citybik.es/v2/networks"
```

No auth. No key. The `/networks` response is several hundred entries with no server-side filter — fetch it once, parse it into a dict keyed by `location.city`, and reuse the index within a session.

The `/networks/{network_id}` response contains a `network.stations` array. The fields an agent uses:

- `name` — station label (e.g. "AUH - Marasy")
- `free_bikes` — bikes ready to rent
- `empty_slots` — open docks for returns
- `extra.renting` / `extra.returning` — booleans; a station can have `free_bikes > 0` yet `renting: false` during redistribution
- `extra.rental_uris` — deep links into the operator's mobile app
- `timestamp` — when the aggregator last polled this station's feed

## Fallbacks (when the best call isn't enough)

- **Need fresher or more detailed station data** → Each network's `gbfs_href` (available from `/networks`) links to the operator's own GBFS v2 feed, which may have fields CityBikes doesn't normalize.

## Pitfalls

- `free_bikes > 0` does not mean a user can rent. Check `extra.renting` first — stations undergoing redistribution show bikes but refuse rentals. Surfacing `free_bikes` without `renting` will mislead.
- `extra` varies by operator. The Careem system has `payment`, `slots`, and `rental_uris`; other networks may expose none of these. Check for key presence before reading.
- `timestamp` is when the CityBikes aggregator polled the operator's feed, not when the bike count last changed. Smaller networks can have stale data hours old. Always surface the timestamp alongside availability so the user can judge freshness.
- `company` is an array because some networks are co-operated or have changed hands. Do not assume a single string.

## One-line summary for the user

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

« Back to all skills