Browsable Browsable Docs

Skyscanner API

Search live flight itineraries from a Skyscanner-style route query. If Skyscanner blocks the browser, results transparently identify the live fallback provider.

POST /v1/skyscanner/search

Request Parameters

Name In Type Required Description
destination body string Yes Destination airport, city, or site-specific location slug.
origin body string Yes Origin airport, city, or site-specific location slug.
adults body integer No —
depart_date body string No Departure date in the format expected by the source.
limit body integer No Maximum number of results to return.
return_date body string No Optional return date in the format expected by the source.

Response Structure

Async kickoff response

Polled run result response

Sync response

Declared output schema

Code Examples

Async + polling

RUN=$(curl -s -X POST "https://api.browsable.app/v1/skyscanner/search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"UK","origin":"US","adults":1,"depart_date":"260701","limit":25,"return_date":"sample"}')
RUN_ID=$(echo "$RUN" | jq -r '.run_id')
POLL_DELAY=3
while true; do
RESULT=$(curl -s -H "Authorization: Bearer YOUR_API_KEY" "https://api.browsable.app/v1/runs/$RUN_ID")
STATUS=$(echo "$RESULT" | jq -r '.run_status')
if [[ "$STATUS" =~ ^(succeeded|failed|errored|cancelled|canceled|expired)$ ]]; then
echo "$RESULT"
break
fi
sleep "$(awk "BEGIN { print $POLL_DELAY * (0.9 + ($RANDOM % 21) / 100) }")"
POLL_DELAY=$((POLL_DELAY < 30 ? POLL_DELAY * 2 : 30))
[ "$POLL_DELAY" -gt 30 ] && POLL_DELAY=30
done

Sync

curl -X POST "https://api.browsable.app/v1/skyscanner/search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"UK","origin":"US","adults":1,"depart_date":"260701","limit":25,"return_date":"sample","_run":{"async":false}}'