API-dokumentation

Det offentlige API til fly.gratis.dk. Alle endpoints returnerer JSON, er frit tilgængelige (ingen API-nøgle påkrævet), og understøtter CORS (Cross-Origin Resource Sharing) så API'et kan kaldes direkte fra andre websites via JavaScript.

1. Søg efter flyruter

POST /api/search

Find pareto-optimale flyruter fra en lufthavn til en eller flere destinationer.

Request body (JSON)

FeltTypePåkrævetBeskrivelse
startstringJaAfgangslufthavn (IATA-kode, fx "CPH")
endstringJaDestinations-lufthavn(e), komma-separeret (fx "STN,BCN,LHR")
beam_widthintegerNej (default: 100)Søgebredde – højere = mere grundig søgning, langsommere. Område: 10–1,000,000.
weightsobjectNejBrugerdefinerede vægte (se afsnit 3).

Eksempel request

curl -X POST https://fly.gratis.dk/api/search \
  -H "Content-Type: application/json" \
  -d '{
    "start": "CPH",
    "end": "STN,BCN"
  }'

Eksempel response

{
  "search_id": "abc123...",
  "status": "success",
  "start_airport": "CPH",
  "search_params": {
    "beam_width": 100
  },
  "weights": { ... },
  "results": [
    {
      "total_price": 132.5,
      "score": 45.2,
      "breakdown": {
        "cost": -74.2,
        "duration": -12.0,
        "arrivals": 0,
        "timing": -1.0,
        ...
      },
      "entry_fees": 18.7,
      "trip": {
        "flights": [
          {
            "departure_airport": "CPH",
            "arrival_airport": "STN",
            "price": 67.0,
            "departure_time": "07:15",
            "arrival_time": "08:40",
            "duration_min": 85,
            ...
          }
        ]
      }
    }
  ]
}

2. Hent tilgængelige lufthavne

GET /api/info

Returnerer metadata om tilgængelige lufthavne og scraping-status.

curl https://fly.gratis.dk/api/info

Response felter

FeltBeskrivelse
airportsArray af lufthavnsobjekter med code, name, country, lat, lon
scraper_statusStatus for hver scraper (om den har produceret data)
last_updatedHvornår data sidst blev opdateret

3. Vægte og præferencer

GET /api/weights

Henter standard vægte og præferencer. Du kan også sende POST for at gemme dine egne præferencer (kræver login for persistens, ellers gemmes i localStorage).

Vægt-typer

NøgleBeskrivelseVægt (default)
costFlypris – højere vægt = billigere ruter prioriteres1.0
durationRejsetid – højere = kortere rejser prioriteres0.5
arrivalsAnkomsttidspunkt – straf for uønskede ankomsttider1.0
departuresAfgangstidspunkt – straf for uønskede afgangstider1.0
layoversMellemlandinger – straf per mellemlanding2.0
overnightOvernatning undervejs – straf for at sove i lufthavn5.0
interestInteressante stop – belønning for interessante mellemlandinger0.0
temperatureTemperatur – belønning for at komme til solen0.1
windVind – straf for blæsende destinationer0.0

4. Fejl og statuskoder

HTTP StatusBetydning
200Success – resultater i results array
200 + error_code: "NO_ROUTES_FOUND"Ingen ruter fundet for de givne parametre
400Ugyldig request – tjek at start og end er korrekte IATA-koder
429For mange requests – prøv igen om et øjeblik
500Serverfejl – prøv igen senere

5. Priser og UK ETA-gebyr

Alle priser er i EUR. Ruter der involverer Storbritannien inkluderer et UK ETA-gebyr på 18.70€ i total_price. Gebyret er angivet separat i feltet entry_fees.

6. Eksempel: Python

import requests

resp = requests.post(
    "https://fly.gratis.dk/api/search",
    json={"start": "CPH", "end": "BCN"}
)
data = resp.json()
for route in data["results"]:
    print(f"{route['total_price']:.2f}€ – score: {route['score']:.2f}")

7. Eksempel: JavaScript

const resp = await fetch("https://fly.gratis.dk/api/search", {
    method: "POST",
    headers: {"Content-Type": "application/json"},
    body: JSON.stringify({start: "CPH", end: "BCN"})
});
const data = await resp.json();
console.log(data.results);
← Tilbage til fly.gratis.dk