Agoda Flights Scraper — Fares, OTA Offers & Price API avatar

Agoda Flights Scraper — Fares, OTA Offers & Price API

Pricing

from $1.70 / 1,000 flight itinerary extracteds

Go to Apify Store
Agoda Flights Scraper — Fares, OTA Offers & Price API

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Ü

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Agoda Flights Scraper — Fares, OTA Offers & Flight Price API 🚀

SIÁN Agency Store Booking.com Scraper Trip.com Scraper Airbnb Property Scraper

🎉 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

FieldTypeRequiredDescription
searchModestringNosearch (default) or details
originstringsearch3-letter IATA departure airport (e.g. JFK)
destinationstringsearch3-letter IATA arrival airport (e.g. LAX)
datestringNoDeparture date YYYY-MM-DD (empty = 30 days from today)
returnDatestringNoReturn date — makes the search round-trip
adults / children / infantsintegerNoPassenger mix (defaults 1 / 0 / 0)
cabinstringNoEconomy (default), Premium_Economy, Business, First
sortOrderstringNobest (default), price, duration
routesarrayNoBulk route objects {origin, destination, date, returnDate} (PAID: unlimited)
maxResultsintegerNoMax itineraries per route (default 30)
flightUrlsarraydetailsShareable flight URLs from a previous search
flightRefsarraydetails{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:

FieldTypeDescription
routestringIATA pair, e.g. JFK-LAX
departureDate / returnDatestringSearch dates
bestOfferobjectHeadline offer: provider, price, currency, booking URL, baggage
bookingOptionsarrayThe full OTA offer ladder (14+ providers on busy routes)
totalBookingOptionsnumberOffer count for this itinerary
airlinesarrayUnique operating airlines
legsarrayPer-direction legs with segment-level airline / flight number / aircraft / airports / times
totalStops / totalDurationMinutesnumberTrip totals
isBest / isCheapest / isCheapestDirectbooleanRanking flags
shareableUrlstringFeed back into details mode to re-price
resultId / searchIdstringReference 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 ApifyClient
client = 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)

  1. Trigger: Daily schedule per watched route
  2. HTTP Request: Call the actor API
  3. Process: Compare cheapest fare vs yesterday's
  4. 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
  • Unlimited routes and itineraries per run
  • Bulk routes arrays 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.

🔗 View current pricing


❓ 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/resultId values

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.


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

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools