# Frontier Flights Scraper: Fares, Cabins & Schedules (`scrapers_lat/frontier-flights-scraper`) Actor

Scrape every Frontier Airlines flight between two US airports by date. Get all fare families (Standard, Economy, Premium, Business, Discount Den, GoWild), price, cabin, times, duration, stops. Export JSON, CSV, Excel.

- **URL**: https://apify.com/scrapers\_lat/frontier-flights-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Travel, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.48 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

[![Frontier Flights Scraper](https://scrapers.lat/banners/frontier-flights-scraper.png)](https://apify.com/scrapers_lat/frontier-flights-scraper)

## Frontier Flights Scraper: Fares, Cabins and Schedules

Here is one real result, with every field the actor returns:

```json
{
  "origin": "DEN",
  "originName": "Denver, CO (DEN)",
  "destination": "LAS",
  "destinationName": "Las Vegas, NV (LAS)",
  "departureDateTime": "2026-09-15T07:30:00",
  "arrivalDateTime": "2026-09-15T08:28:00",
  "departureDateTimeUtc": "2026-09-15T13:30:00",
  "arrivalDateTimeUtc": "2026-09-15T15:28:00",
  "flightNumber": "F9 2349",
  "fareType": "Standard",
  "cabin": "Economy",
  "price": 63.98,
  "bundlePrice": 0,
  "currency": "USD",
  "seatsLeft": null,
  "duration": "1 hrs 58 min",
  "stops": 0,
  "stopsText": "Nonstop",
  "operatedBy": null,
  "soldOut": false,
  "fareClass": null,
  "fareKey": "0~R~~F9~R21EXD3~CLUB~~0~156~~X|F9~2349~ ~~DEN~09/15/2026 07:30~LAS~09/15/2026 08:28~~",
  "fareOptions": null,
  "segments": [
    {
      "flightNumber": "F9 2349",
      "origin": "DEN",
      "destination": "LAS",
      "departureDateTime": "2026-09-15T07:30:00",
      "arrivalDateTime": "2026-09-15T08:28:00",
      "duration": "1 hrs 58 min"
    }
  ],
  "isNextDayArrival": false,
  "goWildAvailable": true,
  "flightKey": "F9~2349~ ~~DEN~09/15/2026 07:30~LAS~09/15/2026 08:28~~",
  "direction": "outbound",
  "isLowestFareOfDay": false,
  "source": "availability",
  "deepLink": "https://booking.flyfrontier.com/Flight/InternalSelect?o1=DEN&d1=LAS&dd1=2026-09-15&ADT=1&CHD=0&INF=0&r=false&mon=true",
  "observedAt": "2026-08-16T01:57:54.601Z",
  "error": null
}
```

The most complete Frontier Airlines fare scraper available. It returns EVERY flight of the route on each requested day (nonstop and connecting), and by default one row per fare family so you see the full Frontier price ladder: Standard, Economy, Premium, Business, Discount Den and GoWild, each with its own cabin, price and fare key.

**📥 [Input](https://apify.com/scrapers_lat/frontier-flights-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/frontier-flights-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/frontier-flights-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/frontier-flights-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Frontier%20Airlines-1a7031)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

Give the actor an origin airport, a destination airport and a date range. For each day it queries Frontier's live availability and returns every flight on the route, not just the cheapest one. Connecting itineraries are included, with a per segment breakdown, real UTC and local times, duration and stop count.

By default each fare family of each flight becomes its own dataset row, so a single nonstop flight typically produces up to six rows: Standard, Economy, Premium, Business, Discount Den and GoWild. The differentiating fields are `fareType` and `cabin`, and each row carries its own `price`, `bundlePrice` (the bundle upgrade add on where offered) and `fareKey`. Set `collapseFares` to `true` to instead get one row per flight with every fare nested in `fareOptions` and `price` set to the lowest available fare.

Turn on `includeReturn` to also scan the return leg (destination to origin) over your return date range; those rows are tagged `direction: "inbound"`.

### Quickstart

Open the actor, paste this into the input, and press Run. It returns every Frontier flight and fare from Denver to Las Vegas on one day.

```json
{
  "origin": "DEN",
  "destination": "LAS",
  "departureDateFrom": "2026-09-15",
  "departureDateTo": "2026-09-15"
}
```

### Input reference

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `origin` | string | (required) | 3 letter IATA code of the departure airport, e.g. `DEN`. |
| `destination` | string | (required) | 3 letter IATA code of the arrival airport, e.g. `LAS`. |
| `departureDateFrom` | string | ~30 days out | First outbound date, `YYYY-MM-DD`. Defaults to ~30 days ahead if empty or in the past. |
| `departureDateTo` | string | = from | Last outbound date, inclusive. |
| `adults` | integer | 1 | Number of adult passengers (1 to 9). |
| `collapseFares` | boolean | false | `false`: one row per fare family. `true`: one row per flight with fares nested in `fareOptions`. |
| `includeReturn` | boolean | false | Also scan the return leg (destination to origin), tagged `direction: "inbound"`. |
| `returnDateFrom` | string | | First return date (used only when `includeReturn` is on). |
| `returnDateTo` | string | | Last return date, inclusive. |
| `maxFlights` | integer | 100 | Maximum fare rows to return. Free Apify plans are capped at 10 per run. |
| `proxyConfiguration` | object | Apify Residential US | Proxy settings. US residential proxy is recommended and set by default. |

### Output reference

| Field | Description |
| --- | --- |
| `origin`, `destination` | IATA codes of the leg. |
| `originName`, `destinationName` | Formatted city and airport names. |
| `departureDateTime`, `arrivalDateTime` | Local departure and arrival timestamps. |
| `departureDateTimeUtc`, `arrivalDateTimeUtc` | Same in UTC. |
| `flightNumber` | Frontier flight number(s); connecting itineraries join their segments. |
| `fareType` | Fare family: Standard, Economy, Premium, Business, Discount Den or GoWild. `null` in collapsed mode. |
| `cabin` | Cabin for the fare (Economy, Premium, Business). |
| `price` | Fare price in USD. In collapsed mode this is the lowest available fare. |
| `bundlePrice` | Bundle upgrade add on price where offered, else `null`. |
| `currency` | Always `USD`. |
| `seatsLeft` | Seats remaining for the fare where Frontier exposes it, else `null`. |
| `duration` | Total journey duration. |
| `stops`, `stopsText` | Stop count and label (e.g. `Nonstop`). |
| `operatedBy` | Operating carrier text when the flight is operated by a partner. |
| `soldOut` | Whether the flight has no sellable fare. |
| `fareClass`, `fareKey` | Frontier fare class and booking key. |
| `fareOptions` | Array of all fares for the flight (only in collapsed mode). |
| `segments` | Per segment breakdown (flight number, airports, times, duration). |
| `isNextDayArrival` | Whether the itinerary arrives on the next day. |
| `goWildAvailable` | Whether a GoWild pass fare is available on the flight. |
| `flightKey` | Frontier sell key for the itinerary. |
| `direction` | `outbound` or `inbound`. |
| `isLowestFareOfDay` | Whether this fare is the lowest of the day for the leg. |
| `source` | Data source of the row. |
| `deepLink` | Direct link to the Frontier search for this leg and date. |
| `observedAt` | When the record was scraped, ISO 8601. |
| `error` | Error message for a failed day, else `null`. |

### Run via API and CLI

Start a run with the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~frontier-flights-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"origin":"DEN","destination":"LAS","departureDateFrom":"2026-09-15"}'
```

Or with the Apify CLI:

```bash
apify call scrapers_lat/frontier-flights-scraper \
  --input '{"origin":"DEN","destination":"LAS","departureDateFrom":"2026-09-15"}'
```

### Fetch results

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"
```

Swap `format=json` for `csv` or `xlsx` to export a spreadsheet.

### Billing and limits

This actor uses pay per result billing. You are charged only for successful fare rows written to the dataset (the `result` event). Days that fail return an `error` row and are never charged. Free Apify plans are capped at 10 rows per run; upgrade for unlimited results.

### FAQ and troubleshooting

**Does it return every flight or only the cheapest?**
Every flight on the route for each requested day, including connecting itineraries, not just the cheapest.

**What are all those fare types?**
Frontier sells several fare families per flight. By default each becomes its own row so you can compare the full ladder. Use `collapseFares` for one row per flight.

**Can I scrape round trips?**
Yes. Set `includeReturn` to `true` and provide `returnDateFrom` and `returnDateTo`. Return rows are tagged `direction: "inbound"`.

**Which airports are supported?**
Any airport pair in Frontier's route network, addressed by 3 letter IATA code.

**Why no seat maps?**
Frontier's seat map is only reachable after entering a stateful booking session, so it is not offered here. This actor focuses on complete, reliable flight and fare data.

**I got no results.**
Check that the route is actually flown by Frontier on the dates requested and that dates are in the future. Frontier does not sell past dates.

# Actor input Schema

## `origin` (type: `string`):

3-letter IATA code of the departure airport, e.g. DEN (Denver).

## `destination` (type: `string`):

3-letter IATA code of the arrival airport, e.g. LAS (Las Vegas).

## `departureDateFrom` (type: `string`):

First outbound date to scan. Defaults to ~30 days out if empty or in the past.

## `departureDateTo` (type: `string`):

Last outbound date to scan (inclusive). Defaults to the 'from' date for a single day.

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

Number of adult passengers (1-9). Affects fare availability.

## `collapseFares` (type: `boolean`):

OFF (default): every fare family of a flight is its own row (fareType + cabin differentiate). ON: one row per flight with all fares nested in fareOptions and price = lowest.

## `includeReturn` (type: `boolean`):

Also scan the return leg (destination -> origin) tagged direction 'inbound'.

## `returnDateFrom` (type: `string`):

First return date to scan (used only when Include return is on).

## `returnDateTo` (type: `string`):

Last return date to scan, inclusive (used only when Include return is on).

## `maxFlights` (type: `integer`):

Maximum number of fare rows to return (billed results). Free Apify plans are capped at 10 per run.

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

Proxy settings. Use Apify RESIDENTIAL proxies with country US for best reliability.

## Actor input object example

```json
{
  "origin": "DEN",
  "destination": "LAS",
  "departureDateFrom": "2026-09-15",
  "departureDateTo": "2026-09-17",
  "adults": 1,
  "collapseFares": false,
  "includeReturn": false,
  "returnDateFrom": "2026-09-22",
  "returnDateTo": "2026-09-24",
  "maxFlights": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `results` (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 = {
    "origin": "DEN",
    "destination": "LAS",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/frontier-flights-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 = {
    "origin": "DEN",
    "destination": "LAS",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/frontier-flights-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 '{
  "origin": "DEN",
  "destination": "LAS",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call scrapers_lat/frontier-flights-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/frontier-flights-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/nbrCkyEVSFe94Z82B/builds/FXdn1KWnKhzKAPg3Z/openapi.json
