Orly Paris Charles de Gaulle Airport Added to Our Real-Time Flight Status API.
You need to build or improve a real-time flight board and alerting workflow for Paris Charles de Gaulle Airport. By the end of this guide, you will query FlightLabs’ Real-Time Flight Tracking endpoint for CDG, parse status, times, terminals, gates, and codeshares, and implement a polling-and-cache loop that handles cancellations and diversions cleanly.
Paris Charles de Gaulle (CDG): what you’re tracking
Paris Charles de Gaulle Airport (IATA: CDG, ICAO: LFPG) sits northeast of central Paris and serves as a major European intercontinental hub. Developers track CDG because arrivals, departures, connections, and irregular operations ripple across airlines and regions—impacting airport displays, mobility apps, logistics chains, and corporate travel itineraries.
The FlightLabs endpoints you’ll use for CDG
FlightLabs exposes aviation data via RESTful endpoints that return JSON. For real-time operations at CDG, these are the primary endpoints you’ll combine:
| Endpoint | What it returns | When to use it for CDG |
|---|---|---|
| Real-time Flight Tracking | Live flight status (state, times, terminals/gates, current position) | Display departure/arrival boards, alert on delays/diversions, track in-flight position approaching/leaving CDG |
| Flight Schedules | Published schedules (future/near-term timetable) | Pre-populate boards for the day, reconcile planned vs. live times at CDG, enable search and pagination |
| Flight History | Historical flights and their final outcomes | Post-operational analytics, SLA verification, and tuning alert thresholds for CDG |
| Detailed Flight Info | Details for a specific flight by number | Lookup, enrich, or drill into a single flight touching CDG |
| Future Flights | Near-future operational data (beyond schedule-only) | Forecast staffing and ground operations for upcoming days at CDG |
Explore capabilities and field definitions in the FlightLabs Documentation. To get an API key, head to Register.
Querying live flights for CDG with curl
The real-time endpoint returns live status, including current phase (e.g., scheduled, boarding, departed, en-route, landed), time fields, and terminals/gates when available. The example below shows a simple filter to return flights relevant to Paris Charles de Gaulle (IATA: CDG). Adjust filters per your needs as described in the API docs.
curl -G "https://www.goflightlabs.com/real-time" \
--data-urlencode "airport=CDG" \
--data-urlencode "direction=arrival" \
--data-urlencode "limit=50" \
--data-urlencode "api_key=YOUR_API_KEY"
Notes:
- airport=CDG filters by Paris Charles de Gaulle (IATA code).
- direction can be “arrival” or “departure” to scope the board you need.
- limit caps payload size to optimize rendering and cache churn.
Official example JSON: real-time flight tracking fields you’ll use
Below is the official sample response format for real-time tracking. Field names match what you’ll parse for CDG as well: flight status, scheduled/actual/estimated times, terminals and gates, and live position for inflight tracking.
{
"success": true,
"data": {
"flight": {
"iata": "AA123",
"icao": "AAL123",
"number": "123",
"status": "en-route",
"departure": {
"airport": "JFK",
"scheduled": "2024-03-20T10:00:00Z",
"actual": "2024-03-20T10:05:00Z",
"terminal": "8",
"gate": "B12"
},
"arrival": {
"airport": "LAX",
"scheduled": "2024-03-20T13:15:00Z",
"estimated": "2024-03-20T13:20:00Z",
"terminal": "4",
"gate": "45A"
},
"position": {
"latitude": 39.8729,
"longitude": -98.7372,
"altitude": 35000,
"speed": 495,
"heading": 270
}
}
}
}
What matters for CDG applications:
- flight.status: drives the primary state machine (scheduled, en-route, landed, cancelled, diverted, etc.).
- departure.* and arrival.*: UTC timestamps (scheduled/estimated/actual) and terminal/gate fields for boards, handoffs, and signage.
- position.*: useful for en-route flights inbound to or outbound from CDG to power maps and ETA refinements.
Official example JSON: airport information used for CDG context
While you will query real-time flight status for CDG, airport info provides time zone and structural context (terminals) for your UI and conversions. Here is the official sample format:
{
"success": true,
"data": {
"airport": {
"iata": "JFK",
"icao": "KJFK",
"name": "John F. Kennedy International Airport",
"location": {
"lat": 40.6413,
"lon": -73.7781,
"city": "New York",
"country": "United States"
},
"timezone": "America\/New_York",
"terminals": [
"1",
"2",
"4",
"5",
"7",
"8"
],
"runways": [
{
"length_ft": 14511,
"width_ft": 150,
"surface": "concrete",
"designator": "13L\/31R"
}
],
"weather": {
"temp_c": 22,
"visibility_km": 10,
"wind": {
"speed_kts": 8,
"direction_deg": 180
}
}
}
}
}
For CDG, you’ll use similar fields: iata=CDG and icao=LFPG, the airport name, the timezone for local rendering, and terminal lists to validate inbound/outbound assignments from live data.
Official example JSON: schedules to reconcile planned vs. live for CDG
Published schedules let you pre-seed your board and compare projected operations with actuals or estimates from the real-time endpoint:
{
"success": true,
"data": {
"schedules": [
{
"flight_number": "UA456",
"departure": {
"airport": "SFO",
"scheduled": "2024-03-20T08:00:00Z",
"terminal": "3"
},
"arrival": {
"airport": "ORD",
"scheduled": "2024-03-20T14:15:00Z",
"terminal": "1"
},
"aircraft": {
"type": "Boeing 787-9",
"registration": "N123UA"
},
"airline": {
"name": "United Airlines",
"iata": "UA"
}
}
]
}
}
For CDG specifically, use the schedule fields to build the day’s plan (arrival.airport or departure.airport will be CDG in your queries), then overlay live status to show delays, diversions, or gate changes.
JavaScript example: refresh CDG arrivals with caching and status handling
The script below queries real-time arrivals for CDG, normalizes the fields you’ll render, and implements a simple polling loop with in-memory caching to reduce UI churn. Replace YOUR_API_KEY with your FlightLabs key.
async function fetchCdgArrivals() {
const params = new URLSearchParams({
airport: 'CDG',
direction: 'arrival',
limit: '50',
api_key: 'YOUR_API_KEY'
});
const res = await fetch(`https://www.goflightlabs.com/real-time?${params.toString()}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const json = await res.json();
return json;
}
// Simple cache keyed by flight iata+number to suppress noisy updates
const cache = new Map();
function normalizeFlight(f) {
const flightId = `${f.flight?.iata || ''}-${f.flight?.number || ''}`;
return {
id: flightId,
status: f.flight?.status || 'unknown',
iata: f.flight?.iata || null,
icao: f.flight?.icao || null,
number: f.flight?.number || null,
// All timestamps are UTC ISO-8601 strings
schedArr: f.arrival?.scheduled || null,
estArr: f.arrival?.estimated || null,
actArr: f.arrival?.actual || null,
arrTerminal: f.arrival?.terminal || null,
arrGate: f.arrival?.gate || null,
// Departure snippet for codeshare displays and boarding info
depAirport: f.departure?.airport || null,
depTerminal: f.departure?.terminal || null,
depGate: f.departure?.gate || null,
// Optional live position while en-route
position: f.position || null
};
}
function hasMeaningfulChange(prev, next) {
if (!prev) return true;
// Compare a subset of fields relevant to arrival boards
const keys = ['status','estArr','actArr','arrTerminal','arrGate'];
return keys.some(k => prev[k] !== next[k]);
}
async function pollCdgArrivals({ intervalMs = 15000 } = {}) {
try {
const data = await fetchCdgArrivals();
// FlightLabs example shows a single "data.flight". For lists, adapt to array shape if provided.
const flights = Array.isArray(data.data?.flights)
? data.data.flights
: (data.data?.flight ? [data.data.flight] : []);
for (const f of flights) {
const normalized = normalizeFlight({ ...f, flight: f.flight, departure: f.departure, arrival: f.arrival, position: f.position });
if (hasMeaningfulChange(cache.get(normalized.id), normalized)) {
cache.set(normalized.id, normalized);
// Render/update your UI here
console.log(`[${normalized.status}] ${normalized.iata}${normalized.number} ETA ${normalized.estArr} T${normalized.arrTerminal} G${normalized.arrGate}`);
}
}
} catch (err) {
console.error('CDG arrivals poll failed:', err.message);
} finally {
setTimeout(() => pollCdgArrivals({ intervalMs }), intervalMs);
}
}
// Start polling
pollCdgArrivals({ intervalMs: 15000 });
Implementation notes:
- All timestamps are UTC (e.g., 2024-03-20T13:15:00Z). Convert to Europe/Paris only for display; keep UTC internally for sorting and comparisons.
- Cache by IATA code + number. If your integration exposes codeshares distinctly, key by the operating carrier + number and map marketing carriers where available.
- Polling every 10–30 seconds balances freshness and rate usage for CDG boards. Increase the interval during overnight lulls or if no in-flight arrivals.
Interpreting status and time fields for CDG
Real-time boards at CDG typically display a single status line and one or two time fields. Here’s how to combine fields from the real-time response:
- Status precedence: cancelled or diverted > landed > en-route > departed > boarding > scheduled.
- Primary time: show arrival.estimated while in-flight or delayed; then arrival.actual after touchdown; otherwise arrival.scheduled.
- Delay calculation: if arrival.estimated or arrival.actual exists, compute offset vs. arrival.scheduled. Communicate the sign (+/- minutes) and keep raw UTC for logic.
- Terminals/gates: prefer arrival.terminal and arrival.gate when present; fall back to schedule or leave blank if not provided.
Use cases at CDG tied to specific fields
- Arrivals board for Terminal 2: filter real-time by airport=CDG and direction=arrival, then render only items with arrival.terminal indicating the T2 sub-complex. Use arrival.gate and arrival.estimated as the primary display fields.
- Delay push alerts for ground ops: watch flight.status changes and the delta between arrival.estimated and arrival.scheduled. Send alerts when the offset passes configured thresholds.
- Schedule sync for day-of-ops: fetch schedules for CDG to seed the list, then overlay live status fields (status, arrival.estimated, arrival.actual, arrival.gate) to reconcile plan vs. reality.
Time zones, UTC, and formatting at CDG
All official examples show ISO-8601 timestamps in UTC (Z-suffix). Use UTC in your storage and task scheduling. For user-facing displays at CDG, convert to Europe/Paris, which observes daylight saving time. In code, set your formatter explicitly (e.g., Intl.DateTimeFormat with timeZone="Europe/Paris" in JavaScript) to avoid server-local defaults drifting your boards.
Polling frequency, caching, and graceful backoff
For airport boards and logistics consoles at CDG:
- Polling: 10–15 seconds for arrivals/departures when traffic is active; 30–60 seconds off-peak.
- Caching: maintain a rolling cache keyed by flight IATA + number and clear after arrival.actual is present (plus a short retention window for audit).
- Backoff: if requests fail (non-2xx or network errors), double the delay up to a cap; display the last known data with a “stale” indicator.
- De-duplication: codeshares may refer to the same operating flight; collapse or annotate them in your UI based on your product’s rules.
Handling cancelled and diverted flights at CDG
When a flight is cancelled or diverted, flight.status reflects that change. In your UI:
- Cancelled: mark prominently and suppress gates; keep the row for a configurable period so passengers and staff can see the outcome.
- Diverted: show the new station if provided by fields in the response, and stop updating arrival.gate at CDG. Consider moving the row to a “diverted/irregular” section.
- Downstream effects: if you run turnaround workflows, propagate status to any paired departure (e.g., return legs) and alert ground teams.
Pagination and schedule breadth for CDG
Schedules for a hub like CDG can be large. When calling the schedules endpoint:
- Paginate through results with the pagination controls described in the docs. Store cursors or incremental offsets for a full-day view.
- Filter by time window and direction (arrival vs. departure) to limit payloads for targeted displays (e.g., “next 6 hours at CDG”).
- De-duplicate by flight number and scheduled time if your UI collapses codeshares.
Putting it together: merge schedules with live status for CDG
A robust CDG board merges scheduled “plan of the day” with real-time “actuals.” The general flow:
- Fetch schedules for your target interval at CDG and render as a baseline with scheduled times and terminals where present.
- Start polling real-time by airport=CDG, overlaying status, estimated or actual times, and gate assignments as soon as they appear.
- Mark delayed flights based on estimated or actual vs. scheduled. Promote cancelled/diverted to the top or to a separate section per your UX.
- Once arrival.actual exists, stop aggressive polling for that flight and retain for your retention window.
End-to-end field guide for CDG boards
- Identity: flight.iata, flight.icao, flight.number (use IATA+number for customer-facing boards; ICAO+number for operations if preferred).
- Times (UTC): departure.scheduled, departure.actual, arrival.scheduled, arrival.estimated, arrival.actual.
- Facilities: departure.terminal, departure.gate, arrival.terminal, arrival.gate.
- State: flight.status transitions determine your UI state machine.
- Position: position.latitude/longitude/altitude/speed/heading for map widgets and ETA tuning.
Additional references and control panel
Use the FlightLabs Documentation for query parameters and field-level details, and manage keys and environment access in the MCP. If you haven’t yet, create your account and get your key: Register.
Appendix: example calls and responses you can reuse
1) Real-time (curl) scoped to CDG arrivals
curl -G "https://www.goflightlabs.com/real-time" \
--data-urlencode "airport=CDG" \
--data-urlencode "direction=arrival" \
--data-urlencode "limit=50" \
--data-urlencode "api_key=YOUR_API_KEY"
2) Real-time example JSON (official sample)
{
"success": true,
"data": {
"flight": {
"iata": "AA123",
"icao": "AAL123",
"number": "123",
"status": "en-route",
"departure": {
"airport": "JFK",
"scheduled": "2024-03-20T10:00:00Z",
"actual": "2024-03-20T10:05:00Z",
"terminal": "8",
"gate": "B12"
},
"arrival": {
"airport": "LAX",
"scheduled": "2024-03-20T13:15:00Z",
"estimated": "2024-03-20T13:20:00Z",
"terminal": "4",
"gate": "45A"
},
"position": {
"latitude": 39.8729,
"longitude": -98.7372,
"altitude": 35000,
"speed": 495,
"heading": 270
}
}
}
}
3) Airport information example JSON (official sample)
{
"success": true,
"data": {
"airport": {
"iata": "JFK",
"icao": "KJFK",
"name": "John F. Kennedy International Airport",
"location": {
"lat": 40.6413,
"lon": -73.7781,
"city": "New York",
"country": "United States"
},
"timezone": "America\/New_York",
"terminals": [
"1",
"2",
"4",
"5",
"7",
"8"
],
"runways": [
{
"length_ft": 14511,
"width_ft": 150,
"surface": "concrete",
"designator": "13L\/31R"
}
],
"weather": {
"temp_c": 22,
"visibility_km": 10,
"wind": {
"speed_kts": 8,
"direction_deg": 180
}
}
}
}
}
4) Flight schedules example JSON (official sample)
{
"success": true,
"data": {
"schedules": [
{
"flight_number": "UA456",
"departure": {
"airport": "SFO",
"scheduled": "2024-03-20T08:00:00Z",
"terminal": "3"
},
"arrival": {
"airport": "ORD",
"scheduled": "2024-03-20T14:15:00Z",
"terminal": "1"
},
"aircraft": {
"type": "Boeing 787-9",
"registration": "N123UA"
},
"airline": {
"name": "United Airlines",
"iata": "UA"
}
}
]
}
}
FAQ
- How often should I poll the real-time endpoint for CDG boards?
Start with 10–15 seconds during active waves and relax to 30–60 seconds off-peak. Add exponential backoff on errors. - Are all times in UTC?
Yes. The sample responses use ISO-8601 UTC (Z). Convert to Europe/Paris for display; keep UTC for logic. - How do I handle codeshares on my CDG board?
Use the operating carrier’s flight as the primary row and list codeshares as alternates, or collapse them per your UX rules. Key your cache by operating IATA + number. - What fields indicate a delay?
Compare arrival.estimated or arrival.actual against arrival.scheduled. Show the delta in minutes and update as status changes. - Can I get future operations beyond published schedules?
Use the Future Flights endpoint to review near-term operations beyond static timetables and plan staffing or connections at CDG.
Build your CDG integration now: browse the Documentation, generate an API key via Register, and use the MCP to manage environments. With real-time status, schedules, and history in hand, you can ship reliable CDG boards and alerts without re-architecting your stack.