Flightpoints Award Flights Scraper: Miles, Taxes avatar

Flightpoints Award Flights Scraper: Miles, Taxes

Pricing

$0.01 / 1,000 award flights

Go to Apify Store
Flightpoints Award Flights Scraper: Miles, Taxes

Flightpoints Award Flights Scraper: Miles, Taxes

Search public award availability from Flightpoints for one main route on a date or bounded date window, with optional extra routes. Export structured itineraries with miles, taxes, seats, cabin details, loyalty programs, flight segments, and booking links when available.

Pricing

$0.01 / 1,000 award flights

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

1

Bookmarked

46

Total users

14

Monthly active users

4.9 days

Issues response

8 days ago

Last modified

Share

✈️ Find award seats on your route

For points and miles researchers, travel teams, and developers, Award Flights Scraper searches public Flightpoints award data for one main route and a departure date or date window, with optional extra routes. It returns structured itinerary rows with miles or points, taxes, seats, cabin availability, loyalty details, flight segments, and booking links, so you can review award options in a dataset.

📦 Award itinerary data

Each dataset item is one award flight itinerary from Flightpoints. A row keeps the source, search, route, date, loyalty program, cabin details, and flight segments together. Some values can be null or empty when the source does not provide them.

The Actor collects public award-search data. It does not book flights, use airline or loyalty-program accounts, redeem points, search cash fares, or guarantee that an award seat is still available later.

Enter one origin, destination, and departure date, then add any filters. The Actor saves matching itinerary rows as it finds them and stops when it reaches Maximum itineraries or Flightpoints has no more available results. Leave Maximum itineraries empty to return all available results until Flightpoints has no more results or the search ends early.

The Actor reads the award results Flightpoints has already saved. It does not ask Flightpoints for live availability, so a route can show no rows when Flightpoints has not saved a result for it.

If a search finds no available itineraries, the dataset can be empty. No placeholder award rows are added. An empty dataset can mean one of four things: Flightpoints had no saved rows for that route and date, your filters removed every row, every row lacked a cabin with miles, a tax amount, and at least one seat, or a search could not run. When a search could not run, the run log shows a warning. The warning says whether Flightpoints could not complete the search or the source was temporarily unavailable. An unknown loyalty program code gets its own warning that names the code. If Flightpoints lists more flights than its result pages send back, the run log warns that some flights may be missing from the run.

⚙️ Input

Input fields

FieldTypeWhat it does
originstringSets the three-letter IATA code for the departure airport.
destinationstringSets the three-letter IATA code for the arrival airport.
departureDatedate stringSets the departure date for the main route. It is a one-day search when startDate and endDate are empty.
startDatedate stringSets the optional first date in a bounded search window.
endDatedate stringSets the optional last date in a bounded search window.
additionalRoutesobject[]Adds extra routes to search in the same run. Each route needs its own origin, destination, and departure date. Leave empty to search only the main route.
additionalRoutes[].originstringSets the three-letter IATA code for the departure airport of an extra route.
additionalRoutes[].destinationstringSets the three-letter IATA code for the arrival airport of an extra route.
additionalRoutes[].departureDatedate stringSets the departure date for an extra route. startDate and endDate do not apply to it.
cabinchoiceKeeps itineraries with availability in economy, premium economy, business, or first.
maxMilesintegerKeeps itineraries whose matching cabin award price is at or below this number of miles.
maxCashTaxesnumberKeeps itineraries whose cash taxes or surcharges are at or below this amount.
minSeatsintegerKeeps itineraries with at least this many available award seats.
nonstopbooleanKeeps only itineraries with no connections.
sortBychoicePrefers itineraries with availability in the selected cabin before saving rows. Each batch of results is sorted on its own, so matches in later batches do not move to the top.
issuersstring[]Keeps only these loyalty program codes, such as CX for Cathay Pacific Asia Miles. Enter codes, not program names. Leave empty to include all programs. Codes that Flightpoints does not list, or lists as inactive with no routes, are reported in a warning. If every code is unknown, no search runs. If the program list cannot be loaded, the run warns that the codes were not checked and still searches.
operatingAirlinesstring[]Airline codes to include, such as CX for Cathay Pacific. This setting is not applied yet, so results include flights from any operating airline.
maxResultsintegerStops after this many itinerary rows. Leave empty to return all available results until Flightpoints has no more results or the search ends early.

Use origin, destination, and departureDate for one route and one date. Add additionalRoutes to search more routes in the same run, each with its own departure date. Add startDate and endDate for a bounded date window. The end date can be at most 60 days after the start date; a later end date is cut to 60 days after the start. Each Flightpoints search covers up to 7 days either side of its search date, so the Actor splits a longer window into searches of up to 15 days. Very wide Flightpoints searches can lose or repeat rows, so the Actor keeps each search to 15 days or less. Each part of the window is its own Flightpoints search. If Flightpoints skips one part, the run log shows a warning and the other parts still run. The filters decide which public award itineraries can be saved.

Example input

{
"origin": "JFK",
"destination": "LHR",
"departureDate": "2026-11-01",
"maxResults": 5
}

This example searches one route and date and returns up to five itineraries. The empty optional filters use their normal defaults.

🧾 Output

The default dataset has one award itinerary shape. source names the public source that supplied the row. Optional values are null or empty when the source does not provide them.

Output fields

FieldTypeWhat it does
sourcestringNames the public source that supplied the itinerary.
searchIdstringIdentifies the source search that produced the row.
originstringGives the three-letter IATA origin code.
destinationstringGives the three-letter IATA destination code.
departureDatestringGives the itinerary departure date in YYYY-MM-DD form.
originNamestring or nullGives the origin airport name when available.
destinationNamestring or nullGives the destination airport name when available.
coordinatesobjectHolds origin and destination coordinates when available.
coordinates.originobject or nullHolds origin airport coordinates when available.
coordinates.origin.latitudenumberGives origin latitude in decimal degrees.
coordinates.origin.longitudenumberGives origin longitude in decimal degrees.
coordinates.destinationobject or nullHolds destination airport coordinates when available.
coordinates.destination.latitudenumberGives destination latitude in decimal degrees.
coordinates.destination.longitudenumberGives destination longitude in decimal degrees.
programstringGives the loyalty program code.
programNamestring or nullGives the loyalty program name when available.
flightIdstringGives the source itinerary identifier.
bookingUrlstring or nullLinks to a program or booking page when available.
lastSeenstring or nullGives the source time when the award was last seen, when supplied.
airlinestring or nullGives the main airline name when available.
alliancestring or nullGives the airline alliance when available.
departureTimestring or nullGives the itinerary departure time when available.
arrivalDatestring or nullGives the arrival date when available.
arrivalTimestring or nullGives the arrival time when available.
durationMinutesinteger or nullGives total itinerary duration in minutes when available.
stopsinteger or nullGives the number of itinerary stops when available.
distanceinteger or nullGives route distance in miles when available.
connectionsstring[]Lists connection airport codes.
connections[]stringGives one connection airport IATA code.
airlinesobject[]Lists airlines associated with the itinerary.
airlines[].codestring or nullGives an airline code when available.
airlines[].namestring or nullGives an airline name when available.
economyobjectHolds economy award details. Present only when the cabin is listed.
premiumEconomyobjectHolds premium economy award details. Present only when the cabin is listed.
businessobjectHolds business award details. Present only when the cabin is listed.
firstobjectHolds first class award details. Present only when the cabin is listed.
economy.miles, premiumEconomy.miles, business.miles, first.milesintegerGives award miles or points for each listed cabin.
economy.tax, premiumEconomy.tax, business.tax, first.taxnumberGives cash taxes or surcharges for each listed cabin.
economy.seats, premiumEconomy.seats, business.seats, first.seatsintegerGives the number of award seats for each listed cabin. A listed cabin has at least one seat.
economy.stops, premiumEconomy.stops, business.stops, first.stopsinteger or nullGives cabin-specific stop counts when supplied.
economy.airlineCodes, premiumEconomy.airlineCodes, business.airlineCodes, first.airlineCodesstring[]Lists airline codes for each cabin option.
economy.airlineCodes[], premiumEconomy.airlineCodes[], business.airlineCodes[], first.airlineCodes[]stringGives one airline code for a cabin option.
economy.available, premiumEconomy.available, business.available, first.availablebooleanIs true for each cabin listed in the row.
segmentsobject[]Lists the flight legs in the itinerary.
segments[].segmentNumberintegerGives the segment order.
segments[].originstring or nullGives the segment departure airport code.
segments[].destinationstring or nullGives the segment arrival airport code.
segments[].flightNumberstring or nullGives the flight number when available.
segments[].airlineCodestring or nullGives the operating airline code when available.
segments[].airlineNamestring or nullGives the operating airline name when available.
segments[].cabinstring or nullGives the segment cabin when available.
segments[].fareClassstring or nullGives the fare class when available.
segments[].aircraftstring or nullGives the aircraft type when available.
segments[].distanceinteger or nullGives the segment distance in miles when available.
segments[].layoverMinutesinteger or nullGives the layover before the next segment when available.
segments[].travelTimeMinutesinteger or nullGives segment travel time in minutes when available.

Example award itinerary

This complete row is one of the five rows that the example input above returned in a run on 2026-10-12. Its values are unchanged from the saved row. Null and empty values are kept as the source returned them.

{
"source": "flightpoints",
"searchId": "27862c0d6317164e94a99ba22b744e6fbbf1d1bbe557bd5cbd8d8970dc704608",
"origin": "JFK",
"destination": "LHR",
"departureDate": "2026-11-01",
"originName": "John F. Kennedy International Airport",
"destinationName": null,
"coordinates": {
"origin": {
"latitude": 40.6397,
"longitude": -73.7789
},
"destination": null
},
"program": "AA",
"programName": "AAdvantage",
"airline": "American Airlines",
"alliance": "oneworld",
"flightId": "AA_20261101_JFK_LHR_AA2848-AA90",
"bookingUrl": "https://www.aa.com/booking/search?locale=en_US&pax=1&adult=1&type=OneWay&searchType=Award&cabin=&carriers=ALL&travelType=personal&slices=%5B%7B%22orig%22%3A%22JFK%22%2C%22origNearby%22%3Afalse%2C%22dest%22%3A%22LHR%22%2C%22destNearby%22%3Afalse%2C%22date%22%3A%222026-11-01%22%7D%5D",
"lastSeen": "2026-10-04T01:34:08Z",
"departureTime": "10:45:00",
"arrivalDate": "2026-11-02",
"arrivalTime": "10:25:00",
"durationMinutes": 650,
"stops": 1,
"distance": 3451,
"connections": [
"ORD"
],
"airlines": [
{
"code": "AA",
"name": "American Airlines"
}
],
"economy": {
"miles": 60000,
"tax": 5.6,
"seats": 1,
"stops": 0,
"airlineCodes": [
"AA"
],
"available": true
},
"premiumEconomy": {
"miles": 188500,
"tax": 5.6,
"seats": 1,
"stops": 1,
"airlineCodes": [
"AA"
],
"available": true
},
"business": {
"miles": 450000,
"tax": 5.6,
"seats": 1,
"stops": 0,
"airlineCodes": [
"AA"
],
"available": true
},
"segments": [
{
"segmentNumber": 1,
"origin": "JFK",
"destination": "ORD",
"flightNumber": "AA2848",
"airlineCode": "AA",
"airlineName": "American Airlines",
"aircraft": "Airbus A319",
"distance": 740,
"layoverMinutes": 470,
"travelTimeMinutes": 175,
"cabin": null,
"fareClass": null
},
{
"segmentNumber": 2,
"origin": "ORD",
"destination": "LHR",
"flightNumber": "AA90",
"airlineCode": "AA",
"airlineName": "American Airlines",
"aircraft": "Boeing 787-9",
"distance": 3953,
"layoverMinutes": 0,
"travelTimeMinutes": 475,
"cabin": null,
"fareClass": null
}
]
}

💳 Pricing

The Actor uses pay-per-event pricing. You pay $0.00001 for each saved award flight itinerary. The current pricing setup has no separate Actor-start event.

Use Maximum itineraries and the search filters to control which matching itineraries can be saved.

🔌 Integrations

  • Export award flight rows as JSON, CSV, Excel, XML, RSS, or HTML.
  • Read saved itineraries through the Apify API for points dashboards, internal travel tools, or route research.
  • Schedule repeat runs to monitor the same routes and date windows.
  • Send completed runs to webhooks or downstream tools when new datasets are ready.

❓ FAQ

What happens if no awards are available?

The run can finish with an empty dataset. The Actor does not add placeholder rows for an unavailable or empty source response. The run log shows a warning when a search could not run.

If Flightpoints rejects a search with an error such as HTTP 400 or 422, the run stops with that error. Rows saved before the error stay in the dataset, but the run summary is not printed. Temporary errors while a search is set up or its results are read, such as timeouts and HTTP 500, 502, 503, or 504 responses, are retried. If they still fail, the run log shows a warning and the run keeps going.

What does Maximum itineraries do?

It stops the run after the requested number of itinerary rows. Leave it empty to return all available results until Flightpoints has no more results or the search ends early.

Can I search a date window?

Yes. Enter Start date and End date to search a bounded departure-date window. Flightpoints decides which dates and awards it can return.

Does the Actor search Roame?

No. This Actor searches Flightpoints only, because it removed the Roame search. A saved input that still asks for Roame (roame or both) gets a warning, and the run searches Flightpoints only.

Can I filter by cabin, miles, taxes, seats, or nonstop flights?

Yes. Use the cabin, maximum miles, maximum cash taxes, minimum award seats, and nonstop filters. You can also prioritize a cabin or keep selected loyalty programs.

Why are some cabins missing from a row?

A row lists only the cabins that have a miles amount, a tax amount, and at least one seat. A cabin that is missing from the row did not meet that test in the saved data. Other values, such as a cabin's stops or a segment's airlineCode, can still be null when the source does not provide them.

Are the miles and seats guaranteed?

No. The row is a saved Flightpoints observation. Award availability can change after the run, so check the returned link when one is available.

Does this book flights or use my airline login?

No. The Actor collects public award-search data and does not book flights, redeem points, or use airline or loyalty-program accounts.

Can I read the rows through an API?

Yes. Use the Apify API to read the saved dataset rows or export them for your own workflow.

📝 Changelog

v2.0 (12-10-2026)

  • Removed the Roame search and the Search award flights with setting. Flightpoints is now the only source. A saved input that still asks for Roame gets a warning.
  • Removed these output fields: sourceSearchUrl, dateWindow, issuer, issuerName, retrievedAt, relatedOffers, and the direct and airlines fields inside each cabin.
  • Renamed the loyalty program filter to Redemption program codes. Enter codes such as CX, not program names.
  • Added Additional routes. Search extra routes in the same run, so you don't need a separate run for each one. Each extra route has its own origin, destination, and departure date. Start date and End date apply only to the main route. All routes share one Maximum itineraries limit.
  • Fixed a bug that skipped Flightpoints searches, so their saved results were never returned.
  • Searches that use a program code such as CX for Cathay Pacific Asia Miles now return the rows Flightpoints has saved for them.
  • Long date windows now include their last days. Before, the final days of a window could be missing from the results.
  • The run log warns when Flightpoints lists more flights than it sent back, so some flights may be missing. A search that stops at the Maximum itineraries limit gets no such warning.
  • Cabins are listed only when miles, tax, and at least one seat are present. Results with no such cabin are left out.
  • Unknown program codes get a warning.
  • If every program code is unknown, no search runs.
  • If the Flightpoints program list cannot be loaded, the run warns that the program codes were not checked and still searches.

v1.0 (02-09-2026)

  • Search public award flights from Flightpoints, Roame, or both sources.
  • Filter results by miles, cash taxes, seats, cabin, stops, and loyalty program.
  • Keep saved rows and finish successfully with a clear source warning when a source cannot complete a search.

v0.2

  • Added the Maximum miles filter so you can save only award flights at or below your mileage ceiling.

v0.1

  • Added multi-route and date-window searches, from-anywhere and to-anywhere discovery, cabin and loyalty-program filters, richer airport and itinerary fields, and hosted pay-per-event pricing.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré