# LH Public API API

> LH Public API API on Apizie: 15 endpoints (Retrieve all flights, Shipment Tracking, Lounges, Seat Maps, …) returned as clean JSON through one API key. Send your own provider key in the x-upstream-key header. Call it over REST at https://apizie.tech/v1/transport:lufthansa-public/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `transport:lufthansa-public`
- Category: Transport
- Status: byok
- Source: https://lufthansa.com
- Page: https://apizie.tech/api/transport/lufthansa-public
- OpenAPI: https://apizie.tech/api/transport/lufthansa-public/openapi.json



## Endpoints

### Retrieve all flights
`GET https://apizie.tech/v1/transport:lufthansa-public/cargo-get-route-from-date-product-code-by-origin-and-destina` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| origin | string | yes | Departure Airport : 3-letter IATA airport code, e.g. FRA. |
| destination | string | yes | Arrival airport : 3-letter IATA airport code, e.g. HKG. |
| fromDate | string | yes | Departure date in the local time of the departure airport. Based on LAT (Latest Acceptance Time). format : yyyy-MM-dd eg : 2017-07-15 |
| productCode | string | yes | Product code for requested service and specials : 3-letter eg: YNZ |

### Shipment Tracking
`GET https://apizie.tech/v1/transport:lufthansa-public/cargo-shipment-tracking-by-awbprefix-and-awbnumber-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| aWBPrefix | string | yes | aWBPrefix : Represents the airline that is the owner of this AWB, i.e. "020" = Lufthansa Cargo, format : [0-9]{3} e.g. 020 |
| aWBNumber | string | yes | aWBNumber : The Air Waybill Number , format : [0-9]{8} e.g. 08002050 |

### Lounges
`GET https://apizie.tech/v1/transport:lufthansa-public/offers-lounges-by-location-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| location | string | yes | 3-leter IATA airport or city code (e.g. 'ZRH') |
| cabinClass | string | no | Cabin class: 'M', 'E', 'C', 'F' (Acceptable values are: "", "M", "E", "C", "F") |
| tierCode | string | no | Frequent flyer level ('FTL', 'SGC', 'SEN', 'HON') (Acceptable values are: "", "FTL", "SGC", "SEN", "HON") |
| lang | string | no | Language code. |

### Seat Maps
`GET https://apizie.tech/v1/transport:lufthansa-public/offers-seatmaps-destination-date-cabin-class-by-flight-numbe` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| flightNumber | string | yes | Flight number including carrier code and any suffix (e.g. 'LH2037') |
| origin | string | yes | Departure airport. 3-letter IATA airport code (e.g. 'TXL') |
| destination | string | yes | Destination airport. 3-letter IATA airport code (e.g. 'MUC') |
| date | string | yes | Departure date (YYYY-MM-DD) |
| cabinClass | string | yes | Cabin class: 'M', 'E', 'C', 'F'. Some flights have fewer classes (Acceptable values are: "M", "E", "C", "F") |

### Flight Status at Arrival Airport
`GET https://apizie.tech/v1/transport:lufthansa-public/operations-flightstatus-arrivals-by-airport-code-and-from-da` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| airportCode | string | yes | 3-letter IATA aiport code (e.g. 'ZRH') |
| fromDateTime | string | yes | Start of time range in local time of arrival airport (YYYY-MM-DDTHH:mm) |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Flight Status at Departure Airport
`GET https://apizie.tech/v1/transport:lufthansa-public/operations-flightstatus-departures-by-airport-code-and-from` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| airportCode | string | yes | Departure airport. 3-letter IATA airport code (e.g. 'HAM') |
| fromDateTime | string | yes | Start of time range in local time of departure airport (YYYY-MM-DDTHH:mm) |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Flight Status by Route
`GET https://apizie.tech/v1/transport:lufthansa-public/operations-flightstatus-route-date-by-origin-and-destination` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| origin | string | yes | 3-letter IATA airport (e.g. 'FRA') |
| destination | string | yes | 3-letter IATA airport code (e.g. 'JFK') |
| date | string | yes | Departure date (YYYY-MM-DD) in local time of departure airport |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Flight Status
`GET https://apizie.tech/v1/transport:lufthansa-public/operations-flightstatus-by-flight-number-and-date-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| flightNumber | string | yes | Flight number including carrier code and any suffix (e.g. 'LH400') |
| date | string | yes | The departure date (YYYY-MM-DD) in the local time of the departure airport |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Flight Schedules
`GET https://apizie.tech/v1/transport:lufthansa-public/operations-schedules-from-date-time-by-origin-and-destinatio` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| origin | string | yes | Departure airport. 3-letter IATA airport code (e.g. 'ZRH') |
| destination | string | yes | Destination airport. 3-letter IATA airport code (e.g. 'FRA') |
| fromDateTime | string | yes | Local departure date and optionally departure time (YYYY-MM-DD or YYYY-MM-DDTHH:mm). When not provided, time is assumed to be 00:01 |
| directFlights | boolean | no | Show only direct flights (false=0, true=1). Default is false |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Aircraft
`GET https://apizie.tech/v1/transport:lufthansa-public/references-aircraft-by-aircraft-code-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| aircraftCode | string | yes | 3-character IATA aircraft code |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Airlines
`GET https://apizie.tech/v1/transport:lufthansa-public/references-airlines-by-airline-code-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| airlineCode | string | yes | 2-character IATA airline/carrier code |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Nearest Airports
`GET https://apizie.tech/v1/transport:lufthansa-public/references-airports-nearest-by-latitude-and-longitude-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| latitude | integer | yes | Latitude in decimal format to at most 3 decimal places |
| longitude | integer | yes | Longitude in decimal format to at most 3 decimal places |
| lang | string | no | 2 letter ISO 3166-1 language code |

### Airports
`GET https://apizie.tech/v1/transport:lufthansa-public/references-airports-by-airport-code-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| airportCode | string | yes | 3-letter IATA airport code |
| lang | string | no | 2-letter ISO 3166-1 language code |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |
| LHoperated | boolean | no | Restrict the results to locations with flights operated by LH (false=0, true=1) |

### Cities
`GET https://apizie.tech/v1/transport:lufthansa-public/references-cities-by-city-code-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| cityCode | string | yes | 3-letter IATA city code |
| lang | string | no | 2 letter ISO 3166-1 language code |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

### Countries
`GET https://apizie.tech/v1/transport:lufthansa-public/references-countries-by-country-code-get` (byok)

| Parameter | Type | Required | Description |
|---|---|---|---|
| countryCode | string | yes | 2-letter ISO 3166-1 country code |
| lang | string | no | 2 letter ISO 3166-1 language code |
| limit | string | no | Number of records returned per request. Defaults to 20, maximum is 100 (if a value bigger than 100 is given, 100 will be taken) |
| offset | string | no | Number of records skipped. Defaults to 0 |

## Example
```
curl "https://apizie.tech/v1/transport:lufthansa-public/cargo-get-route-from-date-product-code-by-origin-and-destina" \
  -H "x-api-key: $APIZIE_KEY" \
  -H "x-upstream-key: $PROVIDER_KEY"
```

## FAQ

### How do I call the LH Public API API?
Create a free Apizie key, then send GET https://apizie.tech/v1/transport:lufthansa-public/cargo-get-route-from-date-product-code-by-origin-and-destina with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the LH Public API API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card. LH Public API itself also needs your own key from lufthansa.com.

### Can AI agents use the LH Public API API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key transport:lufthansa-public.

### What is the status of the LH Public API API?
Needs your own provider key (bring your own key)
