Documentation Index
Fetch the complete documentation index at: https://docs.grdd.dev/llms.txt
Use this file to discover all available pages before exploring further.
Fleet Search API
The Fleet Search API lets you discover available vehicles from all GNet operators near a given location. Search by vehicle type (e.g., sedan, SUV) and specify a location using airport codes or GPS coordinates. Results include vehicle details, photos, capacity, and the operator’s GPS position.
Endpoint
GET https://core.grdd.net/api/search/fleet
Authorization: Bearer <your_token>
Query Parameters
| Parameter | Type | Description | Required |
|---|
| airports | string | Comma-separated IATA airport codes (e.g. LAX,SNA). At least one of airports or lat+lon is required. | Conditional |
| lat | number | Latitude of the search center (e.g. 33.9425). Must be paired with lon. | Conditional |
| lon | number | Longitude of the search center (e.g. -118.408). Must be paired with lat. | Conditional |
| types | string | Comma-separated vehicle types to filter by (e.g. sedan,suv). Case-insensitive. Omit to return all types. | No |
| radius_km | number | Search radius in kilometers. Defaults to 50 when omitted. | No |
| limit | number | Maximum number of results to return per page. Defaults to 20, max 100. | No |
| offset | number | Number of results to skip (for pagination). Defaults to 0. | No |
Location requirement: Provide at least one of airports or lat+lon. Both can be combined — operators near any of the given locations are included.
Example Requests
Search by airport code
GET https://core.grdd.net/api/search/fleet?airports=LAX&types=sedan,suv&limit=20&offset=0
Authorization: Bearer <your_token>
Search by GPS coordinates
GET https://core.grdd.net/api/search/fleet?lat=33.9425&lon=-118.408&types=sedan
Authorization: Bearer <your_token>
Multi-airport search with custom radius
GET https://core.grdd.net/api/search/fleet?airports=LAX,SNA&radius_km=30
Authorization: Bearer <your_token>
Success Response
200 - OK
Returns a list of fleet vehicles matching the search criteria. The list is cross-operator — vehicles from all GNet operators serving the requested location(s) are included.
{
"success": true,
"data": {
"items": [
{
"griddid": "acme-limo",
"type": "sedan",
"name": "Business Class Sedan",
"description": "Mercedes-Benz E-Class or similar.",
"imageUrl": "https://asset.grdd.dev/profile/acme-limo/business-class-sedan.png",
"maxPassengers": 4,
"maxLuggage": 2,
"lat": 33.9425,
"lon": -118.408,
"distanceKm": 1.23,
"score": 82
},
{
"griddid": "premier-rides",
"type": "suv",
"name": "Luxury SUV",
"description": "Cadillac Escalade or similar.",
"imageUrl": "https://asset.grdd.dev/profile/premier-rides/luxury-suv.png",
"maxPassengers": 6,
"maxLuggage": 4,
"lat": 33.9412,
"lon": -118.402,
"distanceKm": 2.07,
"score": 65
}
],
"total": 2,
"warnings": []
}
}
Response Fields
data.items[]
| Field | Type | Description |
|---|
| griddid | string | Unique GNet operator ID |
| type | string | Vehicle type (e.g. sedan, suv, bus) |
| name | string | Display name of the vehicle class |
| description | string | Vehicle description |
| imageUrl | string / null | URL of the vehicle photo, or null if unavailable |
| maxPassengers | number | Maximum passenger capacity |
| maxLuggage | number | Maximum luggage capacity |
| lat | number | Latitude of the operator’s service location nearest the search point |
| lon | number | Longitude of the operator’s service location nearest the search point |
| distanceKm | number | Great-circle distance in km from the nearest search point to the operator’s location (rounded to 2 decimal places) |
| score | number | Completeness score (0–100) reflecting how fully the operator has populated vehicle details (photo, description, capacity, extras) |
data.warnings[]
Warnings are non-fatal notices returned alongside results.
| Field | Type | Description |
|---|
| code | string | Warning code: UNRESOLVABLE_AIRPORT or MISSING_GPS |
| griddid | string | Operator GNet ID (present for MISSING_GPS warnings) |
| detail | string | Human-readable explanation |
Warning codes:
UNRESOLVABLE_AIRPORT — An airport code in the request could not be resolved to GPS coordinates. Valid codes in the same request are still searched.
MISSING_GPS — An operator has a service location record near the search point but no parseable GPS coordinates. That operator is excluded from results.
Error Responses
401 - Unauthorized
{
"success": false,
"message": "Unauthorized"
}
400 - Bad Request
Returned when no location is provided, or when lat and lon are not both present.
{
"success": false,
"message": "Provide at least one location: airports (e.g. airports=LAX) or coordinates (lat + lon)"
}
500 - Internal Server Error
{
"success": false,
"message": "Internal server error"
}
Notes
Sort order
Results are sorted by two criteria applied in order:
- Distance (ascending) — operators nearest the search point(s) appear first. Distance is grouped into 5 km buckets, so an operator 3 km away and one 4.9 km away are treated as equally close.
- Completeness score (descending) — within the same distance bucket, operators with richer vehicle profiles (photo, description, capacity info, extras) rank higher. Scores range from 0 to 100; the
score field is included in each result for reference.
This ensures that a 0.01 km distance difference does not bury a significantly better-described operator.
- Results are cross-operator: vehicles from every active GNet operator serving the search area are included in a single response.
- When multiple airport codes or a mix of airports and GPS coordinates are provided, operators near any of the given points are included (union).
- An operator appearing in multiple location results is deduplicated — they appear once, with GPS from the location closest to the first matched search point.
- The
types filter is case-insensitive (Sedan, SEDAN, and sedan all match).
- When
types is omitted, all vehicle types from matching operators are returned.
radius_km defaults to 50 km when not specified.
limit defaults to 20 and is capped at 100. Use offset to page through results (offset=20 for page 2, offset=40 for page 3, etc.).
total in the response always reflects the full match count before pagination, so callers can compute total pages as ceil(total / limit).