# Singapore Airlines Flight Scraper (`axlymxp/singapore-airlines-flight-scraper`) Actor

Scrape Singapore Airlines low-fare calendars — cheapest SQ fare per departure/return date for any route and cabin (Economy to Suites), straight from the airline. Pay per fare.

- **URL**: https://apify.com/axlymxp/singapore-airlines-flight-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Singapore Airlines Flight Scraper

Get a **direct-from-airline low-fare calendar** for Singapore Airlines. For any
route, date window and cabin — Economy, Premium Economy, Business or **First /
Suites** — this Actor returns the **cheapest bookable fare per departure (and
return) date** as clean, structured JSON. It reads Singapore Airlines' own fare
data, so prices are the airline's, not an OTA estimate.

### Who it's for

- **Award-travel & deal communities** — track cheapest SQ Business and Suites
  cash fares by date, or feed a "cheapest day to fly" widget.
- **Travel analysts & fare researchers** — build price calendars, run
  cheapest-day and seasonality analysis by cabin and market.
- **Travel agencies & OTAs** — pull reliable SQ fare data without touching the
  booking flow.
- **Developers & AI agents** — one call returns a whole fare matrix as JSON.

### What you get (output fields)

| Field              | Type            | Description                                  |
| ------------------ | --------------- | -------------------------------------------- |
| `route`            | string          | Route as `ORIGIN-DEST` (e.g. `SIN-LHR`).     |
| `origin`           | string          | Origin airport IATA code.                    |
| `destination`      | string          | Destination airport IATA code.               |
| `tripType`         | string          | `round_trip` or `one_way`.                   |
| `cabinClass`       | string          | Economy, Premium Economy, Business or First. |
| `departureDate`    | string          | Departure date (`YYYY-MM-DD`).               |
| `returnDate`       | string | null  | Return date; `null` for one-way.             |
| `stayDurationDays` | integer | null | Nights between departure and return.         |
| `fare`             | number          | Base fare, excluding tax.                    |
| `tax`              | number          | Taxes and surcharges.                        |
| `totalAmount`      | number          | Total price per passenger (fare + tax).      |
| `currency`         | string          | ISO currency code of the fare.               |
| `pointOfSale`      | string          | Market/country used for pricing.             |
| `airline`          | string          | `Singapore Airlines`.                        |
| `airlineCode`      | string          | `SQ`.                                        |
| `scrapedAt`        | string          | Scrape timestamp (ISO-8601).                 |

### High-value use cases

- **Cheapest-day finder** — scan a 1–3 month window and surface the lowest-priced
  dates to fly a route in each cabin.
- **Business / Suites fare alerts** — watch premium-cabin cash prices on flagship
  routes (SIN–LHR, SIN–JFK, SIN–SFO) and alert on drops.
- **Price calendars** — power a month-view fare calendar on a travel or content
  site with real SQ prices.
- **Market comparison** — run the same route across points of sale to compare
  fares and currencies by market.
- **Seasonality research** — collect fares over time to model demand and pricing
  by season and cabin.

### Input parameters

| Field                | Type     | Default      | Description                                           |
| -------------------- | -------- | ------------ | ----------------------------------------------------- |
| `origin`             | string   | `SIN`        | Origin IATA (used when `routes` is empty).            |
| `destination`        | string   | `LHR`        | Destination IATA (used when `routes` is empty).       |
| `routes`             | string\[] | `[]`         | Batch of `"ORIGIN-DEST"` routes; overrides the above. |
| `tripType`           | enum     | `round_trip` | `round_trip` or `one_way`.                            |
| `departureDateFrom`  | string   | +14 days     | Window start (`YYYY-MM-DD`).                          |
| `departureDateTo`    | string   | +90 days     | Window end (`YYYY-MM-DD`).                            |
| `stayDurationDays`   | integer  | `7`          | Return-leg length for round trips.                    |
| `cabinClass`         | enum     | `Economy`    | Economy, Premium Economy, Business, First.            |
| `pointOfSale`        | enum     | `SG`         | Market/country → pricing currency.                    |
| `maxItems`           | integer  | `200`        | Cap on total fare rows.                               |
| `proxyConfiguration` | object   | Apify AUTO   | Optional proxy settings.                              |

#### Example input

```json
{
    "routes": ["SIN-LHR", "SIN-NRT"],
    "tripType": "round_trip",
    "departureDateFrom": "2026-09-01",
    "departureDateTo": "2026-11-30",
    "stayDurationDays": 7,
    "cabinClass": "Business",
    "pointOfSale": "SG",
    "maxItems": 300
}
```

#### Example output row

```json
{
    "origin": "SIN",
    "destination": "LHR",
    "route": "SIN-LHR",
    "tripType": "round_trip",
    "cabinClass": "Business",
    "departureDate": "2026-10-15",
    "returnDate": "2026-10-22",
    "stayDurationDays": 7,
    "fare": 4820.0,
    "tax": 512.4,
    "totalAmount": 5332.4,
    "currency": "SGD",
    "pointOfSale": "SG",
    "airline": "Singapore Airlines",
    "airlineCode": "SQ",
    "scrapedAt": "2026-07-28T12:00:00Z"
}
```

### Scheduling & integrations

Run it on a **schedule** to keep a fare calendar fresh, and connect the dataset to
Google Sheets, Make, Zapier, or Amazon S3, or receive a **webhook** when a run
finishes. Every run's data is available via the Apify API and dataset exports
(JSON, CSV, Excel).

### Use it from an AI assistant (MCP)

This Actor works with the **Apify MCP server**, so AI assistants and agents (Claude,
ChatGPT, and other MCP clients) can call it as a tool and get SQ fares back as
structured JSON — great for building travel copilots and fare-watch agents.

### FAQ

**Where does the data come from?** Singapore Airlines' own low-fare-calendar
endpoint. Prices are the airline's advertised fares for each date.

**How fresh is it?** Fares are fetched live on each run. Schedule the Actor to
refresh as often as you need.

**How many results per run?** As many as your date window and routes produce,
capped by `maxItems`. A single route/cabin can yield hundreds of date
combinations.

**Round trip vs one way?** `round_trip` returns a departure/return fare matrix;
`one_way` returns the cheapest fare per departure date.

**Can I scan many routes at once?** Yes — pass a `routes` list like
`["SIN-LHR", "SIN-JFK", "SIN-SYD"]`.

**Is it reliable?** The Actor reads the airline's open fare endpoint (no login,
no CAPTCHA) and checkpoints progress, so long runs resume without duplicating
rows.

**Is scraping this legal?** The Actor collects publicly available fare
information. You are responsible for using the data in line with applicable laws
and the site's terms.

# Actor input Schema

## `origin` (type: `string`):

3-letter IATA code of the origin airport, e.g. SIN, LHR, SFO. Used when the Routes list is empty.

## `destination` (type: `string`):

3-letter IATA code of the destination airport, e.g. LHR, NRT, JFK. Used when the Routes list is empty.

## `routes` (type: `array`):

Optional list of routes to scan in one run, each as 'ORIGIN-DEST' (e.g. 'SIN-LHR'). When set, this overrides Origin/Destination.

## `tripType` (type: `string`):

Round-trip returns a departure/return fare matrix; one-way returns cheapest fare per departure date.

## `departureDateFrom` (type: `string`):

Earliest departure date to include (YYYY-MM-DD). Defaults to 14 days from today.

## `departureDateTo` (type: `string`):

Latest departure date to include (YYYY-MM-DD). Defaults to 90 days from today.

## `stayDurationDays` (type: `integer`):

For round trips, the return leg is this many days after departure.

## `cabinClass` (type: `string`):

Travel cabin. Singapore Airlines First maps to Suites on A380/777 routes.

## `pointOfSale` (type: `string`):

Market / country of sale — determines the pricing currency.

## `maxItems` (type: `integer`):

Stop after collecting this many fare rows across all routes.

## `proxyConfiguration` (type: `object`):

Proxy settings. SIA data endpoints are open, so proxy is optional; Apify AUTO proxy is enabled by default as a safeguard at volume.

## Actor input object example

```json
{
  "origin": "SIN",
  "destination": "LHR",
  "routes": [
    "SIN-LHR",
    "SIN-NRT"
  ],
  "tripType": "round_trip",
  "departureDateFrom": "2026-09-01",
  "departureDateTo": "2026-11-30",
  "stayDurationDays": 7,
  "cabinClass": "Economy",
  "pointOfSale": "SG",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "origin": "SIN",
    "destination": "LHR",
    "routes": [
        "SIN-LHR",
        "SIN-NRT"
    ],
    "departureDateFrom": "2026-09-01",
    "departureDateTo": "2026-11-30"
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/singapore-airlines-flight-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "origin": "SIN",
    "destination": "LHR",
    "routes": [
        "SIN-LHR",
        "SIN-NRT",
    ],
    "departureDateFrom": "2026-09-01",
    "departureDateTo": "2026-11-30",
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/singapore-airlines-flight-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "origin": "SIN",
  "destination": "LHR",
  "routes": [
    "SIN-LHR",
    "SIN-NRT"
  ],
  "departureDateFrom": "2026-09-01",
  "departureDateTo": "2026-11-30"
}' |
apify call axlymxp/singapore-airlines-flight-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=axlymxp/singapore-airlines-flight-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/JKuAMLcp4SZ0dEJii/builds/M94GYNHiLXJIUGVQ4/openapi.json
