Our PNR Conversion API allows you to query our endpoint with a PNR and instantly receive a structured JSON object with the decoded flight, airport, and passenger data.
Our API returns the most comprehensive results available, along with standard airport details, including carbon emissions, transit times, operated by carrier if different from the ticketed carrier, image link, aircraft (where this information is available), and more.
Our API is easy to integrate. We have full documentation below, or alternatively, see our quick start guide here.
To get started, simply sign up for an account, click through to the Manage API, and follow instructions there to get going!
curl -X POST https://www.pnrexpert.com/api/v1/pnr \ -H "Content-Type: application/json" \ -H "Authorization: bearer my-secret-token" \ -d '{"pnr":" 1.1JOHNSON/HAL MR 1 MH 183S 11MAY Q MAAKUL HK1 1145A 615P /DCMH*THBBIP /E 2 MH5620S 14MAY S KULICN HK1 1125P 655A 15MAY M /DCMH*THBBIP /E OPERATED BY KOREAN AIR 3 MH 39N 20MAY J ICNKUL HK1 1210A 545A /DCMH*THBBIP /E 4 MH 182N 20MAY J KULMAA HK1 935A 1045A /DCMH*THBBIP /E "}'
curl -X POST https://www.pnrexpert.com/api/v1/pnr \
-H "Content-Type: application/json" \
-H "Authorization: bearer my-secret-token" \
-d '{"pnr":" 1.1JOHNSON/HAL MR
1 MH 183S 11MAY Q MAAKUL HK1 1145A 615P /DCMH*THBBIP /E
2 MH5620S 14MAY S KULICN HK1 1125P 655A 15MAY M
/DCMH*THBBIP /E
OPERATED BY KOREAN AIR
3 MH 39N 20MAY J ICNKUL HK1 1210A 545A /DCMH*THBBIP /E
4 MH 182N 20MAY J KULMAA HK1 935A 1045A /DCMH*THBBIP /E "}'
Each object in the flights array represents a flight segment and includes the following keys:
Object containing details about the departure airport.
Object containing details about the arrival airport.
Object containing details about the aircraft type.
Object containing the distance of the flight.
Information about any technical stopovers (null if there are none).
Carbon emissions for the flight segment in metric tonnes (float).
Object containing the duration of the flight.
The class in which the flight is booked (string).
The flight number (string).
Object containing details about the airline operating the flight.
Object containing the duration of the transit time, if applicable.
The API requires a JWT token for authentication to access the data. The token should be included in the Authorization
header of the request.
Endpoint: https://www.pnrexpert.com/api/v1/pnr
Method: POST
Authorization
: Bearer token for authentication.pnr
(string): The Passenger Name Record to be processed.
{
"pnr": "1 QF8405Q 05AUG 7 MELDXB*HK1 1800 0450 06AUG 1
/DCQF*SQP8UD /E
OPERATED BY EMIRATES
2 QF8135Q 06AUG 1 DXBVCE*HK1 0905 1325 /DCQF*SQP8UD /E
"
}
The response contains flight information related to the provided PNR.
{
"success": "Authorized 2",
"data": {
"flights": [
{
"departingFrom": {
"id": 14681,
"airportName": "Melbourne Intl Airport",
"cityName": "Melbourne",
"countryName": "Australia",
"airportCode": "MEL",
"latitude": "-37.6733017",
"longitude": "144.8430023",
"timezone": "Australia/Hobart",
"type": "airport",
"time": "2024-08-05T18:00:00.000+10:00"
},
"arrivingAt": {
"id": 13573,
"airportName": "Dubai Intl Airport",
"cityName": "Dubai",
"countryName": "United Arab Emirates",
"airportCode": "DXB",
"latitude": "25.25279999",
"longitude": "55.36439896",
"timezone": "Asia/Dubai",
"type": "airport",
"time": "2024-08-06T04:50:00.000+04:00",
"dayOffset": 0
},
"aircraftType": {
"name": null,
"code": null
},
"distance": {
"miles": 6801,
"km": 10944
},
"techStop": null,
"carbonEmissions": 1.25856,
"flightDuration": {
"years": 0,
"months": 0,
"days": 0,
"hours": 16,
"minutes": 50
},
"bookingClass": "Q",
"flightNumber": "8405",
"operatedBy": {
"airlineName": "Emirates",
"iataCode": "EK"
},
"transitTime": {
"hours": 4,
"minutes": 15
}
},
{
"departingFrom": {
"id": 13573,
"airportName": "Dubai Intl Airport",
"cityName": "Dubai",
"countryName": "United Arab Emirates",
"airportCode": "DXB",
"latitude": "25.25279999",
"longitude": "55.36439896",
"timezone": "Asia/Dubai",
"type": "airport",
"time": "2024-08-06T09:05:00.000+04:00"
},
"arrivingAt": {
"id": 15708,
"airportName": "Venice Marco Polo Airport",
"cityName": "Venice",
"countryName": "Italy",
"airportCode": "VCE",
"latitude": "45.505299",
"longitude": "12.3519",
"timezone": "Europe/Rome",
"type": "airport",
"time": "2024-08-06T13:25:00.000+02:00",
"dayOffset": 0
},
"aircraftType": {
"name": null,
"code": null
},
"distance": {
"miles": 2748,
"km": 4423
},
"techStop": null,
"carbonEmissions": 0.508645,
"flightDuration": {
"years": 0,
"months": 0,
"days": 0,
"hours": 6,
"minutes": 20
},
"bookingClass": "Q",
"flightNumber": "8135",
"operatedBy": null,
"iataCode": "QF",
"airlineName": "Qantas",
"q": "Economy",
"cabin": "Economy",
"transitTime": null
}
],
"passengers": []
},
"remaining": 99998
}
Unauthorized
{
"error": "Unauthorized"
}
Please check your authentication token is correct.
No PNR Provided
{
"error": "No PNR Provided"
}
Please provide a valid PNR entry in your request body.
Request Limit Reached
{
"error": "Request Limit Reached"
}
You've reached your quota for requests for the month. Please either upgrade your subscription in the account area, or wait for your request allowance to be reset. You can find your renewal date inside your account area.
Prices are based on the number of monthly API uses. Users can cancel at any time.
£22.00 GBP
Number of API requests: 2,500
2,500 API Calls a month. Credit card required. Cancel anytime.
£40.00 GBP
Number of API requests: 10,000
10,000 API Calls a month. Credit card required. Cancel anytime.
£100.00 GBP
Number of API requests: 50,000
50,000 API Calls a month. Credit card required. Cancel anytime.
£250.00 GBP
Number of API requests: 100,000
100,000 API Calls a month. Credit card required. Cancel anytime.
£1,000.00 GBP
Number of API requests: 500,000
500,000 API Calls a month. Credit card required. Cancel anytime.
£1,750.00 GBP
Number of API requests: 1,000,000
1,000,000 API Calls a month. Credit card required. Cancel anytime.
To access the API, you need to sign up for an account and generate an API key. You can find your API key in the account area.
If you receive a 308 status, please ensure you have included www in your endpoint.