# Kiwi Flights — Cheap Search (`quakerish_quodlibet/kiwi-flights-cheap`) Actor

FROM $0.10 / 1,000 RESULTS

Search Kiwi.com for flights by origin/destination/date and return matching itineraries with prices, segments, and a booking link.

- **URL**: https://apify.com/quakerish\_quodlibet/kiwi-flights-cheap.md
- **Developed by:** [Nout v L](https://apify.com/quakerish_quodlibet) (community)
- **Categories:** Travel, Developer tools, Integrations
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Kiwi Flights — Cheap Search

Search Kiwi.com for flights and get back matching itineraries with prices, segments, durations, and a booking deep link for each result.

### What it does

Given one or more origin airports, one or more destination airports, and departure dates, the Actor queries Kiwi.com's flight search API and returns the matching itineraries as structured rows.

### Input

| Field | Required | Default | Notes |
|---|---|---|---|
| `origins` | yes | — | One or more 3-letter IATA airport codes (e.g. `["AMS", "EIN"]`). |
| `destinations` | yes | — | One or more 3-letter IATA airport codes (e.g. `["BCN"]`). |
| `departDate` | yes | — | `YYYY-MM-DD`. |
| `returnDate` | no | — | `YYYY-MM-DD`. Omit for one-way. |
| `adults` / `children` / `infants` | no | `1` / `0` / `0` | Passenger counts. |
| `cabinClass` | no | `economy` | `economy` / `premium_economy` / `business` / `first`. |
| `maxStops` | no | — | 0 = direct only. |
| `maxDurationMinutes` | no | — | Filter: max journey duration. |
| `maxPriceEur` | no | — | Filter: max price per passenger. |
| `airlines` / `excludeAirlines` | no | — | Filter by IATA airline code. |
| `limit` | no | `25` | Cap on results. Capped at 200 by the upstream API. |
| `subId` | no | — | Optional per-run attribution tag, appended to the booking link. |

### Output

One row per matching itinerary:

```json
{
  "id": "abc123",
  "price": { "amount": 142.50, "currency": "EUR" },
  "totalDurationMinutes": 235,
  "outbound": { "durationMinutes": 235, "segments": [ /* … */ ] },
  "inbound": { /* … */ },
  "bookingUrl": "https://www.kiwi.com/…",
  "cached": false
}
````

`bookingUrl` is a direct deep link to the itinerary on Kiwi.com. `cached` is `true` when the row was served from the in-process cache (warm-container repeat query).

### How to run

#### Apify CLI

```bash
apify call <ACTOR_ID> -i '{"origins":["AMS"],"destinations":["BCN"],"departDate":"2026-07-01","limit":5}'
```

#### Apify API

```bash
curl -X POST https://api.apify.com/v2/acts/<ACTOR_ID>/runs \
  -H "Authorization: Bearer <APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"origins":["AMS"],"destinations":["BCN"],"departDate":"2026-07-01","limit":5}'
```

The run's dataset is available at the URL printed in the response, or via the API at `/v2/actor-runs/<run-id>/dataset`.

### Data handling

The Actor does not persist input or output beyond the run's default dataset. No third-party services receive the input. The Actor makes outbound HTTPS calls to Kiwi.com's flight-search API to fulfill the query.

### License

MIT. Use at your own risk. Respect Kiwi.com's terms of service when running this Actor.

# Actor input Schema

## `origins` (type: `array`):

One or more 3-letter IATA airport codes the passenger can depart from (e.g. \['AMS', 'EIN']).

## `destinations` (type: `array`):

One or more 3-letter IATA airport codes to fly into (e.g. \['BCN']).

## `departDate` (type: `string`):

Outbound departure date in YYYY-MM-DD.

## `returnDate` (type: `string`):

Return flight date. Omit for one-way searches.

## `adults` (type: `integer`):

Number of adult passengers (12+).

## `children` (type: `integer`):

Number of child passengers (2-11).

## `infants` (type: `integer`):

Number of infant passengers (under 2).

## `cabinClass` (type: `string`):

Preferred cabin class.

## `maxStops` (type: `integer`):

Filter: maximum number of stops (0 = direct only).

## `maxDurationMinutes` (type: `integer`):

Filter: maximum total journey duration in minutes.

## `maxPriceEur` (type: `number`):

Filter: maximum total price per passenger in EUR.

## `airlines` (type: `array`):

Filter: only these airline codes (e.g. \['KL', 'AF']).

## `excludeAirlines` (type: `array`):

Filter: hide these airline codes.

## `limit` (type: `integer`):

Cap on the number of results returned. Capped at 200 by the upstream API.

## `subId` (type: `string`):

Optional sub-id merged into the TravelPayouts marker as `<affiliateId>.<subId>`. Use for per-run attribution.

## Actor input object example

```json
{
  "origins": [
    "AMS",
    "EIN"
  ],
  "destinations": [
    "BCN"
  ],
  "departDate": "2026-07-01",
  "returnDate": "2026-07-08",
  "adults": 1,
  "children": 0,
  "infants": 0,
  "cabinClass": "economy",
  "airlines": [
    "KL",
    "AF"
  ],
  "excludeAirlines": [
    "FR"
  ],
  "limit": 25
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("quakerish_quodlibet/kiwi-flights-cheap").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("quakerish_quodlibet/kiwi-flights-cheap").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call quakerish_quodlibet/kiwi-flights-cheap --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=quakerish_quodlibet/kiwi-flights-cheap",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kiwi Flights — Cheap Search",
        "description": "FROM $0.10 / 1,000 RESULTS  \n\nSearch Kiwi.com for flights by origin/destination/date and return matching itineraries with prices, segments, and a booking link.",
        "version": "0.1",
        "x-build-id": "mJnQOug6ydubHxMI4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/quakerish_quodlibet~kiwi-flights-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-quakerish_quodlibet-kiwi-flights-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/quakerish_quodlibet~kiwi-flights-cheap/runs": {
            "post": {
                "operationId": "runs-sync-quakerish_quodlibet-kiwi-flights-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/quakerish_quodlibet~kiwi-flights-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-quakerish_quodlibet-kiwi-flights-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "origins",
                    "destinations",
                    "departDate"
                ],
                "properties": {
                    "origins": {
                        "title": "Origin airports (IATA)",
                        "minItems": 1,
                        "type": "array",
                        "description": "One or more 3-letter IATA airport codes the passenger can depart from (e.g. ['AMS', 'EIN']).",
                        "items": {
                            "type": "string",
                            "pattern": "^[A-Za-z]{3}$",
                            "minLength": 3,
                            "maxLength": 3
                        }
                    },
                    "destinations": {
                        "title": "Destination airports (IATA)",
                        "minItems": 1,
                        "type": "array",
                        "description": "One or more 3-letter IATA airport codes to fly into (e.g. ['BCN']).",
                        "items": {
                            "type": "string",
                            "pattern": "^[A-Za-z]{3}$",
                            "minLength": 3,
                            "maxLength": 3
                        }
                    },
                    "departDate": {
                        "title": "Departure date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "minLength": 10,
                        "maxLength": 10,
                        "type": "string",
                        "description": "Outbound departure date in YYYY-MM-DD."
                    },
                    "returnDate": {
                        "title": "Return date (round-trip only)",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "minLength": 10,
                        "maxLength": 10,
                        "type": "string",
                        "description": "Return flight date. Omit for one-way searches."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of adult passengers (12+).",
                        "default": 1
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of child passengers (2-11).",
                        "default": 0
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of infant passengers (under 2).",
                        "default": 0
                    },
                    "cabinClass": {
                        "title": "Cabin class",
                        "enum": [
                            "economy",
                            "premium_economy",
                            "business",
                            "first"
                        ],
                        "type": "string",
                        "description": "Preferred cabin class.",
                        "default": "economy"
                    },
                    "maxStops": {
                        "title": "Max stops",
                        "minimum": 0,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Filter: maximum number of stops (0 = direct only)."
                    },
                    "maxDurationMinutes": {
                        "title": "Max duration (minutes)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Filter: maximum total journey duration in minutes."
                    },
                    "maxPriceEur": {
                        "title": "Max price (EUR)",
                        "minimum": 0.01,
                        "type": "number",
                        "description": "Filter: maximum total price per passenger in EUR."
                    },
                    "airlines": {
                        "title": "Allowed airlines (IATA)",
                        "type": "array",
                        "description": "Filter: only these airline codes (e.g. ['KL', 'AF']).",
                        "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 3
                        }
                    },
                    "excludeAirlines": {
                        "title": "Excluded airlines (IATA)",
                        "type": "array",
                        "description": "Filter: hide these airline codes.",
                        "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 3
                        }
                    },
                    "limit": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Cap on the number of results returned. Capped at 200 by the upstream API.",
                        "default": 25
                    },
                    "subId": {
                        "title": "Affiliate sub-id",
                        "type": "string",
                        "description": "Optional sub-id merged into the TravelPayouts marker as `<affiliateId>.<subId>`. Use for per-run attribution."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
