Agoda Flights Scraper — Fares, OTA Offers & Price API
Pricing
from $1.70 / 1,000 flight itinerary extracteds
Agoda Flights Scraper — Fares, OTA Offers & Price API
Scrape Agoda Flights fares by route and date. One-way and round-trip itineraries with airlines, flight numbers, segments, durations, stops and 14+ OTA booking offers per flight (provider prices, booking URLs, baggage rules). Flight price tracker and airfare data API for fare monitoring.
Pricing
from $1.70 / 1,000 flight itinerary extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Agoda Flights Scraper — Fares, OTA Offers & Flight Price API 🚀
🎉 Every itinerary ships with its FULL OTA booking-offer ladder — 14+ provider prices, booking URLs & baggage rules per flight
Built for fare trackers, travel-deal aggregators, and OTA price-monitoring teams
📋 Overview
Turn any route + date into structured flight-fare data in minutes — one-way and round-trip itineraries with airlines, flight numbers, segments, stops, durations, and the complete list of OTA booking offers competing on each flight.
Why professionals choose us:
- ✅ 14+ booking offers per itinerary: see every OTA's price, booking URL, booking country and baggage rules on the same flight — not just one headline fare
- ⚡ Hundreds of itineraries per search: 200+ one-way and 1,500+ round-trip combinations on busy routes, paginated automatically
- 🎯 Structured to the segment: airline code + name, flight number, aircraft, airport codes, per-leg durations and stops — analysis-ready
- 💰 Pay per result: cheap per-row pricing; only successful itinerary rows are charged
- 💎 Itinerary re-pricing mode: feed back any row's shareable URL and get a live, re-priced offer ladder — the core of a fare-alert loop
- ✨ NEW: best / cheapest / cheapest-direct flags plus sort by best, price, or duration
✨ Features
- ✈️ One-way & round-trip search — 3-letter IATA pair + date (+ optional return date)
- 🏷 Full OTA offer ladder — every booking option with provider, price, currency, booking URL and baggage allowances
- 🥇 Best-offer headline — the top offer per itinerary, plus best/cheapest/cheapest-direct flags
- 🛫 Segment-level detail — airline, flight number, aircraft, airports, times, durations, stops
- 👨👩👧 Passenger mix — adults, children, infants; cabin class selection
- 🚀 Bulk routes — search many routes in one run (PAID)
- 🎫 Details mode — re-fetch specific itineraries by shareable URL or search/result reference
- 📊 Fare KPIs + HTML report — cheapest fare, price & duration distributions, nonstop count, airline and provider breakdowns
- 🔁 Automatic dedup — itineraries deduplicated across pages and routes
🎬 Quick Start
Pick a route, pick a date, press Start. The actor searches, waits for fares to fill, paginates, and pushes one clean row per itinerary.
curl -X POST "https://api.apify.com/v2/acts/sian.agency~agoda-flight-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"origin": "JFK", "destination": "LAX", "date": "2026-08-10"}'
🚀 Getting Started (3 Simple Steps)
Step 1: Enter a route
Set the origin and destination IATA codes (e.g. JFK → LAX) and a departure date — or leave the date empty to search 30 days ahead.
Step 2: Run the actor
Fares fill within seconds; the actor collects itineraries page by page up to your maxResults.
Step 3: Export your data
Download JSON, CSV, or Excel from the dataset — every row carries the full booking-offer ladder.
That's it! In under 2 minutes, you'll have:
- Priced itineraries with airlines, segments and durations
- Every OTA's competing offer on each flight
- A fare report with cheapest / median prices and provider breakdowns
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| searchMode | string | No | search (default) or details |
| origin | string | search | 3-letter IATA departure airport (e.g. JFK) |
| destination | string | search | 3-letter IATA arrival airport (e.g. LAX) |
| date | string | No | Departure date YYYY-MM-DD (empty = 30 days from today) |
| returnDate | string | No | Return date — makes the search round-trip |
| adults / children / infants | integer | No | Passenger mix (defaults 1 / 0 / 0) |
| cabin | string | No | Economy (default), Premium_Economy, Business, First |
| sortOrder | string | No | best (default), price, duration |
| routes | array | No | Bulk route objects {origin, destination, date, returnDate} (PAID: unlimited) |
| maxResults | integer | No | Max itineraries per route (default 30) |
| flightUrls | array | details | Shareable flight URLs from a previous search |
| flightRefs | array | details | {searchId, resultId} pairs from a previous search |
Example — round-trip search:
{"origin": "BKK","destination": "SIN","date": "2026-08-10","returnDate": "2026-08-17","adults": 2,"sortOrder": "price"}
Example — re-price saved itineraries:
{"searchMode": "details","flightUrls": ["https://flights.agoda.com/flights/JFK-LAX/2026-08-10/details/c0b8fae339ab097af3a2c41dad49c563?searchId=0HDiFhsesx"]}
📤 Output
Results are saved to the Apify dataset with 20+ fields including:
| Field | Type | Description |
|---|---|---|
| route | string | IATA pair, e.g. JFK-LAX |
| departureDate / returnDate | string | Search dates |
| bestOffer | object | Headline offer: provider, price, currency, booking URL, baggage |
| bookingOptions | array | The full OTA offer ladder (14+ providers on busy routes) |
| totalBookingOptions | number | Offer count for this itinerary |
| airlines | array | Unique operating airlines |
| legs | array | Per-direction legs with segment-level airline / flight number / aircraft / airports / times |
| totalStops / totalDurationMinutes | number | Trip totals |
| isBest / isCheapest / isCheapestDirect | boolean | Ranking flags |
| shareableUrl | string | Feed back into details mode to re-price |
| resultId / searchId | string | Reference pair for details mode |
Example row (trimmed):
{"_type": "flightItinerary","route": "JFK-LAX","departureDate": "2026-08-10","tripType": "oneway","isBest": true,"bestOffer": { "provider": "SUPERAIR", "price": 252, "currency": "USD", "bookingUrl": "https://flights.agoda.com/book/flight?..." },"totalBookingOptions": 14,"airlines": ["JetBlue"],"totalStops": 0,"totalDurationMinutes": 348,"legs": [{ "legIndex": 0, "stops": 0, "segments": [{ "airlineCode": "B6", "flightNumber": "123", "originCode": "JFK", "destinationCode": "LAX", "aircraft": "Airbus A318/A319/A320/A321" }] }],"shareableUrl": "https://flights.agoda.com/flights/JFK-LAX/2026-08-10/details/..."}
💼 Use Cases & Examples
1. Fare tracking & price alerts
Deal hunters and travel apps poll routes daily and diff the cheapest fares.
Input: A route + date on a schedule Output: Cheapest / best itineraries with prices per OTA Use: Price-drop alerts, booking-timing models, historical fare curves
2. OTA price monitoring
Revenue and pricing teams see exactly which OTA undercuts whom on the same flight.
Input: Competitive routes Output: 14+ competing offers per itinerary with provider names and prices Use: Rate-parity monitoring, commission and markup analysis
3. Travel-deal aggregation
Newsletter and deal-site operators harvest cheap fares at scale.
Input: Bulk routes array across origins
Output: Hundreds of priced itineraries per run with booking links
Use: Deal feeds, fare-of-the-day content, affiliate booking funnels
4. Airline & route analysis
Analysts study schedules, connections, aircraft and durations.
Input: Route + date Output: Segment-level airline / flight number / aircraft / stops data Use: Market-share studies, connectivity benchmarks, schedule monitoring
5. Itinerary re-pricing pipelines
Fare-alert products re-check saved flights before notifying users.
Input: details mode with saved shareable URLs
Output: Live re-priced offer ladders per itinerary
Use: "Your flight dropped $40" notifications with fresh booking links
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/agoda-flight-scraper').call({origin: 'JFK',destination: 'LAX',date: '2026-08-10'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/agoda-flight-scraper').call(run_input={'origin': 'JFK', 'destination': 'LAX', 'date': '2026-08-10'})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~agoda-flight-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"origin": "BKK", "destination": "SIN", "date": "2026-08-10", "returnDate": "2026-08-17"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Daily schedule per watched route
- HTTP Request: Call the actor API
- Process: Compare cheapest fare vs yesterday's
- Action: Send the price-drop alert with the booking link
📊 Performance & Pricing
FREE Tier (Try It Now)
- 1 route, 25 itineraries per run — full feature access, same data quality
- No credit card required
- Perfect for testing a route before scaling
PAID Tier (Production Ready)
- Unlimited routes and itineraries per run
- Bulk
routesarrays for multi-route sweeps - Pay-per-result: only successful itinerary rows are charged
💰 Best value in the flight category — every row already includes the multi-OTA offer ladder other tools sell as a separate premium event.
❓ Frequently Asked Questions
Q: How many itineraries can I get per route?
A: Busy routes return 200+ one-way and 1,500+ round-trip itineraries. Set maxResults to control how many you collect (30 per page).
Q: Why does the run wait a few seconds before rows appear? A: Fares fill asynchronously at the source. The actor polls automatically (up to ~90 s) until results arrive — you never get an empty first page.
Q: Can I search premium cabins? A: Yes — Economy is the most reliable. Premium cabins depend on route availability and may return no results on some routes.
Q: How do I re-check a fare later?
A: Save the row's shareableUrl (or searchId + resultId) and run details mode — you get a live re-priced itinerary with the full offer ladder.
Q: What output formats are available? A: JSON, CSV, Excel — export directly from the Apify dataset.
Q: Is this legal? A: Yes — we only extract publicly available fare data. See the legal section below.
Q: How long does a run take? A: A single route typically completes in 30–90 seconds including the fare-fill wait; bulk runs scale linearly per route.
🐛 Troubleshooting
Search returns 0 itineraries
- Check the IATA codes are real airports (3 letters, e.g. JFK, not "New York")
- Make sure the date is in the future
- Very thin routes may genuinely have no bookable fares for that date
Details mode says the reference expired
- Search sessions age out; re-run a search on the same route to mint fresh
searchId/resultIdvalues
Premium cabin returns an error
- Retry with
cabin: "Economy"— premium-cabin inventory is not available on all routes
Fewer rows than maxResults
- The route only has that many distinct itineraries; check the run report's "Total Found Upstream"
⚠️ Trademark Disclaimer
Agoda is a registered trademark of Agoda Company Pte. Ltd. This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Agoda. All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's repository
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools