Flightpoints Award Flights Scraper
Pricing
from $0.01 / 1,000 award flight itineraries
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
Maintained by CommunityActor 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 group | Examples |
|---|---|
| Route | origin, destination, departure date |
| Time | departure time, arrival date, arrival time, duration |
| Program | loyalty program code, source, booking URL |
| Economy | miles, taxes, available seats |
| Premium economy | miles, taxes, available seats |
| Business | miles, taxes, available seats |
| First | miles, taxes, available seats |
| Sorting helpers | best cabin, best miles, best taxes, best seats |
| Segments | connection airports, flight numbers, airline codes |
| Search context | search index, requested route/date, date flexibility, Flightpoints search ID |
| Metadata | deterministic 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
- Open the actor on Apify.
- For one route, enter
origin,destination, anddepartureDate. For a portfolio, add 1–20 objects tosearchesinstead. - Set
Maximum itinerariesto the total number of rows you need across the run. - Choose any global cabin, seat, taxes, program, or direct-flight filters.
- Run the actor.
- Export the dataset as JSON, CSV, Excel, or through the API.
Input overview
Choose one input mode:
- Single search (backward compatible):
origin,destination, anddepartureDate. 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 containingorigin,destination,departureDate, and optionaldeltaDays.
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
maxResultslow for monitoring jobs; it caps the combined batch output. - Use
minimumSeatswhen searching for families or groups. - Use
onlyDirectFlightsonly when you specifically need non-stop options. - Leave
programsempty 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:
AAfor American AAdvantageACfor Air Canada AeroplanBAfor British Airways AviosUAfor United MileagePlusVSfor 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 ApifyClientimport osclient = 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.
Related scrapers
Other automation-lab actors may help with travel and market workflows:
- https://apify.com/automation-lab/google-maps-lead-finder
- https://apify.com/automation-lab/booking-scraper
- https://apify.com/automation-lab/website-contact-finder
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.