TRAVEL
Flight Deals Feed: Secret Flying, Fly4free & The Flight Deal
Cheap flight deals and error fares from Secret Flying, Fly4free and The Flight Deal in one feed, deduplicated: origin, destination, IATA codes, price, currency, airline, travel dates…
About this data
Cheap flight deals and error fares from Secret Flying, Fly4free and The Flight Deal in one feed, deduplicated: origin, destination, IATA codes, price, currency, airline, travel dates, posted date and deal link. Filter by origin, destination and age for fare alerts.
From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.
Buy per call over x402
One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.
The Flight Deal Fare Feed
POST /v1/travel/flight-deals
Read one RSS results page from The Flight Deal, returning up to 20 recent fare deals within the selected age window.
Rows include the published title, link, posting date, origin and destination, fare amount and currency, airline, trip type and summary excerpt.
Airport codes are included where parsed.
No deal-page enrichment, travel-calendar search or booking requests.
Input
Send a JSON body to POST https://api.ssh.autos/v1/travel/flight-deals.
| Field | Type | Required | Notes |
|---|---|---|---|
maxResults | integer | optional | 1–20; default 10 |
maxAgeDays | integer | optional | 1–30; default 7 |
Returned fields
The answer is JSON: records, a list of up to 20, and summary, the run status and counts. Each record has these 36 fields; a field the source does not publish comes back null.
36 fields per record
| Field | Type | Notes |
|---|---|---|
dealKey | string | Unique key: source:path of the deal page, e.g. 'fly4free:flight-deals/europe/flights-from-brussels-to-tokyo-e565'. |
source | string | Site the deal was published on. one of secretFlying, fly4free, theFlightDeal |
sourceName | string | Display name of the site: Secret Flying, Fly4free or The Flight Deal. |
dealType | string | flight, package (flight + hotel), hotel or cruise. Only Fly4free publishes the last three. one of flight, package, hotel, cruise |
url | string | Deal page on the source site. |
postedAt | string | When the deal was published, ISO 8601 UTC. Secret Flying listings carry only a day; the time is filled from the deal page when details are on. |
postedDate | string | Publication day, YYYY-MM-DD. |
origin | string | Departure place as printed, e.g. 'Toronto, Canada', 'UK cities', 'Frankfurt & Milan'. |
originCity | string | Departure city when one is named. |
originCountry | string | Departure country (English name), e.g. 'United Kingdom', 'United States'. |
originIata | string | IATA code of the departure: an airport code from the deal page (e.g. 'SFO') or the city's metropolitan code (e.g. 'LON', 'NYC'). Null for several cities or an unknown city. |
destination | string | Destination as printed. |
destinationCity | string | Destination city when one is named. |
destinationCountry | string | Destination country (English name). |
destinationIata | string | IATA code of the destination, as for originIata. |
price | number | Lowest fare in the headline, as a number (e.g. 565.0). For packages the per-person package price. |
currency | string | ISO 4217 currency of the price, e.g. 'EUR', 'GBP', 'USD', 'CAD', 'AUD'. |
tripType | string | roundtrip or oneWay when stated. one of roundtrip, oneWay |
isErrorFare | boolean | True when the site flags the deal as an error (mistake) fare. |
isNonstop | boolean | True for non-stop or direct deals, false when stopovers are listed, null when not stated. |
cabinClass | string | Premium cabin when the headline names one; null otherwise (usually economy). one of business, first, premiumEconomy |
airline | string | Airline when stated, e.g. 'Cathay Pacific', 'Southwest Airlines'. |
tags | array of strings | Banner words from the headline, e.g. ['LAST MINUTE'], ['XMAS & NEW YEAR'], ['ERROR FARE']. |
travelWindow | string | Travel period as stated on the deal page, e.g. 'from November 2026 to March 2027'. Details only. |
travelDateFrom | string | First day of the stated travel period, YYYY-MM-DD (month start). Details only. |
travelDateTo | string | Last day of the stated travel period, YYYY-MM-DD (month end). Details only. |
sampleDepartDate | string | Example departure date given by the site, YYYY-MM-DD (The Flight Deal). Details only. |
sampleReturnDate | string | Example return date given by the site, YYYY-MM-DD. Details only. |
routing | string | Route or routing as stated, e.g. 'SFO – HKG (Hong Kong) – PQC (Phú Quốc) – HKG – SFO'. Details only. |
stopovers | string | Stopover cities as stated, e.g. 'Doha (outgoing only)' (Secret Flying). Details only. |
summary | string | Short description from the site's feed (Fly4free, The Flight Deal). |
alsoPostedOn | array of objects | The same deal (route, currency and price) published on another site within three days; that copy is not returned as its own row. |
sourceQuery | string | The filters of the run, e.g. 'sources=secretFlying,fly4free,theFlightDeal maxAgeDays=7'. |
detailsParsed | boolean | True when the deal page was read and gave at least one detail field. |
detailsError | string | Why the deal page could not be read, when details are on; null otherwise. |
scrapedAt | string | When the row was collected, ISO 8601 UTC. |
Example call
npx agentcash@latest fetch https://api.ssh.autos/v1/travel/flight-deals -m POST -b '{"maxResults": 5}'
The example values come from the API spec or the actor’s own sample input. Running it is a paid call.
What is and isn’t charged
You pay the call price for
- An answer, including a definitive “not found” or an empty result.
- Confirmed no matches returns records: [] (charged: it is an answer).
Free
- Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
- Invalid input and source failures are not charged.
Prefer a subscription? Run it on Apify
This data source is a public actor on the Apify Store: Flight Deals Feed: Secret Flying, Fly4free & The Flight Deal. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.
How x402 payment works
- Your client sends the request. The API answers
402 Payment Requiredwith the price and where to pay. - The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
- The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.
The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.
Machine-readable: openapi.json · llms.txt