Kiwi API
Scrape rendered public Kiwi flight result pages from a flight query. Tequila API access requires credentials.
POST
/v1/kiwi/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/kiwi/search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"lisbon-portugal","origin":"new-york-city-ny-united-states","adults":1,"depart_date":"2026-07-01","limit":25,"return_date":"sample"}')
RUN_ID=$(echo "$RUN" | jq -r '.run_id')
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" ] || [ "$STATUS" = "failed" ]; then
echo "$RESULT"
break
fi
sleep 2
doneSync
curl -X POST "https://api.browsable.app/v1/kiwi/search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"lisbon-portugal","origin":"new-york-city-ny-united-states","adults":1,"depart_date":"2026-07-01","limit":25,"return_date":"sample","_run":{"async":false}}'