# Singapore Airlines Fare Deals Scraper (`axlymxp/singapore-airlines-fare-deals-scraper`) Actor

Scrape Singapore Airlines fare deals — the cheapest advertised SQ price to every destination, per market and cabin. A ready-made 'cheap flights from X' feed as JSON. Pay per deal.

- **URL**: https://apify.com/axlymxp/singapore-airlines-fare-deals-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 $5.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 Fare Deals Scraper

Turn Singapore Airlines' promotional **fare deals** into a clean data feed. For
every market you choose, this Actor returns the **cheapest advertised SQ fare to
each destination** — origin, destination, price, currency, cabin and a link — as
structured JSON. It's a ready-made "cheapest flights from here" feed, straight
from the airline's own promotions endpoint.

Pair it with the **Singapore Airlines Flight Scraper** (route-by-date fare
calendar) when you need exact per-date pricing; this Actor is for discovery —
"where can I fly cheaply, and for how much?"

### Who it's for

- **Deal sites & fare-alert newsletters** — auto-populate "cheap SQ flights from
  Singapore / USA / UK" listings.
- **Content & affiliate travel sites** — destination-inspiration widgets with
  live cheapest prices.
- **Travel analysts** — monitor promoted fares and currencies across markets.
- **Developers & AI agents** — a tidy destination × price feed from one call.

### What you get (output fields)

| Field                     | Type           | Description                               |
| ------------------------- | -------------- | ----------------------------------------- |
| `market`                  | string         | Market/country of sale for this deal set. |
| `originCity`              | string | null | Origin city name.                         |
| `originAirportCode`       | string | null | Origin airport IATA code.                 |
| `destinationCity`         | string | null | Destination city name.                    |
| `destinationAirportCode`  | string | null | Destination airport IATA code.            |
| `destinationCityCode`     | string | null | Destination city code.                    |
| `destinationCountry`      | string | null | Destination country name.                 |
| `destinationCountryCode`  | string | null | Destination country ISO code.             |
| `price`                   | number | null | Advertised fare (numeric).                |
| `priceDisplay`            | string | null | Advertised fare as shown.                 |
| `currency`                | string | null | Currency code of the fare.                |
| `cabinClass`              | string | null | Cabin of the advertised fare.             |
| `airline` / `airlineCode` | string         | `Singapore Airlines` / `SQ`.              |
| `dealUrl`                 | string | null | Link to the route/deal landing page.      |
| `scrapedAt`               | string         | Scrape timestamp (ISO-8601).              |

### High-value use cases

- **"Cheap flights from Singapore" feed** — pull the SG market and publish the
  lowest fare per destination, refreshed daily.
- **Multi-market deal monitor** — scan SG, US, GB, AU at once and compare the
  cheapest fares and currencies by market.
- **Premium-cabin deals** — filter to Business or First to surface promoted
  premium fares.
- **Affiliate inspiration widgets** — feed a "where to go next" module with live
  prices and deep links.

### Input parameters

| Field                | Type     | Default    | Description                                      |
| -------------------- | -------- | ---------- | ------------------------------------------------ |
| `markets`            | string\[] | `["SG"]`   | 2-letter country codes; one deal set per market. |
| `cabinClass`         | enum     | `Any`      | Any, Economy, Premium Economy, Business, First.  |
| `maxItems`           | integer  | `500`      | Cap on total deal rows.                          |
| `proxyConfiguration` | object   | Apify AUTO | Optional proxy settings.                         |

#### Example input

```json
{
    "markets": ["SG", "US", "GB"],
    "cabinClass": "Any",
    "maxItems": 500
}
```

#### Example output row

```json
{
    "market": "SG",
    "originCity": "Singapore",
    "originAirportCode": "SIN",
    "destinationCity": "Hangzhou",
    "destinationAirportCode": "HGH",
    "destinationCityCode": "HGH",
    "destinationCountry": "China",
    "destinationCountryCode": "CN",
    "price": 439.0,
    "priceDisplay": "439",
    "currency": "SGD",
    "cabinClass": "Economy",
    "airline": "Singapore Airlines",
    "airlineCode": "SQ",
    "dealUrl": "https://www.singaporeair.com/en-sg/flights-from-singapore-to-hangzhou",
    "scrapedAt": "2026-07-28T12:00:00Z"
}
```

### Scheduling & integrations

Schedule the Actor to keep your deals feed fresh, and push the dataset to Google
Sheets, Make, Zapier, or Amazon S3 — or trigger a **webhook** when a run finishes.
Exports are available as JSON, CSV and Excel via the Apify API.

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

Works with the **Apify MCP server**, so AI assistants and agents can call it as a
tool and get SQ fare deals back as structured JSON — handy for travel copilots and
deal-finding agents.

### FAQ

**Where does the data come from?** Singapore Airlines' own promotions endpoint —
the same fare deals shown on singaporeair.com.

**How many deals per market?** Typically a couple hundred destination deals per
market (varies by market and season).

**What changes between markets?** The origin cities and the pricing currency
(e.g. SG shows SIN in SGD; US shows LAX/SFO/SEA/NYC in USD).

**How fresh is it?** Deals are fetched live on each run; schedule it to refresh as
often as you like.

**Is it reliable?** The Actor reads an open endpoint (no login, no CAPTCHA) and
checkpoints per market, so runs resume without duplicating rows.

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

# Actor input Schema

## `markets` (type: `array`):

2-letter ISO country codes to fetch deals for. Each market has its own origin cities and pricing currency (e.g. SG→Singapore/SGD, US→LAX/SFO/USD, GB→London/GBP).

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

Only keep deals for this cabin. Use 'Any' to return all cabins.

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

Stop after collecting this many deal rows across all markets.

## `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
{
  "markets": [
    "SG"
  ],
  "cabinClass": "Any",
  "maxItems": 500,
  "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 = {
    "markets": [
        "SG"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/singapore-airlines-fare-deals-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 = { "markets": ["SG"] }

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/singapore-airlines-fare-deals-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 '{
  "markets": [
    "SG"
  ]
}' |
apify call axlymxp/singapore-airlines-fare-deals-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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