Aviasales Flight Routes Scraper
Pricing
from $3.50 / 1,000 aviasales flight routes scrapers
Aviasales Flight Routes Scraper
Collect route and fare records from public Aviasales pages. Get displayed prices, currencies, links, and visible itinerary details. Run with a public HTTPS Aviasales URL and maxResults; no buyer API key or login. Pricing: $0.0035 per saved item plus $0.00005 per Actor Start on the Free plan.
Pricing
from $3.50 / 1,000 aviasales flight routes scrapers
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
5
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Scrape route cards and featured fare cards publicly rendered on Aviasales Russian home and route pages, including displayed prices, currencies, links, and visible itinerary text. No buyer API key or Aviasales login is required. Pricing: $0.0035 per saved dataset item on the Free plan, plus $0.00005 per Actor Start event on the Free plan.
- Extract route titles, origins, destinations, IATA codes, displayed prices, currencies, and Aviasales links from one public page.
- Collect featured fare cards (
flight_offerrecords) with offer labels and itinerary summaries, only when the page renders fare links. - Compare displayed route prices for travel research using records saved to an Apify dataset.
- Repeat runs to monitor displayed route prices and featured fares, then export the collected records.
What you get
Each run requests one public Aviasales page and parses its server-rendered HTML. It can save route_card records from route links and flight_offer records from publicly rendered fare links. The Actor saves only records with a visible title, price, currency, and Aviasales link.
Prices are the values displayed during the run and may change later. Fare-specific labels and itinerary details are included only when those values are rendered on the page.
| Field | Type | Record | Description |
|---|---|---|---|
record_type | string | All | Record type: route_card or flight_offer. |
title | string | All | Route or route-page heading shown by Aviasales. |
origin | string | Route and some fare records | Origin city name shown on the page. |
destination | string | Route and some fare records | Destination city name shown on the page. |
origin_iata | string | When available | Origin airport code from the Aviasales route URL or page path. |
destination_iata | string | When available | Destination airport code from the Aviasales route URL or page path. |
price | integer | All | Price displayed for the route or fare card. |
currency | string | All | Currency inferred from the displayed price symbol. |
offer_type | string | Fare records | Visible fare-card label, such as cheapest, convenient, or direct, when rendered. |
offer_details | string | Fare records | Visible date, time, duration, and transfer summary for a fare card. |
url | string | All | Aviasales page linked from the route or fare card. |
source_url | string | All | Public Aviasales page from which the record was parsed. |
scraped_at | string | All | UTC time when the Actor collected the record. |
Sample output
The sample below is one route_card record from the dataset sample.
{"record_type": "route_card","title": "Москва — Коломбо","origin": "Москва","destination": "Коломбо","price": 24373,"currency": "RUB","url": "https://www.aviasales.ru/routes/mow/cmb","source_url": "https://www.aviasales.ru/","origin_iata": "MOW","destination_iata": "CMB","scraped_at": "2026-10-30T08:33:04.141083+00:00"}
Pricing
The live billing model is pay per event. The Actor charges for the following events:
| Event | Billing unit and condition | Free-plan price |
|---|---|---|
apify-default-dataset-item | One saved scraped result with all fields | $0.0035 per event on the Free plan |
apify-actor-start | Charged when the Actor starts running | $0.00005 per event on the Free plan |
The primary charge is the saved dataset item. For example, 1,000 saved results = $3.50 and 10,000 saved results = $35.00 on the Free plan, before the separate Actor Start event.
The Apify Free plan includes $5 of monthly platform usage credit. After one $0.00005 Actor Start event, that credit covers 1,428 saved dataset items at $0.0035 per item on the Free plan.
Platform usage—compute, Apify Proxy traffic including residential traffic, and storage—is included in the event prices and paid by the Actor developer. Platform usage is not billed to you separately. This Actor does not add custom Actor.charge events.
How to use
- Enter a public HTTPS Aviasales home page or route page on the
aviasales.rudomain instartUrl. - Set
maxResultsto the maximum number of route and fare records to save. The accepted minimum is1. - Keep the default
proxyConfiguration(RESIDENTIAL Apify proxy enabled), or change the proxy settings. To connect directly, explicitly setuseApifyProxytofalse. - Run the Actor to request one public page, parse its server-rendered HTML, and save supported records.
- Review the dataset for
route_cardandflight_offerrecords, including displayed prices, links, and any visible fare details. - Repeat the run through Apify Schedules, using daily as a starting point for displayed route prices and featured fares.
Example input:
{"startUrl": "https://www.aviasales.ru/","maxResults": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
startUrl | Public HTTPS Aviasales home page or route page on the aviasales.ru domain to request. | https://www.aviasales.ru/ |
maxResults | Maximum number of route and fare records to save. | 50 |
proxyConfiguration | Apify proxy settings. RESIDENTIAL Apify proxy is enabled by default; set useApifyProxy to false to connect directly. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
| The run receives a valid page with supported cards | The Actor saves records in page order until maxResults is reached. | Set maxResults high enough for the records you want, subject to the page contents. |
| The selected page contains no supported route or fare cards | The run raises an error stating that the page returned no supported Aviasales route or flight-offer cards. | Check the URL, proxy setting, and whether the public page layout has changed. |
| A card has no visible title, price, currency, or Aviasales link | That card is not saved. | Use a public page where the required values are rendered in the HTML. |
| A fare card does not render a date, time, duration, transfer, or other itinerary text | The Actor does not invent the missing value; only visible fare information is collected. | Use a route page that renders the itinerary details you need. |
| The page contains values outside the supported public HTML structure | The corresponding route or fare card may be absent from the dataset. | Check the page output and try the relevant public home or route page. |
startUrl is not an HTTPS URL on aviasales.ru or its subdomain | URL validation fails before the page request. | Provide an HTTPS Aviasales home page or route-page URL. |
maxResults is zero or negative | The Actor logs a warning and requests no records. | Use an integer of at least 1. |
The page returns HTTP 408, 425, 429, or a 5xx response | The fetch operation retries up to three attempts; if it still fails, the run raises an error. | Check the target URL and proxy setting, then run again if appropriate. |
| The public page is empty or cannot be fetched | The run ends with an error before records are saved. | Check the URL, the public page availability, and the optional proxy configuration. |
| Multiple parsed anchors have the same record type, URL, and price | They are kept as one record. | Review the source page if you need to investigate repeated cards. |
| You need all Aviasales routes rather than the cards on one selected page | The Actor makes one public page request per run, and complete route coverage is not proven. | Select the relevant route page or schedule separate runs for the pages you need. |
FAQ
How much does it cost to scrape Aviasales?
The price is $0.0035 per saved dataset item on the Free plan, plus $0.00005 per Actor Start event on the Free plan. 1,000 results = $3.50 on the Free plan, before the separate Actor Start event.
What happens if the dataset is empty?
The Actor raises an error when the requested public page contains no supported Aviasales route or flight-offer cards. Check that the URL is a public Aviasales home or route page, then check the optional proxy setting and whether the page layout has changed.
Why did my Aviasales run not work?
The Actor accepts only HTTPS URLs on the aviasales.ru domain or its subdomains. HTTP 408, 425, 429, and 5xx responses are retried up to three attempts; other request or parsing failures can end the run with an error. Verify the URL, inspect the run log, and try the public page again.
Does this Actor scrape live booking results or invent missing fare details?
It parses route cards and featured fare cards publicly rendered in the page HTML. It does not invent dates, fares, airlines, or other fields that are absent from the page. Prices reflect what Aviasales displayed during that run.
Is scraping public Aviasales data legal or allowed under its ToS?
The Actor accesses publicly rendered Aviasales pages on aviasales.ru and does not require a login. Whether a particular use is legal or allowed depends on the source terms, applicable law, and your use case; review those requirements before using the collected data.