CityBikes Bike-Share Network & Station Scraper
Pricing
Pay per event
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.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
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 all ~700 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.