ssh.autos

Catalog / Travel

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…

PER CALL · X402 / MPP From $0.02 per call 1 endpoint at api.ssh.autos. Pay in USDC, no account. See the endpoint
APIFY STORE Public actor Run it with your Apify account: bulk runs, schedules and exports. Open on Apify

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.

PRICE$0.02 per call, in USDC
RESULTUp to 20 per call
PAYMENTx402 or MPP · no account

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.

FieldTypeRequiredNotes
maxResultsintegeroptional1–20; default 10
maxAgeDaysintegeroptional1–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
FieldTypeNotes
dealKeystringUnique key: source:path of the deal page, e.g. 'fly4free:flight-deals/europe/flights-from-brussels-to-tokyo-e565'.
sourcestringSite the deal was published on.
one of secretFlying, fly4free, theFlightDeal
sourceNamestringDisplay name of the site: Secret Flying, Fly4free or The Flight Deal.
dealTypestringflight, package (flight + hotel), hotel or cruise. Only Fly4free publishes the last three.
one of flight, package, hotel, cruise
urlstringDeal page on the source site.
postedAtstringWhen 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.
postedDatestringPublication day, YYYY-MM-DD.
originstringDeparture place as printed, e.g. 'Toronto, Canada', 'UK cities', 'Frankfurt & Milan'.
originCitystringDeparture city when one is named.
originCountrystringDeparture country (English name), e.g. 'United Kingdom', 'United States'.
originIatastringIATA 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.
destinationstringDestination as printed.
destinationCitystringDestination city when one is named.
destinationCountrystringDestination country (English name).
destinationIatastringIATA code of the destination, as for originIata.
pricenumberLowest fare in the headline, as a number (e.g. 565.0). For packages the per-person package price.
currencystringISO 4217 currency of the price, e.g. 'EUR', 'GBP', 'USD', 'CAD', 'AUD'.
tripTypestringroundtrip or oneWay when stated.
one of roundtrip, oneWay
isErrorFarebooleanTrue when the site flags the deal as an error (mistake) fare.
isNonstopbooleanTrue for non-stop or direct deals, false when stopovers are listed, null when not stated.
cabinClassstringPremium cabin when the headline names one; null otherwise (usually economy).
one of business, first, premiumEconomy
airlinestringAirline when stated, e.g. 'Cathay Pacific', 'Southwest Airlines'.
tagsarray of stringsBanner words from the headline, e.g. ['LAST MINUTE'], ['XMAS & NEW YEAR'], ['ERROR FARE'].
travelWindowstringTravel period as stated on the deal page, e.g. 'from November 2026 to March 2027'. Details only.
travelDateFromstringFirst day of the stated travel period, YYYY-MM-DD (month start). Details only.
travelDateTostringLast day of the stated travel period, YYYY-MM-DD (month end). Details only.
sampleDepartDatestringExample departure date given by the site, YYYY-MM-DD (The Flight Deal). Details only.
sampleReturnDatestringExample return date given by the site, YYYY-MM-DD. Details only.
routingstringRoute or routing as stated, e.g. 'SFO – HKG (Hong Kong) – PQC (Phú Quốc) – HKG – SFO'. Details only.
stopoversstringStopover cities as stated, e.g. 'Doha (outgoing only)' (Secret Flying). Details only.
summarystringShort description from the site's feed (Fly4free, The Flight Deal).
alsoPostedOnarray of objectsThe same deal (route, currency and price) published on another site within three days; that copy is not returned as its own row.
sourceQuerystringThe filters of the run, e.g. 'sources=secretFlying,fly4free,theFlightDeal maxAgeDays=7'.
detailsParsedbooleanTrue when the deal page was read and gave at least one detail field.
detailsErrorstringWhy the deal page could not be read, when details are on; null otherwise.
scrapedAtstringWhen the row was collected, ISO 8601 UTC.

Example call

TERMINAL · $0.02 PER RUN
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

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.

Open on Apify

How x402 payment works

  1. Your client sends the request. The API answers 402 Payment Required with the price and where to pay.
  2. 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.
  3. 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

Some links to Apify are affiliate links. We may earn a commission if you sign up and become a paying customer.