Discover/lastminute API
live

lastminute APIlastminute.com ↗

Search lastminute.com's UK Last Minute Deals feed for flight + hotel packages. Filter by departure airport, stay length, hotel stars, and traveller count. Prices in GBP.

Endpoint health
verified 1h ago
search_deals
1/1 passing latest checkself-healing
Endpoints
1
Updated
1h ago

What is the lastminute API?

The lastminute.com API exposes 1 endpoint — search_deals — that returns live flight + hotel package deals from the UK Last Minute Deals feed, with prices quoted in GBP per person. Each deal record includes the hotel name, destination label, destination code, departure dates, stay length, star rating, and price, letting you query across multiple departure airports and filter by night range and hotel quality in a single call.

This call costs1 credit / call— charged only on success
Try it
Result ordering: the site's recommended order or lowest price first.
Maximum number of deals to return in the single call, clamped to 100.
Number of adult travellers (1-9); the per-person price is based on this occupancy.
Comma-separated departure airport/city IATA codes, e.g. LON or LON,MAN (uppercase 3-letter codes).
Maximum stay length in nights (>= min_nights).
Minimum stay length in nights (>= 1).
Destination filter as the site's destination code; A means all destinations. Accepted forms confirmed: a tag code such as TAG_TENERIFE or a numeric destination_id as returned in results. A code the site does not recognise is rejected by the site (upstream_error).
Comma-separated hotel star ratings to include, digits 1-5, e.g. 4,5.
Latest departure date, ISO YYYY-MM-DD. Omitted = 60 days from today.
Earliest departure date, ISO YYYY-MM-DD. Omitted = today.
true restricts results to time-limited Last Minute flash-sale deals (which carry deal_expires_at); false also includes regular package offers, where deal_expires_at may be null.
→ api.parse.bot/scraper/993649ff-68dc-4568-aff4-d633cff8c869/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/993649ff-68dc-4568-aff4-d633cff8c869/search_deals?sort=recommended&origin=LON&departure_to=2026-12-11&departure_from=2026-10-12' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace lastminute-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: lastminute.com deals SDK — browse flash-sale holiday packages."""
from parse_apis.lastminute_com_api import LastMinute, DealSort, InputFormatInvalid

client = LastMinute()

# Browse top recommended all-inclusive flash-sale deals departing from London.
for deal in client.deals.search(
    origin="LON",
    flash_sales_only=True,
    sort=DealSort.RECOMMENDED,
    limit=5,
):
    print(
        f"{deal.hotel_name} — {deal.destination}, "
        f"{deal.nights}n from {deal.price_display} pp, "
        f"expires {deal.deal_expires_at}"
    )

# Find the cheapest 5-star deal for at least a week.
long_stay = client.deals.search(
    sort=DealSort.PRICE,
    hotel_stars="5",
    min_nights=7,
    limit=1,
).first()

if long_stay is not None:
    print(
        f"\nBest 5★ week+: {long_stay.hotel_name}, "
        f"{long_stay.destination} — {long_stay.departure_date}, "
        f"{long_stay.nights} nights, {long_stay.price_from} {long_stay.currency}/pp"
    )

# Demonstrate typed error handling for a malformed input.
try:
    client.deals.search(departure_from="not-a-date", limit=1).first()
except InputFormatInvalid as exc:
    print(f"\nExpected validation error: {exc.message}")

print("\nexercised: deals.search (paginated + .first()) / DealSort / InputFormatInvalid")
All endpoints · 1 totalmissing one? ·

Returns the current flight + hotel package deals from lastminute.com's Last Minute Deals feed (UK site, prices in GBP per person) matching the departure airport(s), departure window, stay length, hotel star rating and traveller count. One row per deal (a hotel + departure date + stay length with a 'from' price per person and, for flash-sale deals, an expiry timestamp). Results are returned in a single call ordered by the chosen sort (site 'recommended' order or lowest price first); the feed is not paginated and the largest page the scraper requests is 100 deals, with has_more reporting whether the feed said more exist. A valid search with no matching offers returns an empty deals array. Dates must be ISO YYYY-MM-DD; malformed dates, airport codes or star lists are rejected as stale_input before any request. The site rejects a well-formed but unacceptable value (a past or impossible date, an unknown destination code) with a 400 that is passed through as upstream_error.

Input
ParamTypeDescription
sortstringResult ordering: the site's recommended order or lowest price first.
limitintegerMaximum number of deals to return in the single call, clamped to 100.
adultsintegerNumber of adult travellers (1-9); the per-person price is based on this occupancy.
originstringComma-separated departure airport/city IATA codes, e.g. LON or LON,MAN (uppercase 3-letter codes).
max_nightsintegerMaximum stay length in nights (>= min_nights).
min_nightsintegerMinimum stay length in nights (>= 1).
destinationstringDestination filter as the site's destination code; A means all destinations. Accepted forms confirmed: a tag code such as TAG_TENERIFE or a numeric destination_id as returned in results. A code the site does not recognise is rejected by the site (upstream_error).
hotel_starsstringComma-separated hotel star ratings to include, digits 1-5, e.g. 4,5.
departure_tostringLatest departure date, ISO YYYY-MM-DD. Omitted = 60 days from today.
departure_fromstringEarliest departure date, ISO YYYY-MM-DD. Omitted = today.
flash_sales_onlybooleantrue restricts results to time-limited Last Minute flash-sale deals (which carry deal_expires_at); false also includes regular package offers, where deal_expires_at may be null.
Response
{
  "type": "object",
  "fields": {
    "count": "number of deals returned",
    "deals": "array of deal records: hotel_name, destination (label), destination_id (site destination code usable as the destination input), origin (departure city label), accommodation_type, hotel_stars (integer), review_score / review_count / review_source (TripAdvisor rating), meal_plan (site code e.g. allInclusive, roomOnly), departure_date (ISO), nights, price_from (number, per person, in currency), price_display, currency, price_basis, deal_expires_at (ISO timestamp or null when the offer is not a flash sale), product_type, booking_url (site page for this deal)",
    "has_more": "whether the feed reported more deals beyond the returned page",
    "fallback_origin_used": "true when the site substituted a different departure airport because the requested one had no deals"
  },
  "sample": {
    "data": {
      "count": 1,
      "deals": [
        {
          "nights": 4,
          "origin": "London",
          "currency": "GBP",
          "meal_plan": "allInclusive",
          "hotel_name": "Sol Lanzarote",
          "price_from": 302,
          "booking_url": "https://www.lastminute.com/s/tsx/400883?pageType=hotelDetail&searchMode=DP&highlightHotelId=400883&businessProfileId=HOLIDAYSLASTMINUTECOUK&departureIntervals=20261208-20261212&adults=2&origin=LON&currency=GBP&destination=136864&dateFrom=2026-12-08&dateTo=2026-12-12",
          "destination": "Lanzarote, Spain",
          "hotel_stars": 4,
          "price_basis": "perPerson",
          "product_type": "flightPlusHotel",
          "review_count": 7988,
          "review_score": 4,
          "price_display": "£302",
          "review_source": "tripAdvisor",
          "departure_date": "2026-12-08",
          "destination_id": "136864",
          "deal_expires_at": "2026-10-14T23:59:59+00:00",
          "accommodation_type": "HOTELS"
        }
      ],
      "has_more": false,
      "fallback_origin_used": false
    },
    "status": "success"
  }
}

About the lastminute API

What the API covers

The search_deals endpoint queries lastminute.com's UK Last Minute Deals feed and returns package offers that bundle a return flight with a hotel stay. Every record in the deals array includes hotel_name, a human-readable destination label, a destination_id that can be fed back into the destination parameter for focused queries, plus pricing, dates, and stay details. The count field tells you how many deals the call returned, and has_more signals whether the feed contained additional results beyond your limit (capped at 100).

Filtering and sorting

The origin parameter accepts comma-separated IATA codes (e.g. LON or LON,MAN), so you can aggregate deals across multiple departure airports in one request. Stay length is bounded with min_nights and max_nights. Hotel quality narrows via hotel_stars as a comma-separated list of digits (3,4,5). The adults parameter (1–9) sets occupancy, which affects the per-person price returned. Sort order switches between the site's recommended ranking and lowest-price-first. If the requested departure airport has no deals, the fallback_origin_used field is set to true so you know the origin was substituted.

Coverage notes

All prices are in GBP and the feed reflects the UK version of lastminute.com. The destination filter accepts the site's own destination codes; passing A returns all destinations. Because this is a last-minute deals feed, the inventory is short-horizon and rotates frequently — results will differ across calls as deals sell out or new ones are added.

Reliability & maintenanceVerified

The lastminute API is a managed, monitored endpoint for lastminute.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when lastminute.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official lastminute.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
1h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a deal-alert tool that monitors GBP price drops for specific departure airports using origin and hotel_stars filters.
  • Aggregate last-minute package deals across LON, MAN, and BHX in a single search_deals call for a multi-airport comparison widget.
  • Power a budget travel dashboard that surfaces the cheapest 4- and 5-star packages by sorting on lowest price first.
  • Track destination popularity by counting how often each destination_id appears in the deals feed over time.
  • Populate a travel newsletter with this week's top deals filtered to a specific stay length using min_nights and max_nights.
  • Feed a chatbot that answers 'what can I book this weekend from London?' using live deal data from the search_deals endpoint.
  • Monitor has_more to detect when the feed is unusually deep, signalling a high-inventory period or flash sale.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does lastminute.com have an official developer API?+
lastminute.com does not publish a public developer API or API documentation for external use. This Parse API provides structured access to the deals data available on the UK site.
What does a single deal record in the `deals` array actually contain?+
Each deal record includes hotel_name, a destination label (human-readable place name), a destination_id (the site's own code, reusable as the destination input parameter), along with pricing per person in GBP, departure date, and stay details. The fallback_origin_used flag at the response level indicates whether the origin airport was substituted by the feed.
Can I retrieve hotel-only or flight-only deals?+
Not currently. The search_deals endpoint covers flight + hotel package deals only — these are the bundled offers in the Last Minute Deals feed. Standalone hotel search or flight-only results are not exposed. You can fork this API on Parse and revise it to add an endpoint targeting hotel-only or flight-only inventory.
What happens if my requested departure airport has no deals?+
The API sets fallback_origin_used to true in the response, indicating the feed substituted a different departure airport because the requested one had no matching deals at that time. You should check this field when origin accuracy matters for your use case.
Does the API cover lastminute.com sites in other countries or currencies?+
Not currently. The API is scoped to the UK site with prices in GBP per person. Deals from other regional lastminute.com sites (e.g. .de, .fr, .es) and non-GBP pricing are not covered. You can fork this API on Parse and revise it to target a different regional site and currency.
Page content last updated . Spec covers 1 endpoint from lastminute.com.
Related APIs in TravelSee all →