# Airline Award Seat Scraper API – Live Miles, Taxes & Seats Left (`k-data-lab/airline-award-seat-scraper`) Actor

Search live award flights and award seat availability on Alaska Airlines Atmos Rewards (ex Mileage Plan), plus partner awards on JAL, American, Qantas and Cathay. Route and dates in; miles, taxes, seats left, flights and booking link out. No login. First 200 results a month free.

- **URL**: https://apify.com/k-data-lab/airline-award-seat-scraper.md
- **Developed by:** [K-Data Lab](https://apify.com/k-data-lab) (community)
- **Categories:** Travel, Automation, AI
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 award options

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Alaska Airlines Award Flights Scraper API – Live Miles & Seats

**Search award flights live on Alaska Airlines: miles, taxes and seats left for any route and date, with no login.** Give a route, a date or date range, and a cabin. You get one row per flight option with the points needed, taxes and fees, seats left, flight numbers, operating airline, stops, times and a booking link.

**Your first run is free.** The prefilled search takes seconds. The first **200 award options every month are free**, then **$0.80 per 1,000**. The $0.005 run start fee fits easily in the $5 credit of Apify's Free plan.

Real rows from a cheapest-per-cabin search on 4 November 2026 (LAX → NRT):

| Date | Cabin | Points | Taxes | Seats left | Flights | Flown by |
|---|---|---:|---:|---:|---|---|
| 2026-12-14 | economy | 60,000 | $5.60 | 6 | AS624, AS123 | Alaska |
| 2026-12-14 | premium | 170,000 | $48.60 | 4 | JX1, JX800 | Starlux |
| 2026-12-14 | business | 150,000 | $5.60 | 4 | AS624, AS123 | Alaska |

Supported today: **Alaska Airlines Atmos Rewards** (the former Mileage Plan and HawaiianMiles). Its award search also returns **partner awards** on American, JAL, Qantas, Cathay Pacific, Starlux, Fiji Airways, Air Tahiti Nui, Hawaiian and more, so one program covers many airlines.

#### ✈️ Which programs work, and which need a login?

We test every program from Apify's cloud before we list it. Results from our tests on **3 November 2026**:

| Program | Login session needed? | What you get | Notes |
|---|---|---|---|
| **Alaska Airlines Atmos Rewards** (Alaska, Hawaiian + partners) | ✅ **No login** | Points, taxes (USD), seats left (up to 9), cabin per flight, flight numbers, operating airline, aircraft, fare class, booking link | Live search on alaskaair.com. ~370 route-days in 20 cloud test runs; with proxy rotation on, 128 of 128 parallel route-days answered with 0 retries |
| Korean Air SKYPASS | 🔑 Airline needs a login | Not available yet | koreanair.com refuses cloud servers with "Access Denied" before any login, so a pasted session can't help |
| Asiana Club | 🔑 Airline needs a login | Not available yet | flyasiana.com refuses automated browsers at the connection level |
| Virgin Atlantic Flying Club | 🔑 Airline needs a login | Not available yet | Award search redirects to sign-in; its search API refuses cloud servers |
| American AAdvantage | No login on the airline site | Not available yet | aa.com blocks cloud servers ("Access Denied"); the search API returns no flights |
| United MileagePlus, Delta SkyMiles, Air Canada Aeroplan, JetBlue TrueBlue | No login on the airline site | Not available yet | Bot protection blocks cloud servers (Access Denied, connection reset or a browser challenge) |
| Air France-KLM Flying Blue, Qatar, JAL, ANA, Cathay, Singapore KrisFlyer, Turkish, Etihad, Emirates, Qantas, LATAM, LifeMiles, Smiles | — | Not available yet | Blocked from cloud servers in our test, or the award search sits behind a login on a blocked site |

We only add a program once it answers reliably from the cloud. We won't add one by getting around an airline's bot protection, and we never ask for passwords. If a program you need opens up, it goes in this table first.

#### 🔍 What does it do?

- Searches **every day in your date range** (up to 120 days, one date works too) for **every origin × destination** pair you give, live, during your run.
- Takes **airport codes, metro codes or city names**: `SEA`, `TYO` (Narita + Haneda), `NYC`, or just `Tokyo`.
- Returns **each flight option in each cabin** (economy, premium economy, business, first) with the points price, taxes and fees, and **seats left at that price**.
- Shows **who actually flies it**: marketing and operating airline per flight, aircraft, connection airports and layover minutes, and a `mixedCabin` flag when part of a business trip is in economy.
- **Filters**: cabins, max stops, max points, max taxes, minimum seats, airlines (e.g. only JAL or Starlux), no mixed cabins.
- **Cheapest per cabin per day** mode: one row per day and cabin, the right shape for award calendars.
- **Watch mode** (`onlyNewOrChanged`): on a schedule, returns only seats that are new, cheaper or more plentiful than at the last run, so you pay for changes, not for the same rows every day.

#### 💡 Why choose this actor?

| | This actor | Award tools built on aggregator caches |
|---|---|---|
| Programs | One program (Atmos Rewards) and its partner airlines | Many: 25+ on some actors |
| Where the data comes from | The airline's own award search, run live for your dates | Results that other users searched earlier |
| One date on a quiet route | The airline's real answer for that date | May return nothing if nobody searched it recently |
| Seats left | ✅ per option (Atmos shows up to 9) | Varies |
| How far ahead | The airline's schedule (~11 months) | Often limited (e.g. 60 days) |
| Partner airlines in the result | ✅ marketing + operating airline per flight | Varies |
| Price | **$0.80 / 1,000 live options**, 200 free each month | From $0.01 to $10 per 1,000 cached rows, depending on the actor |

#### 📥 Input example

```json
{
  "origins": ["LAX", "SFO"],
  "destinations": ["Tokyo"],
  "dateFrom": "+30",
  "dateTo": "+36",
  "cabins": ["business", "premium"],
  "passengers": 2,
  "maxStops": 1,
  "outputMode": "cheapestPerCabinPerDay"
}
```

- `origins` / `destinations`: airport codes, metro codes (`TYO`, `NYC`, `LON`, `SEL`) or city names. Metros expand to their airports.
- `dateFrom` / `dateTo`: `YYYY-MM-DD` or days from today (`+30`). Relative dates keep a schedule looking ahead.
- `passengers`: with 2 or more, only options with at least that many seats are kept.
- `carriers`: e.g. `["JL"]` for JAL partner awards only, `["JX"]` for Starlux, `["AA"]` for American.
- `maxTaxes`: skip options above this amount in USD per passenger, e.g. `50`.
- `onlyNewOrChanged`: `true` for scheduled alerts (see the FAQ).

#### 📤 Output example

One row = one itinerary, in one cabin, on one date (shortened; `segments` holds every flight):

```json
{
  "program": "atmos",
  "programName": "Alaska Airlines Atmos Rewards",
  "origin": "LAX",
  "destination": "NRT",
  "date": "2026-12-13",
  "cabin": "premium",
  "milesRequired": 170000,
  "pointsCurrency": "Atmos points",
  "taxesAmount": 48.7,
  "taxesCurrency": "USD",
  "seatsLeft": 4,
  "flightNumbers": ["JX1", "JX800"],
  "marketingCarriers": ["JX"],
  "operatingCarriers": ["JX"],
  "stops": 1,
  "connections": ["TPE"],
  "departureTime": "2026-12-13T22:50:00-08:00",
  "arrivalTime": "2026-12-15T12:35:00+09:00",
  "durationMinutes": 1245,
  "aircraft": ["Airbus A350-1000"],
  "mixedCabin": false,
  "awardType": "REFUNDABLE_PARTNER_PREMIUM",
  "fareClass": "E/E",
  "refundable": true,
  "segments": [
    {"flightNumber": "JX1", "operatingCarrier": "JX", "origin": "LAX", "destination": "TPE", "cabin": "premium", "bookingCode": "E", "layoverMinutes": 175, "aircraft": "Airbus A350-1000"},
    {"flightNumber": "JX800", "operatingCarrier": "JX", "origin": "TPE", "destination": "NRT", "cabin": "premium", "bookingCode": "E", "layoverMinutes": 0, "aircraft": "Airbus A350-1000"}
  ],
  "bookingUrl": "https://www.alaskaair.com/search/results?A=1&C=0&L=0&O=LAX&D=NRT&OD=2026-12-13&RT=false&ShoppingMethod=onlineaward",
  "scrapedAt": "2026-11-03T02:14:44Z",
  "source": "live"
}
```

The **Award seats** table view shows date, route, cabin, points, taxes, seats left, flights, operator, stops, times and the booking link. `RUN_SUMMARY` (key-value store) lists every route-day with `OK`, `NO_RESULTS`, `UNCHANGED` (watch mode), `SKIPPED` or `ERROR` and how many options the airline returned before your filters.

#### 💰 How much does it cost?

| Event | Price |
|---|---|
| Award option (one row) | **$0.80 / 1,000** (Bronze: $0.0008; Silver $0.0007; Gold and up $0.0006; Free plan $0.001) |
| Run start | $0.005 |
| Free every month | **200 award options** |

The first run is covered: 200 options are free each month, and Apify's Free plan includes $5 of credit. A typical route-day returns 15–60 options across cabins. **Cheapest per cabin per day** mode returns 1–4 rows per day: a 31-day award calendar for one route costs about $0.10. Set a spending limit on the run and the actor stops cleanly at it.

#### 🚀 How to search award seats (step by step)

1. Click **Try for free**.
2. Enter airports in **From** and **To**, and a date or date range.
3. Pick cabins and filters (optional), then click **Start**.
4. Open the **Award seats** view, or export JSON, CSV or Excel.
5. To book, open the row's `bookingUrl` and sign in to your own Atmos account there.

#### 📊 Popular use cases

- **Award alerts on a schedule**: run daily with relative dates (`+1` to `+60`), `maxMiles` and `onlyNewOrChanged`, and get a row only when saver-level business space opens or a price drops.
- **Route monitoring**: track seats left and points prices on one route for weeks, and spot dynamic pricing changes.
- **Travel-hacking dashboards and newsletters**: an award calendar per route and cabin, refreshed live.
- **Partner sweet spots**: filter `carriers` to JAL, Qantas, Cathay or Starlux and see which dates have partner space bookable with Atmos points.

#### 🔌 Integrations & API

```bash
curl -X POST "https://api.apify.com/v2/acts/k-data-lab~airline-award-seat-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"origins": ["SEA"], "destinations": ["HNL"], "dateFrom": "+14", "dateTo": "+20", "cabins": ["first"], "outputMode": "cheapestPerCabinPerDay"}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("<TOKEN>")
run = client.actor("k-data-lab/airline-award-seat-scraper").call(run_input={
    "origins": ["LAX"], "destinations": ["NRT"], "dateFrom": "+30", "dateTo": "+44",
    "cabins": ["business"], "maxMiles": 160000})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["date"], row["flightNumbers"], row["milesRequired"], row["seatsLeft"])
```

**n8n / Make / Zapier**: use the Apify app → "Run Actor" with `k-data-lab/airline-award-seat-scraper` and the input above, then "Get dataset items". Add a **Schedule** (Console → Schedules) for daily alerts.

#### 🤖 Use it from AI agents (MCP)

Give Claude, ChatGPT, Cursor, VS Code or n8n a ready-made award-search tool through [Apify's MCP server](https://mcp.apify.com):

- This actor only: `https://mcp.apify.com?tools=actors,docs,k-data-lab/airline-award-seat-scraper`

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=actors,docs,k-data-lab/airline-award-seat-scraper"
```

Claude Desktop: Settings → Connectors → Add custom connector, paste the same URL. Cursor / VS Code: add it as an HTTP MCP server with the header `Authorization: Bearer <YOUR_APIFY_TOKEN>`.

An agent only needs `origins`, `destinations` and a date. City names work, and `+N` dates mean days from today:

```json
{"origins": ["Seattle"], "destinations": ["Tokyo"], "dateFrom": "2026-12-10", "dateTo": "2026-12-20", "cabins": ["business"], "outputMode": "cheapestPerCabinPerDay"}
```

Each row has `milesRequired`, `taxesAmount`, `seatsLeft`, `flightNumbers`, `operatingCarriers` and `bookingUrl`. An empty result means no seats matched: `RUN_SUMMARY` shows what the airline returned for each route-day.

**Try asking**

- "Find business-class award seats from LAX to Tokyo for 2 people in the next 6 weeks, under 160,000 points each."
- "Which days next month have nonstop first-class awards from Seattle to Honolulu, and how many seats are left?"
- "Show me JAL partner award space from the US West Coast to Tokyo in January."

#### ❓ FAQ

**What is an award flight?** A flight you pay for with airline miles or points plus taxes and fees, instead of cash. Airlines release a limited number of award seats per flight, so availability changes constantly. This actor shows which flights have award seats, at what price.

**Is this the Alaska Mileage Plan award search?** Yes. Alaska renamed Mileage Plan to Atmos Rewards, and this actor uses the same award search on alaskaair.com. Points in the results are Atmos points.

**Is the data live?** Yes. Every route-day is searched on the airline's award search during your run (`source: "live"`, `scrapedAt`). Award space changes by the minute, so book from `bookingUrl` soon after.

**How do I get an alert when award seats open?** Save the search as a Task, set `onlyNewOrChanged` to `true`, and add a Schedule. The first run returns every match and sets the baseline, so you pay for it only beyond the free quota. After that, each row is new, cheaper or has more seats (`changeType`, with `previousMiles` and `previousSeatsLeft`). Seats that vanish and come back count as new. Connect a webhook, Slack, email or n8n to act on the rows. A run with no changes returns nothing and only costs the run start.

**Do I need an Alaska / Atmos account?** No, searching needs no login. You only sign in on the airline site when you book.

**What about programs that need a login, like Korean Air SKYPASS?** Korean Air's and Asiana's award searches need your login, and both sites also refuse cloud servers before you can log in, so a pasted session wouldn't work today. We never ask for passwords. If a login-only program becomes reachable, it will take your own session (exported with the free Cookie-Editor extension) in a secret input field, and this README will show the steps.

**Why is `milesRequired` different on two days for the same flight?** Atmos prices awards dynamically, by date and by how full the flight is. That is why a live search matters.

**What does `seatsLeft` mean?** Seats the airline shows at that award price, up to 9. With `passengers: 2` or more, options with fewer seats are removed.

**Are taxes per person?** `taxesAmount` and `milesRequired` are per passenger. `totalTaxesAllPassengers` and `totalMilesAllPassengers` are for everyone.

**Why did a route return nothing?** The airline had no award seats matching your filters, or doesn't fly or partner on that route. `RUN_SUMMARY.perSearch` shows `awardOptionsFound` (before filters) for each route-day.

**Is it legal?** The actor reads the same public award search any visitor can use without logging in. It collects no personal data. It is unofficial and not affiliated with Alaska Airlines or any airline. Check that your use complies with the airline's terms and your local laws.

#### 🧰 More from K-Data Lab

**Travel**: [Agoda Scraper API](https://apify.com/k-data-lab/agoda-scraper): hotel prices, room offers and reviews for any city, no login

**Apps and ads**

- [Google Play Scraper API](https://apify.com/k-data-lab/google-play-scraper): app details and reviews from Google Play, any country
- [Google Ads Transparency & Ad Library Scraper](https://apify.com/k-data-lab/google-ad-library-scraper): every Google ad a competitor runs

**Amazon**

- [Amazon ASIN Rating & Review Count Lookup](https://apify.com/k-data-lab/amazon-asin-rating-scraper): ratings, review counts and BSR, no login
- [Amazon Seller Central Review Scraper](https://apify.com/k-data-lab/amazon-seller-central-review-scraper): monitor your brand's reviews

**Korean data**

- [Korean Music Chart API](https://apify.com/k-data-lab/korean-music-chart-scraper): Melon, Genie, Bugs, FLO and VIBE in one chart
- Single charts: [Melon](https://apify.com/k-data-lab/melon-scraper), [Genie](https://apify.com/k-data-lab/genie-scraper), [Bugs](https://apify.com/k-data-lab/bugs-scraper), [FLO](https://apify.com/k-data-lab/flo-scraper), [VIBE](https://apify.com/k-data-lab/vibe-scraper)
- Korea apartment prices: [KB Land](https://apify.com/k-data-lab/kbland-scraper), [R114](https://apify.com/k-data-lab/r114-scraper)

#### 💬 Feedback

Need another program, or a field that's missing? Open an issue on the **Issues** tab. We answer the same day.

Tags: alaska airlines award flights, award seat availability, award flight search api, alaska mileage plan, atmos rewards, miles flights, points flights, partner award space, jal award, qantas award, cathay award, starlux award, award alerts, award calendar, travel hacking, 마일리지 좌석 조회

# Changelog

This Actor's version history is a separate document: https://apify.com/k-data-lab/airline-award-seat-scraper/changelog.md

# Actor input Schema

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

Where the flight departs. Use 3-letter IATA airport codes (SEA, LAX, JFK, HNL, ICN), metro codes (NYC, TYO, LON) or city names (Tokyo, New York); metros expand to their airports. Every origin is searched against every destination.

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

Where the flight arrives. Same format as origins: airport codes (JFK, NRT, SYD, LHR, DOH), metro codes (TYO = NRT + HND) or city names (Tokyo).

## `dateFrom` (type: `string`):

First departure date: YYYY-MM-DD, or days from today such as +30 (best for scheduled runs). Empty = 30 days from today. The airline sells awards about 11 months ahead.

## `dateTo` (type: `string`):

Last departure date (inclusive): YYYY-MM-DD or +N days. Empty = same day as dateFrom. Up to 120 days per run; every day is searched live. One date works too.

## `cabins` (type: `array`):

Keep only these cabins: economy, premium (premium economy), business, first. Empty = all cabins. On Alaska domestic flights 'first' is the domestic First Class cabin.

## `passengers` (type: `integer`):

Adults travelling together (1–7). With 2+ only options with at least that many award seats are kept.

## `programs` (type: `array`):

Programs to search live. Today: Alaska Airlines Atmos Rewards (no login; also finds partner awards on American, JAL, Qantas, Cathay Pacific, Starlux, Hawaiian and others). The README lists every program we tested and why the others are not available yet.

## `outputMode` (type: `string`):

'all' = every flight option per cabin; 'cheapestPerCabinPerDay' = only the lowest-points option per route, day and cabin (best for calendars and alerts, fewer results to pay for).

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

0 = nonstop only, 1 = up to one connection. Empty = any.

## `maxMiles` (type: `integer`):

Drop options that cost more points than this per passenger, e.g. 60000. Empty = no limit.

## `minSeats` (type: `integer`):

Keep only options with at least this many award seats left. Defaults to the number of passengers.

## `carriers` (type: `array`):

Keep only itineraries flown or marketed by these airlines, e.g. JL (JAL), QF (Qantas), CX (Cathay), AA, HA, JX (Starlux). Empty = all.

## `excludeMixedCabin` (type: `boolean`):

Drop options where part of the trip is in a lower cabin (e.g. business with an economy connection).

## `maxTaxes` (type: `number`):

Drop options whose taxes and fees are above this amount in USD per passenger, e.g. 50. Useful for skipping long-haul partner awards with high surcharges. Empty = no limit.

## `onlyNewOrChanged` (type: `boolean`):

For scheduled alerts. Returns only options that are new, cheaper in points or have more seats left than the last run of this same search, marked with changeType. The first run returns every match and sets the baseline. The same origins, destinations, passengers, output mode and filters count as the same search, so relative dates such as +1 to +60 keep working.

## `maxResults` (type: `integer`):

Stop after this many award options (rows). 0 = no limit.

## `proxyConfiguration` (type: `object`):

Used only if the airline refuses our direct connection. The default Apify datacenter proxy is enough.

## Actor input object example

```json
{
  "origins": [
    "SEA",
    "LAX"
  ],
  "destinations": [
    "TYO"
  ],
  "dateFrom": "2026-12-10",
  "dateTo": "2026-12-16",
  "cabins": [],
  "passengers": 1,
  "programs": [
    "atmos"
  ],
  "outputMode": "cheapestPerCabinPerDay",
  "carriers": [
    "JL",
    "CX"
  ],
  "excludeMixedCabin": false,
  "onlyNewOrChanged": false,
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `awards` (type: `string`):

No description

## `all` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "origins": [
        "SEA"
    ],
    "destinations": [
        "JFK"
    ],
    "dateFrom": "+30",
    "dateTo": "+31",
    "outputMode": "cheapestPerCabinPerDay",
    "maxResults": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("k-data-lab/airline-award-seat-scraper").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 = {
    "origins": ["SEA"],
    "destinations": ["JFK"],
    "dateFrom": "+30",
    "dateTo": "+31",
    "outputMode": "cheapestPerCabinPerDay",
    "maxResults": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("k-data-lab/airline-award-seat-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "origins": [
    "SEA"
  ],
  "destinations": [
    "JFK"
  ],
  "dateFrom": "+30",
  "dateTo": "+31",
  "outputMode": "cheapestPerCabinPerDay",
  "maxResults": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call k-data-lab/airline-award-seat-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,k-data-lab/airline-award-seat-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/nGL9brJ2AuSmMF7ER/builds/hZQpfCBQyAEnkTzxn/openapi.json
