Environment:
- Node (>=v22)
- Yarn
Copy .env.sample to .env and fill in the required values.
Run yarn start.
The Search API is on POST /api/search endpoint.
The query body is a simple json object with only basic values as values.
| Key | Desc | Required | Example |
|---|---|---|---|
origin_airport |
Origin Airport three letters code | Yes | LAX |
destination_airport |
Desctionation Airport three letters code | Yes | SFO |
start_date |
Start date of the search, default to today | No | 2025-02-01 |
end_date |
End date of search, defaults to one month from today | No | 2025-03-01 |
direct_only |
Filters for direct flight | No | true |
fare_class |
Filters for fare class (Y W J F) | No | "Y" "W" "J" "F" |
airline |
Filters for airlines | No | UA DL |
sort_by |
Sort by the defined sorting keys (check below) | No | Date |
reverse |
Reverse result order | No | true |
Sorting key:
- "Date",
- "MileageCost",
- "DirectMileageCost",
- "TotalTaxes",
- "DirectTotalTaxes",
- "RemainingSeats",
- "DirectRemainingSeats",
curl --request POST \
--url http://localhost:3000/api/search \
--header 'content-type: application/json' \
--data '{
"origin_airport": "LAX",
"destination_airport": "SFO",
"direct_only": false,
"fare_class": "Y"
}'{
"success": true,
"count": 113,
"data": [
{
"Route": {
"ID": "2IYEI9PmRpYbWRKqlnpihbTjCHU",
"OriginAirport": "LAX",
"OriginRegion": "North America",
"DestinationAirport": "SIN",
"DestinationRegion": "Asia",
"NumDaysOut": 75,
"Distance": 8772,
"Source": "united"
},
"Date": "2025-02-02",
"Source": "united",
"TaxesCurrency": "USD",
"FareClass": "Y",
"Available": true,
"Direct": true,
"MileageCost": 60500,
"TotalTaxes": 560,
"RemainingSeats": 3,
"Airlines": [
"SQ"
]
},
{
"Route": {
"ID": "2IYEI9PmRpYbWRKqlnpihbTjCHU",
"OriginAirport": "LAX",
"OriginRegion": "North America",
"DestinationAirport": "SIN",
"DestinationRegion": "Asia",
"NumDaysOut": 75,
"Distance": 8772,
"Source": "united"
},
"Date": "2025-02-03",
"Source": "united",
"TaxesCurrency": "USD",
"FareClass": "Y",
"Available": true,
"Direct": false,
"MileageCost": 45000,
"TotalTaxes": 560,
"RemainingSeats": 9,
"Airlines": [
"BR",
"LH",
"SQ",
"UA"
]
},
...