Flights

Search hundreds of airlines. City codes (LON, NYC, PAR) expand to every airport in that city.

Billing is look-to-book: 200 searches free after every booking, then blocks of 500 for $5.00 from prepaid balance. A search that returns no offers is never metered. Requires a connected payment method (POST /agents/connect-payment) — a 402 names which condition failed (payment_method_required or search_allowance_exhausted).

Prices already include LetsFG's margin, so the amount shown is the amount charged. Every offer carries booking_url — a letsfg.co page for that exact offer, safe to hand to a human — and book_url, the API route that books it on the connected method.

post/api/v1/flights/search

Request

  • Base URL: https://letsfg.co/developers/api/v1
  • URL: https://letsfg.co/developers/api/v1/api/v1/flights/search
  • Auth: API key in header X-API-Key

Request body

originstring required

IATA airport or city code (e.g. LHR, LON, JFK)

destinationstring required

IATA airport or city code

date_fromstring date required

Departure date (YYYY-MM-DD)

date_tostring date

Return date for round-trip (YYYY-MM-DD). Omit for one-way.

adultsinteger

Number of adult passengers

childreninteger

Number of children (2-11 years)

cabin'M' | 'W' | 'C' | 'F'

Cabin class: M=economy, W=premium economy, C=business, F=first

max_stopsinteger

Maximum stopovers per direction

currencystring

3-letter currency code

limitinteger

Maximum number of results

sort'price' | 'duration'

Example request

{
  "origin": "LHR",
  "destination": "JFK",
  "date_from": "2026-04-15",
  "currency": "EUR"
}

Response

Search results

search_idstring

Unique search identifier

passenger_idsstring[]

Passenger IDs to use when booking (e.g. pas_0, pas_1)

total_resultsinteger

Total number of matching offers

Example response

{
  "offers": [
    {
      "id": "off_abc123",
      "price": 189.5,
      "currency": "EUR",
      "airlines": [
        "Ryanair"
      ],
      "booking_url": "https://letsfg.co/en/offer/srch_123/off_abc123",
      "book_url": "https://letsfg.co/developers/api/v1/flights/book",
      "outbound": {
        "segments": [
          {
            "starlink": "confirmed"
          }
        ]
      },
      "inbound": {
        "segments": [
          {
            "starlink": "confirmed"
          }
        ]
      },
      "starlink": "confirmed_all"
    }
  ]
}

Changes

    • info

      added the non-success response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property // to the response with the status