CityBikes Bike-Share Network & Station Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
CityBikes Bike-Share Network & Station Scraper
Scrapes the CityBikes API to deliver unified snapshots of 700+ global bike-share networks and their real-time station availability. Returns network metadata and per-station free-bike counts across Citi Bike, Divvy, and hundreds of other systems worldwide — no API key required.
What does this actor do?
The CityBikes API is the de-facto open aggregator for global bike-share data. This actor wraps it into a scheduled, structured data pipeline with two operating modes:
- Station mode (default) — Returns one record per station with both network metadata and real-time availability (free bikes, empty slots, timestamp). Covers cities from NYC and Chicago to London, Berlin, and Tokyo.
- Networks-only mode — Returns a fast directory summary of all 700+ networks (name, operator, city, country, coordinates) without per-station detail.
Both modes support filtering by country or specific network IDs so you can scope a run to exactly the market you care about.
Use cases
- Urban mobility research — Snapshot bike availability patterns across multiple cities in a single run
- Competitive intelligence — Track operator footprint and network coverage across regions
- Transportation planning — Feed station-level availability data into routing or demand models
- Scheduled monitoring — Use Apify's scheduler to capture hourly or daily snapshots of a network
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
maxItems |
integer | 0 (unlimited) | Maximum station records to return. Set to 0 for unlimited. |
networksOnly |
boolean | false | If true, returns one record per network (no station fetch). |
country |
string | "" | ISO 3166-1 alpha-2 country code to filter networks (e.g. "US", "GB", "DE"). |
networkIds |
array | [] | Specific CityBikes network slugs to fetch (e.g. ["citi-bike-nyc", "divvy"]). |
Example: All US bike-share stations (capped at 500)
{
"country": "US",
"maxItems": 500
}
Example: Specific networks directory
{
"networksOnly": true,
"country": "DE"
}
Example: Single network — Citi Bike NYC
{
"networkIds": ["citi-bike-nyc"],
"maxItems": 1000
}
Output schema
Each output record contains up to 21 fields. In station mode (default), all fields are populated. In networks-only mode, only the network-level fields are included.
Network-level fields (always present)
| Field | Type | Description |
|---|---|---|
network_id |
string | Unique CityBikes network slug (e.g. "citi-bike-nyc") |
network_name |
string | Human-readable network name (e.g. "Citi Bike") |
company |
string | Operator name(s), comma-separated if multiple |
city |
string | City where the network operates |
country |
string | ISO 3166-1 alpha-2 country code |
latitude |
number | Network center latitude |
longitude |
number | Network center longitude |
source_url |
string | Operator homepage URL, if available |
href |
string | CityBikes API path for this network |
gbfs_url |
string | GBFS feed URL, if the operator publishes one |
ebikes |
boolean | Whether the network includes electric bikes |
scooters |
boolean | Whether the network includes electric scooters |
Station-level fields (station mode only)
| Field | Type | Description |
|---|---|---|
station_id |
string | Unique station identifier within the network |
station_name |
string | Human-readable station name |
station_lat |
number | Station latitude |
station_lng |
number | Station longitude |
free_bikes |
number | Available bikes at this station right now |
empty_slots |
number | Empty docking slots at this station |
timestamp |
string | ISO 8601 timestamp of this availability snapshot |
extra_payment_terminal |
boolean | Whether the station has a payment terminal |
extra_ebikes |
number | Number of electric bikes available |
extra_uid |
string | Station UID from the operator's feed, if available |
Sample output
{
"network_id": "citi-bike-nyc",
"network_name": "Citi Bike",
"company": "NYC Bike Share, LLC, Motivate International, Inc., PBSC Urban Solutions",
"city": "New York, NY",
"country": "US",
"latitude": 40.7143528,
"longitude": -74.00597309999999,
"source_url": null,
"href": "/v2/networks/citi-bike-nyc",
"gbfs_url": null,
"ebikes": false,
"scooters": false,
"station_id": "72",
"station_name": "W 52 St & 11 Ave",
"station_lat": 40.76727216,
"station_lng": -74.00552427,
"free_bikes": 10,
"empty_slots": 28,
"timestamp": "2026-05-30T13:41:09.185000Z",
"extra_payment_terminal": null,
"extra_ebikes": null,
"extra_uid": "72"
}
Notes
- No API key required. The CityBikes API is free and open.
- Real-time data. Station availability reflects live conditions at the time of the run.
- Rate limiting. The actor applies a courtesy 150ms delay between station requests and limits concurrent fetches to 8 — well within the API's tolerance.
- Full coverage. With no filters and
maxItems: 0, the actor will fetch all700 networks and their stations (150,000 total records). A full run takes several minutes.
About CityBikes
CityBikes normalizes data from 700+ bike-share systems worldwide into a single consistent JSON API. It is the primary open-data source for global bike-share research. This actor surfaces that data through Apify's scheduling and export infrastructure so teams can run snapshots without standing up their own polling infrastructure.
Further reading: How to Get Airbnb Data, Hotel Prices, and Transit Feeds in Bulk