Air Canada API Scraper avatar

Air Canada API Scraper

Under maintenance

Pricing

from $2.00 / 1,000 flight options

Go to Apify Store
Air Canada API Scraper

Air Canada API Scraper

Under maintenance

Scrapes Air Canada flight search with cash fares and fare families across cabins, a dated low-fare calendar, an optional seat layout and flight status, from the Air Canada mobile API. Read-only public travel data.

Pricing

from $2.00 / 1,000 flight options

Rating

0.0

(0)

Developer

R.L.

R.L.

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Air Canada Flight Scraper ✈️ — cash fares, fare families across cabins, and a dated low-fare calendar

Air Canada Flight Scraper — Scrapes Air Canada flight search with cash fares and fare families across cabins, a dated low-fare calendar, an optional seat layout and flight status, straight from the Air Canada mobile API. Read-only public travel data. It reads Air Canada's own API directly, so it's fast, reliable and complete — no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.


Optional extras

  • includeCalendar — adds one record per date from Air Canada's low-fare calendar. Calendar rows are capped at half of maxItems so flight results always appear alongside them.
  • includeSeatMap — a secondary, nice-to-have extra, off by default. It attaches the cabin seat layout (row, column, seat number). Air Canada's seat map carries no per-seat price and no availability, so this tells you the aircraft's seating grid, not what a seat costs or whether it is free. A seat-map failure never fails the run — the flight record is still emitted.

Timestamps

Departure and arrival times keep their original UTC offsets (e.g. 2026-09-24T07:00:00-04:00), so local times are unambiguous and no timezone is assumed on your behalf.

✨ Why use this Air Canada Flight Scraper?

  • 🟢 No code required — set your input, click Start, download your data.
  • Fast & accurate — reads Air Canada's own private API and returns structured JSON, not scraped HTML.
  • 🧾 Rich, structured data — every field below, clean and ready to use.
  • 🎟️ Fare families across cabins — economy, premium economy and business cheapest fares on every itinerary, plus booking class and fare basis codes.
  • 📅 Dated low-fare calendar — real dates with a full price breakdown (base fare, taxes, surcharges), not a guessed offset.
  • 💸 Transparent pay-per-result pricing — pay only for the rows you get.
  • 📤 Export anywhere — JSON, CSV, Excel, XML, or pull it live via the Apify API.

🎯 What can you do with Air Canada data?

  • Market & competitor research — analyse Air Canada records at scale.
  • Price & availability monitoring — track changes over time.
  • Data science & trend analysis — build clean datasets.
  • Lead generation & enrichment — feed Air Canada data into your own tools.

📥 What data does the Air Canada Flight Scraper extract?

Each row includes: type, origin, destination, departure_date, departure_time, arrival_time, duration_minutes, stops, offer_type, flight_numbers, marketing_airline, operating_airline, aircraft, departure_terminal …and more. See the full Data table below.


🚀 How to scrape Air Canada (3 steps)

  1. Set your input — provide origin or destination (see the table below; defaults work out of the box).
  2. Pick options — filters, a proxyConfiguration, and a maxItems cap.
  3. Run & export — click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.

⚙️ Input

FieldTypeDefaultDescription
originstringYYZOrigin airport IATA code, e.g. YYZ.
destinationstringYVRDestination airport IATA code, e.g. YVR.
departureDatestringOutbound date. Pick a date or use a relative value like "30 days". Empty = 30 days from today.
adultsinteger1Number of adult passengers.
includeCalendarbooleanfalseAlso emit one record per date from Air Canada's dated low-fare calendar around your departure date.
includeSeatMapbooleanfalseAttach the cabin seat LAYOUT (rows, columns, seat numbers) to each flight. Note: Air Canada's seat map carries no per-seat price or availability.
maxItemsinteger1000 = all results.
proxyConfigurationobjectApify ProxyRoute requests through a proxy (Apify Proxy by default).

Example input

{
"origin": "YYZ",
"destination": "YVR",
"adults": 1,
"includeCalendar": false,
"includeSeatMap": false,
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

📤 Output

Each result is a JSON object like this:

{
"type": "flight",
"origin": "YYZ",
"destination": "YVR",
"departure_date": "2026-09-24",
"departure_time": "2026-09-24T07:00:00-04:00",
"arrival_time": "2026-09-24T08:52:00-07:00",
"duration_minutes": 292,
"stops": 0,
"offer_type": "NonStop",
"flight_numbers": [
"AC181"
],
"marketing_airline": "AC",
"operating_airline": "AC",
"aircraft": "Boeing 787-9",
"departure_terminal": "1",
"arrival_terminal": "M",
"has_wifi": false,
"cheapest_fare_economy": 239,
"cheapest_fare_premium_economy": 1380,
"cheapest_fare_business": 2020,
"cheapest_fare_first": null,
"currency": "CAD",
"fare_options": [
{
"cabin_code": "Y",
"cheapest_fare": 239,
"booking_class": "G",
"fare_basis_code": "GU2NZCBA",
"has_lie_flat_seats": false
},
{
"cabin_code": "Y",
"cheapest_fare": 239,
"booking_class": "G",
"fare_basis_code": "GU2NZCTG",
"has_lie_flat_seats": false
},
"…+7 more"
],
"is_cheapest": true,
"ranking": 1,
"segments": [
{
"origin": "YYZ",
"destination": "YVR",
"departure_time": "2026-09-24T07:00:00-04:00",
"arrival_time": "2026-09-24T08:52:00-07:00",
"departure_terminal": "1",
"arrival_terminal": "M",
"aircraft": "Boeing 787-9",
"flight_number": "AC181",
"has_wifi": false
}
],
"seat_map": null,
"seat_count": null,
"calendar_date": null,
"calendar_total_fare": null,
"calendar_base_fare": null,
"calendar_taxes": null,
"calendar_is_lowest": null
}

🧾 Data table

FieldTypeDescription
typetextRecord type
origintextOrigin
destinationtextDestination
departure_datetextDeparture date
departure_timetextDeparts
arrival_timetextArrives
duration_minutesnumberDuration (min)
stopsnumberStops
offer_typetextOffer type
flight_numbersarrayFlight numbers
marketing_airlinetextMarketing airline
operating_airlinetextOperating airline
aircrafttextAircraft
departure_terminaltextDep terminal
arrival_terminaltextArr terminal
has_wifibooleanWi-Fi
cheapest_fare_economynumberEconomy
cheapest_fare_premium_economynumberPremium economy
cheapest_fare_businessnumberBusiness
cheapest_fare_firstnumberFirst
currencytextCurrency
fare_optionsarrayFare options
is_cheapestbooleanCheapest
rankingnumberRanking
segmentsarraySegments
seat_maparraySeat map
seat_countnumberSeats in map
calendar_datetextCalendar date
calendar_total_farenumberCalendar fare
calendar_base_farenumberCalendar base fare
calendar_taxesnumberCalendar taxes
calendar_is_lowestbooleanLowest in window

💰 Pricing — pay per result

This actor uses pay-per-event pricing: you pay only for the rows it delivers.

You scrapePrice
Flight option$2.00 per 1,000 rows

🔌 Use the Air Canada Flight Scraper via API

Run it programmatically with the Apify API:

curl -X POST "https://api.apify.com/v2/acts/aircanada-api-scraper/runs?token=YOUR_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"origin": "YYZ",
"destination": "YVR",
"adults": 1,
"includeCalendar": false,
"includeSeatMap": false,
"maxItems": 100,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}'

Or with the Apify CLI: apify call aircanada-api-scraper -i input.json -o.


❓ FAQ

Do I need an account or API key for Air Canada Flight?

No. The actor talks to Air Canada's public/mobile API for you — you only need an Apify account.

Do I need a proxy?

A proxy is recommended for reliable runs; set proxyConfiguration (Residential is safest for geo-restricted or bot-protected sites).

What export formats are supported?

JSON, CSV, Excel, XML, JSONL, RSS, or live via the Apify API and dataset endpoints.

Is scraping this legal?

You are responsible for how you use the data. Scrape only public record data and comply with Air Canada's Terms and applicable law (e.g. GDPR/CCPA for personal data).


🛠️ How it works

The actor impersonates Air Canada's official app/site and calls its private API the same way the app does, then normalises each response into the flat record above. No browser, no HTML scraping — just clean, structured data.


📌 Good to know

  • Scrape only public record data and respect Air Canada's Terms of Service and robots policy.
  • For personal data, comply with GDPR/CCPA and applicable law — you are the data controller.
  • Fields can be null when Air Canada doesn't expose them for a given record.

⭐ Found this useful?

Give the Air Canada Flight Scraper a star on Apify and check out my other apify-*-api-scraper actors.