ROOTEDocs
CapabilitiesShared Mobility

Nearby Mobility

Find nearby shared mobility.

Page actions

Find shared mobility around GPS coordinates.

GET https://api.roote.ai/v1/nearby

This endpoint searches shared-mobility stations and vehicles. It does not search railway stations, airports, public-transport lines, or generic POIs.

Query parameters

ParameterRequiredDefaultApplied maximumDescription
latYes——Search-center latitude.
lonYes——Search-center longitude.
lngNo——Alternative alias for lon.
radiusNo400 m400 mSearch radius in metres.
modesNobicycle,scooter,moped,car—Comma-separated mobility modes.
includeNoBoth—stations, vehicles, or both.
limitNo100100Page size.
offsetNo0—Pagination offset.
formatNojson—json or geojson.
curl "https://api.roote.ai/v1/nearby?lat=48.8566&lon=2.3522&radius=400&modes=bicycle,scooter&include=stations,vehicles" \\
  -H "Authorization: Bearer YOUR_API_TOKEN"

Response

{
  "origin": { "lat": 48.8566, "lon": 2.3522 },
  "radius": 400,
  "modes": ["bicycle", "scooter"],
  "stations": [{
    "id": "station-id",
    "name": "Example station",
    "location": { "lat": 48.8570, "lon": 2.3518 },
    "distance_meters": 54,
    "availability": { "bicycles": 8, "free_docks": 12 },
    "freshness": { "updated_at": "2026-01-01T12:00:00Z", "valid": true }
  }],
  "vehicles": [{
    "id": "vehicle-id",
    "mode": "scooter",
    "location": { "lat": 48.8569, "lon": 2.3525 },
    "distance_meters": 41,
    "battery": 72,
    "rental_url": "https://provider.example/rent/vehicle-id"
  }],
  "places": [],
  "lines": [],
  "alerts": [],
  "meta": {
    "sources": [{ "id": "provider-id", "status": "ok" }],
    "realtime": true,
    "warnings": [],
    "total": 2,
    "limit": 100,
    "offset": 0,
    "requested_radius": 400,
    "applied_radius": 400,
    "requested_limit": 100,
    "applied_limit": 100,
    "coverage": "available"
  }
}

Coverage

ValueMeaning
availableMatching results were found.
emptyProviders answered, but nothing matched.
noneNo provider covers the request.

Zero results are not zero coverage

Read meta.coverage, meta.sources, and meta.warnings before interpreting an empty result set.

HTTP 200 can still be returned when one provider fails and another succeeds.

Processing model

  1. Select compatible providers.
  2. Query adapters.
  3. Normalize results.
  4. Recalculate distance.
  5. Enforce the applied radius.
  6. Deduplicate stations.
  7. Deduplicate vehicles.
  8. Sort nearest to farthest.
  9. Apply offset and limit.

Currently documented adapters include Fluctuo and CityBikes.

On this page