flight-price-monitor
Watch a flight's price over time with SearchApi's Google Flights engine, with a local snapshot and run-over-run diffs so each re-run shows price drops and increases. Pick a route, dates, and preferences (early morning, mid-week, nonstop, cabin class, airlines, max stops); the skill finds the best...
Install this skill
or
79/100
Security score
The flight-price-monitor skill was audited on Aug 6, 2026 and we found 9 security issues across 2 threat categories. Review the findings below before installing.
Categories Tested
Security Issues
low line 222
Command substitution pattern
SourceSKILL.md
| 220 | - **curl (save raw to disk):** |
| 221 | ```bash |
| 222 | SLUG="lhr-jfk-round_trip-2026-09-12"; TS=$(date +%Y-%m-%d-%H%M%S) |
| 223 | mkdir -p ".searchapi/flight-price-monitor/$SLUG" |
| 224 | curl -s "https://www.searchapi.io/api/v1/search?engine=google_flights&flight_type=round_trip&departure_id=LHR&arrival_id=JFK&outbound_date=2026-09-12&return_date=2026-09-19&adults=1&travel_class=economy&stops=nonstop¤cy=USD&sort_by=price&api_key=$SEARCHAPI_API_KEY" \ |
low line 232
Command substitution pattern
SourceSKILL.md
| 230 | ```bash |
| 231 | F=".searchapi/flight-price-monitor/$SLUG/raw-$TS-flights.json" |
| 232 | STATUS=$(jq -r '.search_metadata.status' "$F") |
| 233 | [ "$STATUS" = "Success" ] || { echo "SearchApi error: $(jq -r '.error // .search_metadata.status' "$F")"; exit 1; } |
| 234 | ERR=$(jq -r '.error // empty' "$F") |
low line 233
Command substitution pattern
SourceSKILL.md
| 231 | F=".searchapi/flight-price-monitor/$SLUG/raw-$TS-flights.json" |
| 232 | STATUS=$(jq -r '.search_metadata.status' "$F") |
| 233 | [ "$STATUS" = "Success" ] || { echo "SearchApi error: $(jq -r '.error // .search_metadata.status' "$F")"; exit 1; } |
| 234 | ERR=$(jq -r '.error // empty' "$F") |
| 235 | [ -z "$ERR" ] || { echo "No results: $ERR"; exit 1; } |
low line 234
Command substitution pattern
SourceSKILL.md
| 232 | STATUS=$(jq -r '.search_metadata.status' "$F") |
| 233 | [ "$STATUS" = "Success" ] || { echo "SearchApi error: $(jq -r '.error // .search_metadata.status' "$F")"; exit 1; } |
| 234 | ERR=$(jq -r '.error // empty' "$F") |
| 235 | [ -z "$ERR" ] || { echo "No results: $ERR"; exit 1; } |
| 236 | COUNT=$(jq '((.best_flights // []) + (.other_flights // [])) | length' "$F") |
low line 236
Command substitution pattern
SourceSKILL.md
| 234 | ERR=$(jq -r '.error // empty' "$F") |
| 235 | [ -z "$ERR" ] || { echo "No results: $ERR"; exit 1; } |
| 236 | COUNT=$(jq '((.best_flights // []) + (.other_flights // [])) | length' "$F") |
| 237 | [ "$COUNT" -gt 0 ] || { echo "No fares - check route, dates, stops, airline filters."; exit 1; } |
| 238 | echo "Got $COUNT fares" |
low line 273
Command substitution pattern
SourceSKILL.md
| 271 | # gate: status Success AND no top-level error AND a non-empty calendar array |
| 272 | jq -e 'has("error") | not' "$DIR/raw-$TS-calendar.json" >/dev/null \ |
| 273 | || { echo "Calendar: $(jq -r '.error' "$DIR/raw-$TS-calendar.json"). Falling back to probing date pairs."; } |
| 274 | jq '(.calendar // []) | map(select((.has_no_flights // false) | not)) | sort_by(.price) | .[:3]' "$DIR/raw-$TS-calendar.json" |
| 275 | ``` |
medium line 224
Curl to non-GitHub URL
SourceSKILL.md
| 222 | SLUG="lhr-jfk-round_trip-2026-09-12"; TS=$(date +%Y-%m-%d-%H%M%S) |
| 223 | mkdir -p ".searchapi/flight-price-monitor/$SLUG" |
| 224 | curl -s "https://www.searchapi.io/api/v1/search?engine=google_flights&flight_type=round_trip&departure_id=LHR&arrival_id=JFK&outbound_date=2026-09-12&return_date=2026-09-19&adults=1&travel_class=economy&stops=nonstop¤cy=USD&sort_by=price&api_key=$SEARCHAPI_API_KEY" \ |
| 225 | > ".searchapi/flight-price-monitor/$SLUG/raw-$TS-flights.json" |
| 226 | ``` |
medium line 260
Curl to non-GitHub URL
SourceSKILL.md
| 258 | |
| 259 | ```bash |
| 260 | curl -s "https://www.searchapi.io/api/v1/search?engine=google_flights&flight_type=one_way&departure_id=LHR&arrival_id=JFK&outbound_date=2026-09-12&adults=1&travel_class=economy&stops=any¤cy=USD&sort_by=price&api_key=$SEARCHAPI_API_KEY" \ |
| 261 | > ".searchapi/flight-price-monitor/$SLUG/raw-$TS-flights.json" |
| 262 | ``` |
medium line 269
Curl to non-GitHub URL
SourceSKILL.md
| 267 | |
| 268 | ```bash |
| 269 | curl -s "https://www.searchapi.io/api/v1/search?engine=google_flights_calendar&departure_id=LHR&arrival_id=JFK&outbound_date=2026-09-12&return_date=2026-09-19&flight_type=round_trip¤cy=USD&api_key=$SEARCHAPI_API_KEY" \ |
| 270 | > "$DIR/raw-$TS-calendar.json" |
| 271 | # gate: status Success AND no top-level error AND a non-empty calendar array |
Scanned on Aug 6, 2026
View Security Dashboard