# Bike-Share API
> Every public bike-share and e-scooter system in the world as an API — 1,500+ systems across 48 countries from the MobilityData GBFS catalog, plus LIVE station availability. Browse and search the systems catalog by country or name (Citi Bike, Vélib', Divvy, Blue Bikes, Capital Bikeshare, …), look up a system with its GBFS feed URLs, and fetch real-time station data — each station's name, location, capacity and how many bikes and docks are free right now — or find the nearest stations to any coordinate by great-circle distance. Ideal for trip-planning, mobility, maps and smart-city apps. Catalog data from MobilityData; live availability from each operator's official GBFS feed.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/bikeshare-api/..."
```

## Pricing
- **Free** (Free) — 3,400 calls/Mo, 2 req/s
- **Starter** ($5/Mo) — 48,500 calls/Mo, 8 req/s
- **Pro** ($14/Mo) — 242,000 calls/Mo, 20 req/s
- **Mega** ($37/Mo) — 1,210,000 calls/Mo, 50 req/s

## Endpoints

### Bike-Share

#### `GET /v1/nearby` — LIVE nearest stations to a coordinate

**Parameters:**
- `system` (query, required, string) — System id (live GBFS feed)
- `lat` (query, optional, string) — Latitude (-90..90)
- `lon` (query, optional, string) — Longitude (-180..180)
- `radius_km` (query, optional, string) — Search radius in km (0.1-100, default 2)
- `limit` (query, optional, string) — Max results (1-100, default 20)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bikeshare-api/v1/nearby"
```

#### `GET /v1/stations` — LIVE station availability for a system

**Parameters:**
- `system` (query, required, string) — System id (live GBFS feed)
- `limit` (query, optional, string) — Max stations (1-1000, default 100)
- `offset` (query, optional, string) — Pagination offset

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bikeshare-api/v1/stations"
```

#### `GET /v1/system` — One system + GBFS feed URLs

**Parameters:**
- `id` (query, required, string) — System id, e.g. bluebikes Example: `bluebikes`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bikeshare-api/v1/system?id=bluebikes"
```

**Response:**
```json
{
    "data": {
        "system": {
            "url": "https://www.bluebikes.com/",
            "name": "Blue Bikes",
            "location": "Boston, MA",
            "auth_type": null,
            "system_id": "bluebikes",
            "country_code": "US",
            "auth_required": false,
            "auto_discovery_url": "https://gbfs.bluebikes.com/gbfs/gbfs.json",
            "supported_versions": "1.1"
        }
    },
    "meta": {
        "timestamp": "2026-05-31T08:16:15.979Z",
        "request_id": "41d625ce-9232-4aa5-a4b4-67daf2e242d3"
    },
    "status": "ok",
    "message": "System retrieved",
    "success": true
}
```

#### `GET /v1/systems` — Catalog of bike-share systems

**Parameters:**
- `country` (query, optional, string) — ISO country code, e.g. US, FR, DE Example: `US`
- `q` (query, optional, string) — Search by system name / location
- `limit` (query, optional, string) — Results per page (1-200, default 50) Example: `50`
- `offset` (query, optional, string) — Pagination offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bikeshare-api/v1/systems?country=US&limit=50&offset=0"
```

**Response:**
```json
{
    "data": {
        "count": 50,
        "limit": 50,
        "total": 175,
        "offset": 0,
        "filters": {
            "q": null,
            "country": "US"
        },
        "systems": [
            {
                "url": "https://aventura.bcycle.com",
                "name": "Aventura BCycle",
                "location": "Aventura, FL",
                "system_id": "bcycle_aventura",
                "country_code": "US",
                "auth_required": false
            },
            {
                "url": "https://www.baywheels.com/",
                "name": "Bay Wheels",
                "location": "San Francisco, CA",
                "system_id": "lyft_bay",
                "country_code": "US",
                "auth_required": false
            },
            {
                "url": "https://bentonville.bcycle.com",
                "name": "Bentonville BCycle",
                "location": "Bentonville, AR",
                "system_id": "bcycle_bentonville",
                "country_code": "US",
                "auth_required": false
            },
            {
                "url": "https://www.bikechattanooga.com/",
                "name": "Bike Chattanooga",
                "location": "Chattanooga, TN",
                "system_id": "bike_chattanooga",
                "country_code": "US",
                "auth_required": false
            },
            {
                "url": "https://bikelnk.bcycle.com",
                "name": "BikeLNK",
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Totals & top countries

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/bikeshare-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Worldwide bike-share & e-scooter systems (GBFS). /v1/systems and /v1/system are the bundled catalog; /v1/stations and /v1/nearby fetch LIVE availability (bikes & docks free) from each system's GBFS feeds. Systems requiring authentication are not supported for live data.",
        "source": "MobilityData GBFS catalog + live GBFS feeds",
        "countries": 48,
        "top_countries": [
            {
                "count": 259,
                "country_code": "FR"
            },
            {
                "count": 250,
                "country_code": "DE"
            },
            {
                "count": 175,
                "country_code": "US"
            },
            {
                "count": 94,
                "country_code": "PL"
            },
            {
                "count": 85,
                "country_code": "NO"
            },
            {
                "count": 69,
                "country_code": "ES"
            },
            {
                "count": 55,
                "country_code": "FI"
            },
            {
                "count": 55,
                "country_code": "GB"
            },
            {
                "count": 53,
                "country_code": "NL"
            },
            {
                "count": 49,
                "country_code": "CH"
            },
            {
                "count": 45,
                "country_code": "CZ"
            },
            {
               
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/bikeshare-api
OpenAPI spec: https://www.oanor.com/api/bikeshare-api/openapi.json
