Transportation — entry 069 of 69

Velib metropolis, Paris, France

Verified Jul 2026

Real-time station status and bike-availability feed for Paris's Velib' Metropolis bike-share network (1,400+ stations across Greater Paris), published by operator Smovengo as a standard GBFS 1.0 feed. Every endpoint is keyless JSON updated roughly every minute, with no CORS headers on the data host so browser-side fetches need a proxy.

Vélib' Métropole is the bike-share system of Paris and its suburbs. Its open-data feed follows the GBFS standard (General Bikeshare Feed Specification). The station_status.json file gives the live count of bikes and free docks at each station.

bike-sharegbfsparistransitfrance
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, GBFSResponses can be requested as JSON or GBFS.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/velib-metropolis-paris-france/"><img src="https://greatapis.com/badge/velib-metropolis-paris-france.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. No API key is needed. The GBFS files are public and keyless.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Read live bike and dock counts

GEThttps://velib-metropole-opendata.smovengo.cloud/opendata/Velib_Metropole/station_status.json

200 application/json

{"lastUpdatedOther":1790640195,"ttl":3600,"data":{"stations":[{"station_id":213688169,"num_bikes_available":4,"numBikesAvailable":4,"num_bikes_available_types":[{"mechanical":2},{"ebike":2}],"num_docks_available":31,"numDocksAvailable":31,"is_installed":1,"is_returning":1,"is_renting":1,"last_reported":1790636735,"stationCode":"16107","station_opening_hours":null}]}}

The stations array is truncated to its first station. The live call returned 1519 stations. The station object is unchanged.

Developer reference

Gotchas & limits

  • Each station repeats its counts under two names: num_bikes_available (GBFS snake_case) and numBikesAvailable (camelCase). Both hold the same value. Read one of them.
  • num_bikes_available_types is an array of one-key objects, for example [{"mechanical":2},{"ebike":2}]. It is not a single object. Merge the entries to get counts by type.
  • The feed says ttl is 3600 seconds. In the probe, the first station's last_reported was about an hour behind lastUpdatedOther. Check last_reported for each station before you trust a count.
  • This file has station IDs and counts only. It has no names or coordinates. Get those from station_information.json in the same folder, and join on station_id.
  • is_installed, is_renting, and is_returning are integers (1 or 0), not booleans.
  • station_opening_hours is null in the probe.