Skip to content
APIHiver

Skyscanner API: Free Key, Endpoints & Code Examples (2026)

Get a free Skyscanner API key, search live flights, and build price-tracking tools. Full Node.js and Python examples with the Sky Scrapper API on RapidAPI.

9 min readBy APIHiver

If you've ever searched for flights on Skyscanner and thought "I need this data in my app", the first thing you'll discover is that the official Skyscanner API is closed — it's only available to approved travel partners, not independent developers.

The good news: the same Skyscanner flight search data is available through a managed helper API on RapidAPI, with a free tier you can start using today. This tutorial walks you through getting a free Skyscanner API key, making your first flight search, and building on top of the results — with complete working code in Node.js and Python.

Why the official Skyscanner API is hard to get#

Skyscanner runs a partner programme for travel agencies, meta-search engines, and OTAs. If you're an established travel business, you can apply at partners.skyscanner.net for direct API access. The process involves a business review, a commercial agreement, and production credentials that typically take weeks to arrive — not something you can sign up for and use today.

For developers who need Skyscanner flight data now — for a side project, a price tracker, an affiliate site, or a proof of concept — the practical route is a Skyscanner API on RapidAPI: a managed service that handles the data aggregation and returns clean JSON, with a free tier and no partner agreement required.

The Skyscanner API we recommend#

The Sky Scrapper API by apiheya is distributed on RapidAPI and is one of the most actively maintained Skyscanner data APIs available to independent developers. It covers the full flight search surface — one-way, round-trip, price calendars, airport lookup — and extends into hotels and car hire, making it a full travel data API rather than just a flight search wrapper.

How to get a free Skyscanner API key#

A "Skyscanner API key" for independent developers means a RapidAPI key that grants access to the Sky Scrapper API. Here's how to get one in under two minutes:

  1. Go to rapidapi.com and create a free account.
  2. Search for "Sky Scrapper" or navigate to rapidapi.com/apiheya/api/sky-scrapper.
  3. Click Subscribe to Test and select the BASIC plan (free).
  4. Copy your X-RapidAPI-Key from the code-snippets panel on the right.

That key is your Skyscanner API key. It works for every API on RapidAPI, not just Sky Scrapper — so if you later need Google Flights data, hotel rates, or weather, the same key works.

Quickstart: your first Skyscanner API call#

The Sky Scrapper API is a standard HTTP REST API — send a GET request with your key in the headers, get JSON back. Here's the simplest working call in cURL:

curl --request GET \
  --url 'https://sky-scrapper.p.rapidapi.com/api/v1/flights/searchFlights?originSkyId=LOND&destinationSkyId=NYCA&originEntityId=27544008&destinationEntityId=27537542&date=2026-06-15&adults=1&currency=USD&countryCode=US&market=en-US' \
  --header 'X-RapidAPI-Host: sky-scrapper.p.rapidapi.com' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

The response looks like this:

{
  "status": true,
  "data": {
    "itineraries": [
      {
        "id": "13554-2606151010--32480-0-10414-2606151315",
        "price": {
          "raw": 289.0,
          "formatted": "$289"
        },
        "legs": [
          {
            "id": "13554-2606151010--32480-0-10414-2606151315",
            "origin": { "id": "LHR", "name": "London Heathrow" },
            "destination": { "id": "JFK", "name": "New York JFK" },
            "durationInMinutes": 425,
            "stopCount": 0,
            "departure": "2026-06-15T10:10:00",
            "arrival": "2026-06-15T13:15:00",
            "carriers": {
              "marketing": [{ "name": "British Airways", "logoUrl": "..." }]
            }
          }
        ]
      }
    ]
  }
}

Two things to note about the request parameters:

  • originSkyId / destinationSkyId — Skyscanner's city-level codes (e.g., LOND for London, NYCA for New York). These are different from IATA airport codes. Use the /searchAirport endpoint to look them up from a user's typed city name.
  • originEntityId / destinationEntityId — numeric IDs for the location. Also returned by /searchAirport. Both are required for /searchFlights.

The key endpoints#

EndpointWhat it does
/api/v1/flights/searchAirportSearch airports and cities by keyword — returns skyId and entityId
/api/v1/flights/searchFlightsOne-way or round-trip flight search
/api/v1/flights/searchFlightsCompleteFull result set with extended filtering options
/api/v1/flights/getPriceCalendarCheapest fare per day across a date range
/api/v1/flights/getFlightDetailsFull detail for a specific itinerary token
/api/v1/hotels/searchHotelsHotel search for a destination
/api/v1/cars/searchCarsCar hire search

The typical integration pattern is: searchAirport for origin and destination autocomplete → getPriceCalendar to show cheapest dates → searchFlights on date selection → getFlightDetails when the user clicks a result.

// npm install node-fetch
import fetch from "node-fetch";
 
const RAPIDAPI_KEY = process.env.RAPIDAPI_KEY;
const HOST = "sky-scrapper.p.rapidapi.com";
 
async function searchAirport(query) {
  const url = new URL(`https://${HOST}/api/v1/flights/searchAirport`);
  url.searchParams.set("query", query);
  url.searchParams.set("locale", "en-US");
 
  const res = await fetch(url, {
    headers: {
      "X-RapidAPI-Key": RAPIDAPI_KEY,
      "X-RapidAPI-Host": HOST
    }
  });
  const { data } = await res.json();
  return data[0];
}
 
async function searchFlights({ from, to, date }) {
  const url = new URL(`https://${HOST}/api/v1/flights/searchFlights`);
  url.searchParams.set("originSkyId", from.skyId);
  url.searchParams.set("destinationSkyId", to.skyId);
  url.searchParams.set("originEntityId", from.entityId);
  url.searchParams.set("destinationEntityId", to.entityId);
  url.searchParams.set("date", date);
  url.searchParams.set("adults", "1");
  url.searchParams.set("currency", "USD");
  url.searchParams.set("market", "en-US");
  url.searchParams.set("countryCode", "US");
 
  const res = await fetch(url, {
    headers: {
      "X-RapidAPI-Key": RAPIDAPI_KEY,
      "X-RapidAPI-Host": HOST
    }
  });
  if (!res.ok) throw new Error(`Skyscanner API ${res.status}`);
  const { data } = await res.json();
  return data.itineraries;
}
 
const [origin, destination] = await Promise.all([
  searchAirport("London"),
  searchAirport("New York")
]);
 
const flights = await searchFlights({
  from: origin,
  to: destination,
  date: "2026-07-10"
});
 
for (const f of flights.slice(0, 5)) {
  const leg = f.legs[0];
  console.log(
    `${f.price.formatted} · ${leg.carriers.marketing[0].name} · ${leg.stopCount} stop(s)`
  );
}

Python example — price calendar (cheapest dates)#

import os
import requests
 
HOST = "sky-scrapper.p.rapidapi.com"
HEADERS = {
    "X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"],
    "X-RapidAPI-Host": HOST,
}
 
def search_airport(query):
    r = requests.get(
        f"https://{HOST}/api/v1/flights/searchAirport",
        headers=HEADERS,
        params={"query": query, "locale": "en-US"},
        timeout=10,
    )
    r.raise_for_status()
    return r.json()["data"][0]
 
def price_calendar(origin, destination, year_month):
    r = requests.get(
        f"https://{HOST}/api/v1/flights/getPriceCalendar",
        headers=HEADERS,
        params={
            "originSkyId": origin["skyId"],
            "destinationSkyId": destination["skyId"],
            "originEntityId": origin["entityId"],
            "destinationEntityId": destination["entityId"],
            "yearMonth": year_month,
            "currency": "USD",
        },
        timeout=15,
    )
    r.raise_for_status()
    return r.json()["data"]["flights"]["days"]
 
origin = search_airport("London Heathrow")
destination = search_airport("Paris CDG")
days = price_calendar(origin, destination, "2026-08")
 
for day in sorted(days, key=lambda d: d["price"])[:5]:
    print(day["day"], "→", f"${day['price']}")

The price calendar endpoint is one of the most useful in the entire API — it answers "when is it cheapest to fly?" in a single call that covers a full month, which is exactly what users want to see before they pick a date.

What you can build with the Skyscanner travel API#

Pros

    Cons

      The strongest use cases for the Skyscanner travel API fall into a few well-defined patterns, each leaning on different endpoints.

      Price-drop trackers schedule searchFlights calls for watched routes and notify users when fares hit a threshold. Since each user only needs one or two calls per day per watched route, this is one of the most request-efficient use cases. Batch users watching the same route into a single call to keep API costs low.

      Cheap-date finders use getPriceCalendar to show a full month of fares in a single call. This is exactly the calendar Google Flights and Skyscanner themselves show under the date picker. It is one of the highest-converting travel UI patterns because it answers the user's actual question — "when should I go?" — before they even pick a date.

      Affiliate and SEO travel blogs build route-specific landing pages ("cheap flights London to New York") with live embedded prices via searchFlights and outbound links to Skyscanner for booking. The organic traffic potential on long-tail route keywords is large, and the affiliate revenue per booking click is meaningful.

      Travel comparison tools combine the flight search results with the hotel and car hire endpoints — all under the same RapidAPI key — to build a complete trip cost estimator for a destination.

      Pricing — what each plan gets you#

      For most affiliate and side-project use cases, the PRO tier is the right starting point. The free BASIC tier is sufficient to test all endpoints and validate your integration before committing.

      Common errors and how to fix them#

      Airport code errors are the most common integration mistake. The Sky Scrapper API uses Skyscanner's own skyId city codes (LOND, NYCA, PARI), which are not the same as IATA airport codes (LHR, JFK, CDG). Always pass user input through searchAirport to get the correct skyId and entityId before calling searchFlights. One extra call eliminates an entire class of confusing failures.

      Caching is not optional in production. A price tracker watching 1,000 routes would exhaust a paid plan in a day if every page view triggered a live API call. Cache searchFlights results per (skyId, destination, date, adults) tuple for 5–15 minutes — fares don't change that fast and users can't tell the difference.

      Pre-launch checklist#

      1. Airport IDs resolvedsearchAirport on every user-typed location before calling searchFlights.
      2. Caching in place — 5-minute minimum on flight search responses.
      3. 15-second timeout — accounts for live data aggregation latency.
      4. 429 handling — check Retry-After header and back off.
      5. Affiliate links set — deep-link to Skyscanner booking pages with your affiliate ID if you're monetising outbound clicks.
      6. ToS reviewed — read the Sky Scrapper API provider terms before going commercial.

      Share this post

      Frequently asked questions

      Is there a free Skyscanner API key?
      Skyscanner's own partner API is closed to approved partners only — you can't get a free key directly from Skyscanner. The practical alternative is the Sky Scrapper API on RapidAPI, which returns the same Skyscanner flight data and offers a free tier with up to 100 requests per month. Sign up at rapidapi.com, subscribe to the Sky Scrapper API, and copy your X-RapidAPI-Key — that's your free Skyscanner API key.
      How do I get a Skyscanner API key?
      Go to rapidapi.com, create a free account, search for "Sky Scrapper", and subscribe to the free BASIC plan. RapidAPI generates an X-RapidAPI-Key that works for every API on the platform including Sky Scrapper. Copy it from the code-snippets panel and use it as your Skyscanner API key in all requests.
      What is the Skyscanner REST API?
      The Skyscanner REST API is an HTTP/JSON interface that lets you search flights, retrieve price calendars, and look up airports by keyword. The Sky Scrapper API on RapidAPI exposes this functionality as a standard REST API — you send GET requests with query parameters and receive structured JSON responses. No SDK or special client library is required.
      Is there Skyscanner API documentation?
      Official Skyscanner developer documentation is only available to approved travel partners. For the Sky Scrapper API on RapidAPI, full endpoint documentation — including parameters, response shapes, and code examples in seven languages — is available at rapidapi.com/apiheya/api/sky-scrapper. Every endpoint lists required and optional parameters with live test functionality in the browser.
      Can I use the Skyscanner API in Python?
      Yes. The Sky Scrapper API is a plain HTTP REST API, so any Python HTTP library works. The most common approach is the requests library — one GET call with your X-RapidAPI-Key and X-RapidAPI-Host headers returns flight results as a Python dict. A full working Python example is included in this guide.
      What can I build with the Skyscanner travel API?
      Common projects include flight price trackers that alert users when fares drop, affiliate travel blogs with live embedded prices, cheap-date finders using the price calendar endpoint, corporate travel policy checkers, and comparison tables for specific routes. The API supports one-way, round-trip, and multi-city searches as well as hotel and car hire lookups.
      Is the Skyscanner API on RapidAPI legitimate?
      The Sky Scrapper API by apiheya on RapidAPI is a widely used third-party helper API that aggregates Skyscanner data. It is a managed service with active maintenance, documented endpoints, and a paying user base. As with any third-party data API, review the provider's terms of service before building a commercial product on top of it.
      Data & Analytics

      Google Flights API: Get Live Data (2026)

      Pull live Google Flights data — fares, routes, and price calendars — via the DataCrawler Google Flights API on RapidAPI. Node.js + Python code.

      12 min read