Bike Share Systems & Live Stations Scraper (GBFS) avatar

Bike Share Systems & Live Stations Scraper (GBFS)

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Bike Share Systems & Live Stations Scraper (GBFS)

Bike Share Systems & Live Stations Scraper (GBFS)

$0.5/1K πŸ”₯ Bike share scraper! Official GBFS feeds with live station availability, pricing & vehicle types. No key. JSON, CSV, Excel or API in seconds. Power mobility dashboards ⚑

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Scrape official GBFS feeds from 1,500+ bike-share and micromobility systems worldwide β€” the system catalogue, real-time station availability (bikes, docks, occupancy, vehicle types) and pricing plans.

This actor reads the General Bikeshare Feed Specification (GBFS) feeds that operators publish themselves β€” the industry standard behind Citi Bike, Capital Bikeshare, Bicing, VΓ©lib', nextbike, Call a Bike, BIXI, Oslo Bysykkel, Divvy, Bay Wheels and hundreds more. No API key. No login. No aggregator sitting in the middle.


Why this actor (and how it differs from the CityBikes scraper)

There are two ways to get bike-share data, and they are not the same thing.

This actor β€” bike-share-gbfs-scrapercitybikes-scraper
Data sourceThe official GBFS feeds published by the operator (auto-discovery gbfs.json β†’ station_status, system_pricing_plans, …)The CityBikes aggregator API, a third-party community project that re-publishes a normalised subset
Coverage1,500+ systems in the MobilityData catalogue, including every system that ships a GBFS feedOnly what CityBikes has onboarded and keeps in sync
FreshnessStraight from the operator, ttl as low as 10 sAs fresh as the aggregator's own polling
Pricing plansβœ… system_pricing_plans (currency, price, taxable, description)❌ not exposed
Vehicle typesβœ… per-station e-bike / cargo / classic breakdown❌ only a total bike count
Operator metadataβœ… operator, timezone, phone, e-mail, purchase URL, licence, start date, published feed listLimited
Spec fidelityGBFS v1, v2 and v3 (incl. the v3 field renames)Aggregator's own flat schema

Rule of thumb: use citybikes-scraper when you want one quick, uniform bike-count feed. Use this actor when you need the authoritative operator data β€” the systems CityBikes misses, plus vehicle types, pricing and full real-time dock status. Many teams run both and reconcile.


What you get

Mode systems β€” the catalogue

Every bike-share system in the MobilityData GBFS registry with operator metadata and a live station count.

{
"type": "system",
"system_id": "bike_barcelona",
"name": "Bike Barcelona",
"operator": null,
"country_code": "ES",
"location": "Barcelona",
"timezone": "Europe/Madrid",
"url": "https://www.bicing.barcelona/",
"email": "mobility-data-client@lyft.com",
"gbfs_version": "3.0",
"auto_discovery_url": "https://barcelona.publicbikesystem.net/customer/gbfs/v3.0/gbfs.json",
"feed_names": ["station_information", "station_status", "system_information", "system_pricing_plans", "vehicle_types", "..."],
"station_count": 542,
"source": "gbfs",
"scraped_at": "2026-07-28T18:11:52+00:00"
}

Mode stations β€” live availability

station_information joined with station_status on station_id, so every row carries both the static location and the real-time counts.

{
"type": "station",
"system_id": "oslobysykkel",
"system_name": "Oslo Bysykkel",
"station_id": "YOS:Station:6026",
"name": "Østbanehallen",
"address": "Jernbanetorget 1",
"latitude": 59.9104991,
"longitude": 10.7505055,
"capacity": 35,
"is_virtual_station": false,
"bikes_available": 7,
"bikes_disabled": null,
"docks_available": 22,
"docks_disabled": null,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"occupancy_pct": 20.0,
"vehicle_types_available": [
{ "vehicle_type_id": "YOS:VehicleType:bike", "count": 7 },
{ "vehicle_type_id": "YOS:VehicleType:ebike", "count": 0 }
],
"last_reported": "2026-07-28T18:03:48+00:00",
"source": "gbfs",
"scraped_at": "2026-07-28T18:12:34+00:00"
}

Mode pricing β€” pricing plans

{
"type": "pricing_plan",
"system_id": "nextbike_wr",
"system_name": "WienMobil Rad",
"plan_id": "Rate0571",
"name": "Pay as you go: € 0,75 / 30 min",
"currency": "EUR",
"price": 0,
"is_taxable": false,
"description": "EUR 0.75/30min, EUR 19.00/24h",
"source": "gbfs",
"scraped_at": "2026-07-28T18:13:39+00:00"
}

Input

FieldTypeDefaultDescription
modeselectsystemssystems (catalogue + metadata), stations (live availability), pricing (pricing plans)
systemIdsarray5 verified IDsGBFS system IDs exactly as in systems.csv. Leave empty to sweep the whole 1,500+ catalogue.
countryFilterstring–Optional 2-letter ISO code, e.g. DE, US, FR
maxItemsinteger500 (max 5000)Row cap. In stations/pricing the budget is split fairly across the selected systems

The five default system IDs are all verified live: bike_barcelona (GBFS 3.0), lyft_nyc (Citi Bike, 2.3), cabi (Capital Bikeshare, 2.3), nextbike_wr (WienMobil Rad, 2.3), oslobysykkel (3.0).

{
"mode": "stations",
"systemIds": ["bike_barcelona", "lyft_nyc", "cabi", "nextbike_wr", "oslobysykkel"],
"maxItems": 1000
}

Sweep an entire country instead:

{ "mode": "systems", "systemIds": [], "countryFilter": "DE", "maxItems": 300 }

Use cases

  • Mobility research β€” build longitudinal datasets on shared-micromobility supply, fleet mix (e-bike vs classic) and system growth across cities and countries.
  • City dashboards β€” power a live map of every dock in your city with bikes, free docks and occupancy percentage, refreshed as often as the operator's ttl allows.
  • Travel apps β€” show travellers whether there are bikes at the station next to their hotel, in any of 1,500+ systems, without integrating 1,500 different APIs.
  • Rebalancing analytics β€” poll stations on a schedule and detect the docks that run empty or jam full, the classic input for fleet-rebalancing and demand models.

Also good for: transport-planning consultancies, urban-mobility startups doing competitive coverage analysis, academic transport labs, insurance and fleet pricing, and open-data portals.


Pricing

Pay-per-result: ~$0.5 per 1,000 results. A default stations run over the five verified systems (~5,300 stations) lands around $2.65. A systems sweep of one country is usually well under a dollar.


How it works

  1. Download the MobilityData catalogue systems.csv (verified header: Country Code, Name, Location, System ID, URL, Auto-Discovery URL, Supported Versions, Authentication Info URL, Authentication Type, Authentication Parameter Name).
  2. Filter by systemIds / countryFilter; systems whose feeds require an API key are flagged and skipped.
  3. For each system, fetch the auto-discovery gbfs.json and resolve the feed list with a tolerant resolver that handles both real-world shapes: data.feeds directly (GBFS v3) and data.<lang>.feeds where the language key may be en, de, fr, nb, … (GBFS v1/v2).
  4. Fetch the feeds the mode needs, normalise and push in batches of 50.

Versions handled in the wild: GBFS 1.1, 2.2, 2.3, 3.0, 3.1-RC3 and a handful of v1.0 producers that omit the version field entirely (VΓ©lib' MΓ©tropole). The actor normalises the v3 renames β€” num_vehicles_available β†’ bikes_available, num_vehicles_disabled β†’ bikes_disabled β€” and flattens the v3 localised name / short_name / operator / description lists ([{"text": …, "language": …}]) back into plain strings.

Resilience. Feeds are hosted by the operators themselves, so some are always down. A failing system produces a warning and is skipped β€” the run continues. The actor only raises if zero items were produced across all selected systems.

Nulls are honest. A station whose station_status feed is missing gets null availability, never a misleading 0. occupancy_pct is null when capacity is 0 or unknown.



GBFS feeds are published by operators as open data, usually under CC0 or a comparable open licence, precisely so that third parties can build on them. This actor reads those public endpoints, sends no credentials and collects no personal data β€” only infrastructure and fleet information. Check the individual system's license_url before redistributing its data commercially.


Support

Found a system that will not resolve, or want another GBFS feed (free_bike_status/vehicle_status, geofencing_zones, system_alerts) added? Open an issue on the actor page.