Flightpoints Award Flights Scraper avatar

Flightpoints Award Flights Scraper

Pricing

from $0.01 / 1,000 award flight itineraries

Go to Apify Store
Flightpoints Award Flights Scraper

Flightpoints Award Flights Scraper

✈️ Scrape Flightpoints award-seat availability with miles, taxes, cabins, seats, programs, segments, and booking URLs.

Pricing

from $0.01 / 1,000 award flight itineraries

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

8

Monthly active users

6 hours ago

Last modified

Categories

Share

Find award-flight availability from Flightpoints and export itinerary-level data for miles, taxes, seats, cabins, loyalty programs, segments, and booking URLs.

What does Flightpoints Award Flights Scraper do?

Flightpoints Award Flights Scraper searches the public Flightpoints award-flight API for one route/date or a batch of up to 20 route/date combinations.

It returns clean JSON rows for individual award-flight itineraries, with stable input-search attribution for batch exports.

Each row includes the route, travel times, loyalty program, cabin availability, taxes, seats, booking URL, and segment details.

Use it to monitor high-value redemptions, compare programs, power dashboards, or build points-and-miles research workflows.

Who is it for?

  • ✈️ Award-travel bloggers tracking public saver availability.
  • 💳 Points and miles consultants preparing client trip options.
  • 🧳 Travel agencies comparing redemption choices for premium cabins.
  • 📊 Deal-monitoring teams feeding internal dashboards.
  • 🔔 Automation builders who need repeatable route/date checks.

Why use this actor?

Manual award searches are repetitive.

Flightpoints already aggregates many program results.

This actor makes those results exportable from Apify.

You can schedule runs, connect datasets to downstream tools, and compare route/date changes over time.

Data you can extract

Field groupExamples
Routeorigin, destination, departure date
Timedeparture time, arrival date, arrival time, duration
Programloyalty program code, source, booking URL
Economymiles, taxes, available seats
Premium economymiles, taxes, available seats
Businessmiles, taxes, available seats
Firstmiles, taxes, available seats
Sorting helpersbest cabin, best miles, best taxes, best seats
Segmentsconnection airports, flight numbers, airline codes
Search contextsearch index, requested route/date, date flexibility, Flightpoints search ID
Metadatadeterministic itinerary ID, last seen, scraped timestamp

How much does it cost to scrape Flightpoints award flights?

This actor uses pay-per-event pricing.

You pay a small start fee plus a per-itinerary fee for saved award-flight rows.

The default input is intentionally small so the first run stays inexpensive. Its omitted date resolves to 80 days from the run date (UTC), avoiding an expired example date.

Configured pricing is a $0.005 start fee plus tiered per-itinerary pricing: FREE $0.000027473, BRONZE $0.00002389, SILVER $0.000018634, GOLD $0.000014334, PLATINUM $0.00001, and DIAMOND $0.00001 per saved itinerary.

Quick start

  1. Open the actor on Apify.
  2. For one route, enter origin, destination, and departureDate. For a portfolio, add 1–20 objects to searches instead.
  3. Set Maximum itineraries to the total number of rows you need across the run.
  4. Choose any global cabin, seat, taxes, program, or direct-flight filters.
  5. Run the actor.
  6. Export the dataset as JSON, CSV, Excel, or through the API.

Input overview

Choose one input mode:

  • Single search (backward compatible): origin, destination, and departureDate. When the date is omitted, the Actor searches 80 days from the run date (UTC); specify a date for repeatable monitoring. An explicitly empty or malformed date is rejected.
  • Batch search: searches, an array of 1–20 objects containing origin, destination, departureDate, and optional deltaDays.

maxResults is a total run cap, not a per-search cap. Global filters include cabin, seats, direct flights, taxes, programs, and nearby dates. Batch searches run sequentially in input order for predictable source load and output attribution. When the cap is at least the number of searches, the actor reserves at least one result slot for each remaining search so an early high-volume route does not consume the whole batch.

Invalid batch entries and exhausted upstream requests are isolated per search: other routes continue, original searchIndex values are retained, and available results are preserved. Warnings and the SEARCH-FAILURES key-value-store record identify failed searches. If every search fails without rows, the run fails; storage/charging and malformed-output errors remain fatal. Completed searches with no availability are honest empty results, but incomplete searches timing out without rows are failures.

Example input

{
"searches": [
{ "origin": "JFK", "destination": "LHR", "departureDate": "2026-12-15", "deltaDays": 2 },
{ "origin": "SFO", "destination": "HND", "departureDate": "2026-12-18", "deltaDays": 1 }
],
"maxResults": 50,
"minimumSeats": 1,
"includeSegments": true
}

Output example

{
"id": "BA_20261214_JFK_LHR_BA178",
"itineraryId": "BA_20261214_JFK_LHR_BA178",
"searchId": "d5f7a9c2e4b6418a",
"searchIndex": 1,
"queryOrigin": "JFK",
"queryDestination": "LHR",
"queryDepartureDate": "2026-12-15",
"queryDeltaDays": 2,
"origin": "JFK",
"destination": "LHR",
"departureDate": "2026-12-14",
"departureTime": "18:30:00",
"arrivalDate": "2026-12-15",
"arrivalTime": "06:40:00",
"durationMinutes": 430,
"stops": 0,
"program": "BA",
"source": null,
"bookingUrl": "https://www.example.com/book",
"economyMiles": 25000,
"economyTaxes": 85.4,
"economySeats": 2,
"premiumEconomyMiles": null,
"premiumEconomyTaxes": null,
"premiumEconomySeats": null,
"businessMiles": 57500,
"businessTaxes": 175.2,
"businessSeats": 2,
"firstMiles": null,
"firstTaxes": null,
"firstSeats": null,
"bestCabin": "Economy",
"bestMiles": 25000,
"bestTaxes": 85.4,
"bestSeats": 2,
"segmentCount": 1,
"segments": [{
"segmentNumber": 1,
"origin": "JFK",
"destination": "LHR",
"departureTime": "2026-12-14T18:30:00Z",
"arrivalTime": "2026-12-15T06:40:00Z",
"airlineCode": "BA",
"flightNumber": "BA178",
"aircraft": "Boeing 777",
"durationMinutes": 430
}],
"lastSeen": "2026-09-20T12:00:00Z",
"scrapedAt": "2026-09-22T12:00:00.000Z"
}

Tips for better results

  • Use exact IATA airport codes.
  • Start with one date before enabling date flexibility.
  • Keep maxResults low for monitoring jobs; it caps the combined batch output.
  • Use minimumSeats when searching for families or groups.
  • Use onlyDirectFlights only when you specifically need non-stop options.
  • Leave programs empty when comparing all loyalty programs.

Cabin filters

You can filter for:

  • Any cabin
  • Economy
  • Premium Economy
  • Business
  • First

The output still keeps cabin-specific fields so you can sort and compare rows downstream.

Loyalty program filters

Use program codes such as:

  • AA for American AAdvantage
  • AC for Air Canada Aeroplan
  • BA for British Airways Avios
  • UA for United MileagePlus
  • VS for Virgin Atlantic Flying Club

Leave the list empty to search all programs returned by Flightpoints.

Date flexibility

deltaDays asks Flightpoints to search nearby dates.

A larger date window can return more results and take longer. Each batch item may override the global deltaDays.

For scheduled monitoring, start with 0 or 1.

Segment details

When includeSegments is enabled, each itinerary can include connecting flight segments.

Segment data may include origin, destination, departure time, arrival time, airline code, and flight number.

Disable segment details if you only need compact rows.

Integrations

Use the actor with:

  • Google Sheets for weekly award availability reports.
  • Make or Zapier for alert workflows.
  • BigQuery or Snowflake for route history analysis.
  • Slack notifications for newly available seats.
  • Custom dashboards for points-and-miles teams.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/flightpoints-award-flights-scraper').call({
origin: 'JFK',
destination: 'LHR',
departureDate: '2026-12-15',
maxResults: 50
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/flightpoints-award-flights-scraper').call(run_input={
'origin': 'JFK',
'destination': 'LHR',
'departureDate': '2026-12-15',
'maxResults': 50,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~flightpoints-award-flights-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"origin":"JFK","destination":"LHR","departureDate":"2026-12-15","maxResults":50}'

MCP usage

Connect Apify MCP to Claude with this actor enabled:

https://mcp.apify.com/?tools=automation-lab/flightpoints-award-flights-scraper

Claude Code setup:

$claude mcp add --transport http apify-flightpoints "https://mcp.apify.com/?tools=automation-lab/flightpoints-award-flights-scraper"

Claude Desktop setup (claude_desktop_config.json):

{
"mcpServers": {
"apify-flightpoints": {
"url": "https://mcp.apify.com/?tools=automation-lab/flightpoints-award-flights-scraper"
}
}
}

Cursor setup: open Settings → Tools & MCP → New MCP Server, name it apify-flightpoints, and use the MCP URL above.

VS Code setup: open MCP: Add Server from the Command Palette, choose HTTP, and use the MCP URL above.

Example prompts:

  • "Search JFK to LHR award flights on July 15 and summarize the cheapest business-class options."
  • "Run a Flightpoints award search for SFO to CDG and compare miles by program."
  • "Find routes with at least two seats and taxes below 500."

Scheduling ideas

Run daily for the same route/date.

Run weekly for a list of important premium-cabin routes.

Export results to a dashboard and compare new rows against yesterday's dataset.

Troubleshooting

A valid search can honestly return zero rows. The run succeeds and logs that route/date explicitly; try a broader date window, cabin filter, or route if you expected availability.

The actor waits for Flightpoints to mark each search complete before paginating. It retries transient network, 429, and 5xx failures with bounded backoff. If pollTimeoutSecs expires, available partial rows are preserved and the timed-out search is clearly logged.

If a search is slow, lower deltaDays and maxResults, or raise the per-search pollTimeoutSecs within its documented limit.

If taxes look high, remember that some programs add carrier surcharges.

Data freshness

Flightpoints can return cached or live availability depending on input and source state.

The actor includes lastSeen when Flightpoints provides it.

Use repeated scheduled runs for monitoring trends.

Limitations

Availability can change quickly.

Booking URLs point to the loyalty program or source site and may require users to log in there.

The actor only extracts public Flightpoints search data.

It does not book tickets.

It does not access private user accounts.

Data handling, AI, and affiliation

The actor sends only the requested public route/date and documented filters to Flightpoints over HTTPS. It uses deterministic code, not AI models, and does not send data to an AI provider.

Results and logs remain in the user's Apify run storage under the user's retention settings. The actor keeps no separate external result cache, account data, or credentials. Users can delete run storage, datasets, and logs through Apify controls.

Flightpoints is a nominative reference to the public data source. This actor is not affiliated with, endorsed by, or certified by Flightpoints.

Legality

This actor extracts publicly accessible data.

Use the data responsibly and follow Apify terms, Flightpoints terms, and applicable laws.

Do not use scraped data for spam, fraud, or abusive automation.

Support

For Actor questions or reproducible problems, use the Issues tab on the Actor's Apify Store page and include a sanitized input and run link. Never include loyalty-account credentials or other secrets.

Other automation-lab actors may help with travel and market workflows:

FAQ

Can I search multiple dates?

Use deltaDays for nearby-date flexibility, or add separate route/date objects to searches for a specific date series.

Can I search multiple routes?

Yes. Add up to 20 objects to searches. Each output row includes searchIndex and query* fields so mixed-route exports remain attributable.

Does it require a Flightpoints login?

No. The actor uses public Flightpoints search endpoints observed without login.

Does it include business and first class?

Yes. The output includes fields for economy, premium economy, business, and first where Flightpoints returns those cabins.

Why are there null cabin fields?

A null cabin value means that cabin was not available or not returned for that itinerary.

Can I use it for alerts?

Yes. Schedule the actor and compare new datasets with previous runs.

Field reference

id is the backward-compatible source itinerary identifier. If Flightpoints omits it, the actor creates a deterministic fp_ hash from the itinerary identity so repeated monitoring runs remain comparable.

itineraryId is the same value exposed under a schema-safe typed field name. Apify reserves id during dataset schema compilation, so API/MCP consumers should prefer itineraryId while legacy integrations can continue using id.

searchId is the Flightpoints search key used for that input search.

searchIndex, queryOrigin, queryDestination, queryDepartureDate, and queryDeltaDays identify the exact input search that produced a row.

bestCabin is the cheapest available cabin by miles among cabins with seats.

bestMiles is the miles value for that cabin.

bestTaxes is the taxes/fees value for that cabin.

segmentCount is the number of connection segments returned.

segments contains detailed leg data when enabled.

Version notes

The actor uses reliable HTTP extraction from the public API, supports bounded route/date batches, and keeps the original single-search input compatible.