In select cities, a GBFS feed is available. The feed now includes internal vehicle IDs in deeplink URIs.
URL https://data.lime.bike/api/partners/v1/gbfs/<city>/gbfs.json
Free Bike Status https://data.lime.bike/api/partners/v1/gbfs/<city>/free_bike_status
The free_bike_status endpoint returns vehicle data including internal IDs:
{
"bike_id": "<uuid>",
"lat": 37.785,
"lon": -122.41,
"is_reserved": false,
"is_disabled": false,
"rental_uris": {
"android": "limebike://map?selected_vehicle_id=<vehicle_id>&generated_at=<timestamp>",
"ios": "limebike://map?selected_vehicle_id=<vehicle_id>&generated_at=<timestamp>"
}
}| United States | Germany, Austria and Switzerland | France | Canada | Israel | Norway and Italy | Australia and New Zealand | Belgium |
|---|---|---|---|---|---|---|---|
| atlanta | hamburg | paris | kelowna | tel_aviv | oslo | auckland | antwerp |
| baltimore | oberhausen | marseille | edmonton | rome | sydney | brussels | |
| chicago | opfikon | verona | |||||
| cleveland | reutlingen | ||||||
| colorado_springs | solingen | ||||||
| denver | zug | ||||||
| detroit | |||||||
| grand_rapids | |||||||
| louisville | |||||||
| new_york | |||||||
| norfolk_va | |||||||
| oakland | |||||||
| san_francisco | |||||||
| san_jose | |||||||
| seattle | |||||||
| washington_dc |
Base URL: https://web-production.lime.bike/api/rider
Modern versions of the app (v3.248+) use the following headers:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
| Platform | Android or iOS | |
| App-Version | 3.248.1 | |
| Content-Type | application/json | |
| X-Device-Token | Random UUID |
Method: GET
Path: /v1/login
Parameters:
| Parameters | Descriptions |
|---|---|
| phone | phone number intl format |
When entering a phone number, make sure to include the %2B before the number instead of the + (Example: %2B12222222222 is +1 (222) 222-2222)
Example
curl --request GET \
--url 'https://web-production.lime.bike/api/rider/v1/login?phone=%2B33612345678'Method: POST
Path: /v1/login
Header:
| Header | Value |
|---|---|
| content-type | application/json |
Parameters:
| Parameters | Descriptions |
|---|---|
| phone | phone number intl format |
| login_code | OTP code (length of 6) |
Example
curl --request POST \
--cookie-jar - \
--url 'https://web-production.lime.bike/api/rider/v1/login' \
--header 'Content-Type: application/json' \
--data '{"login_code": "123456", "phone": "+33612345678"}'{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX3Rva2VuIjoiRk9PQkFSRUlSWkhBMiIsImxvZ2luX2NvdW50IjoyfQ.K5nmvUu92hYXQyeYG6O0rqo0ef2mkp7PMdtp9NrgwOE",
"user": {
"id": "FOOBAREIRZHA2",
"type": "users",
"attributes": {
"token": "FOOBAREIRZHA2",
"phone_number": "33612345678",
"email_address": null,
"has_verified_email_address": false,
"name": "Lime Rider",
"given_name": "Lime",
"surname": "Rider",
"default_payment_method": null,
"referral_code": "REZHETH",
"num_trips": 0,
"edu": false,
"subscription_item_states": [],
"juicer_profile_status": null,
"juicer_profile_initial_activated_at": null,
"balance_cents": 0,
"pending_balance_cents": 0,
"currency": "USD"
}
}
}Method: POST
Path: /v2/onboarding/magic-link
Body:
| Parameters | Descriptions |
|---|---|
| your email | |
| user_agreement_version | 4 |
| user_agreement_country_code | US |
Example
curl 'https://web-production.lime.bike/api/rider/v2/onboarding/magic-link' \
-X POST \
-d 'email=<your-email>&user_agreement_country_code=US&user_agreement_version=4'
Method: POST
Path: /v2/onboarding/login
Header:
| Header | Value |
|---|---|
| X-Device-Token | random uuid |
Body:
magic_link_token=<your-magic-link-token
Example
curl 'https://web-production.lime.bike/api/rider/v2/onboarding/login' \
-X POST \
-H 'X-Device-Token: 43fd2a25-56c5-4d1d-b6c0-a1dab08d8e1d' \
-d 'magic_link_token=<your-magic-link-token>'
Method: GET
Path: /v1/views/map
Header:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
Cookie:
| Cookie | Mandatory |
|---|---|
| _limebike-web_session | X |
Parameters:
| Parameters | Descriptions | Mandatory | Remarks |
|---|---|---|---|
| ne_lat | Latitude | X | Bounding box for map; apparently ignored in favor of zoom parameter |
| ne_lng | Longitude | X | Bounding box for map; apparently ignored in favor of zoom parameter |
| sw_lat | Latitude | X | Bounding box for map; apparently ignored in favor of zoom parameter |
| sw_lng | Longitude | X | Bounding box for map; apparently ignored in favor of zoom parameter |
| user_latitude | Latitude | X | |
| user_longitude | Longitude | X | |
| zoom | Integer | X | When < 15, bikes are clustered |
Example
curl --request GET \
--url 'https://web-production.lime.bike/api/rider/v1/views/map?ne_lat=52.6&ne_lng=13.5&sw_lat=52.4&sw_lng=13.3&user_latitude=52.5311&user_longitude=13.3849&zoom=16' \
--header 'authorization: Bearer <token>' \
--cookie '_limebike-web_session=<session>'The v1 map endpoint is being replaced by separate v2 endpoints in the mobile app.
Method: GET
Path: /v2/map/bike_pins
Header:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
Parameters:
| Parameters | Descriptions | Mandatory |
|---|---|---|
| ne_lat | Northeast latitude | X |
| ne_lng | Northeast longitude | X |
| sw_lat | Southwest latitude | X |
| sw_lng | Southwest longitude | X |
| user_latitude | User's current latitude | X |
| user_longitude | User's current longitude | X |
| zoom | Map zoom level (15+ for individual pins) | X |
Example
curl --request GET \
--url 'https://web-production.lime.bike/api/rider/v2/map/bike_pins?ne_lat=37.79&ne_lng=-122.40&sw_lat=37.78&sw_lng=-122.42&user_latitude=37.785&user_longitude=-122.41&zoom=16.0' \
--header 'Authorization: Bearer <token>'Returns zones, parking areas, no-ride zones.
Method: GET
Path: /v2/map/static_elements
Same parameters as bike_pins.
Method: GET
Path: /v2/map/extra_info
Parameters:
| Parameters | Descriptions | Mandatory |
|---|---|---|
| user_latitude | User's latitude | X |
| user_longitude | User's longitude | X |
If you run this command, it won't work. It will say the vehicle is too far away. Use the /v1/views/map path above and set the User Location to where the bike is. You need to also get the ET-ID from a bike, you can acquire it from the same endpoint that I just mentioned. Ring from anywhere!
Method: POST
Path: /v1/bikes/<ET-ID>/ring
Header:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
Body:
id=<vehicle_ET-ID>
If you get a 404 "Resource not found" message, it's most likely because the ET-ID provided is invalid.
The ET-ID can be found on the 'Get Vehicles and Zones' endpoint.
Method: GET
Path: /v1/bikes/<ET-ID>/banner
Header:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
If you get a 404 "Resource not found" message, it's most likely because the ET-ID provided is invalid.
Returns pricing for a specific location.
Method: GET
Path: /v1/bikes/area_rate_plan
Parameters:
| Parameters | Descriptions | Mandatory |
|---|---|---|
| latitude | Location latitude | X |
| longitude | Location longitude | X |
| accuracy | GPS accuracy in meters | |
| gps_time | ISO 8601 timestamp |
Example
curl --request GET \
--url 'https://web-production.lime.bike/api/rider/v1/bikes/area_rate_plan?latitude=37.785&longitude=-122.41&accuracy=5.0' \
--header 'Authorization: Bearer <token>'Method: GET
Path: /v1/views/ride_history?page_limit=10
Header:
| Header | Value | Mandatory |
|---|---|---|
| Authorization | Bearer TOKEN | X |
Method: GET
Path: /v2/views/trip_receipt
Parameters:
| Parameters | Descriptions |
|---|---|
| trip_id | Trip ID (13-char alphanumeric format) |
Method: GET
Path: /v2/views/trip_summary
Parameters:
| Parameters | Descriptions |
|---|---|
| transaction_id | Base32-encoded transaction ID |
| source | Source context (e.g., transaction_history) |
Method: GET
Path: /v1/views/user_transactions
Returns list of past transactions/rides.
Method: GET
Path: /v1/users/bootstrap
Parameters:
| Parameters | Descriptions |
|---|---|
| latitude | Current latitude |
| longitude | Current longitude |
| android_id | Android device ID |
Returns user configuration, feature flags, and initial app state.
Method: GET
Path: /v1/users/side_menu
Returns menu items and badge counts.
Method: GET
Path: /v1/user/groups
Returns user's group memberships (enterprise accounts, etc.).
Method: GET
Path: /v1/wallets
Returns payment methods and balances.
Method: GET
Path: /v1/views/referral_credits
Returns referral program status and credits.
Method: GET
Path: /v1/views/rider_summary
Returns user statistics and ride summary.
Method: GET
Path: /v2/app_state
Returns current application state and configuration.
Method: GET
Path: /v2/curfew/check
Returns curfew restrictions for current location (used in cities with ride time limits).
Method: GET
Path: /v1/views/rider_map_start_blockers
Parameters:
| Parameters | Descriptions |
|---|---|
| user_latitude | User's latitude |
| user_longitude | User's longitude |
Returns any blockers preventing ride start (payment issues, account status, etc.).
Method: GET
Path: /v1/views/vehicle_filter_banner/show
Returns vehicle type filter configuration.
Method: GET
Path: /v1/menus/safety_center
Returns safety center menu configuration and resources.
Method: GET
Path: /v1/destinations/info_card
Method: GET
Path: /v1/destinations/pre_trip_planner_ingress
Returns trip planning UI configuration.
Method: GET
Path: /v4/group_rides/views/bottom_sheets/group_scan_reserve
Returns UI for group ride QR scanning and reservation.
The app handles the following deeplink routes:
| Deeplink | Parameters | Notes |
|---|---|---|
limebike://map?selected_vehicle_id=XXX |
selected_vehicle_id, generated_at | Select vehicle on map |
limebike://receipt?trip_id=XXX |
trip_id | Trip receipt view |
limebike://help?trip_id=XXX |
trip_id | Help for specific trip |
limebike://limelab?hide_top_bar=true |
hide_top_bar | LimeLab features |
limebike://referral |
- | Referral program |
limebike://lime_wallet |
- | Wallet view |
limebike://donation |
- | Donation flow |
limebike://ride_history |
- | Ride history |
limebike://safety_center |
- | Safety resources |
limebike://settings |
- | App settings |
limebike://help_v2 |
- | Help center |
limebike://payment_methods |
- | Payment methods |
The Juicer API can be found here: https://github.com/davidwim/lime-juicer/
- https://www.npmjs.com/package/@multicycles/lime (JavaScript)