McCarran International Airport (LAS) Flight API
You need to build reliable arrivals and departures for a single airport and ship it fast. By the end of this guide, you’ll be able to pull live and scheduled flights for LAS and wire them into boards, alerts, and analytics using the FlightLabs REST API.
Why LAS matters for your app
LAS (ICAO: KLAS) serves Las Vegas, Nevada, and is a major hub for leisure and convention traffic across North America and beyond. Developers track LAS flights to drive airport FIDS displays, traveler notifications, and logistics flows that depend on accurate arrival and departure timing.
Which FlightLabs endpoints to use for LAS
For boards, alerts, and planning around LAS, most implementations combine a schedule query with live status. Below is a technical comparison of the relevant FlightLabs endpoints and how they map to common LAS workflows.
| Endpoint | Purpose | Query focus for LAS | Key fields you’ll use | Typical use case |
|---|---|---|---|---|
| /flights-schedules | Published schedules by airport or airline | iataCode=LAS and type=arrival or type=departure | flight_number, departure.scheduled, arrival.scheduled, terminals, airline.iata/name, aircraft.type | Daily boards, ETD/ETA baselines, syncing timetables |
| Real-time flight tracking | Live status and position updates | Filter by flight numbers serving LAS, then merge with LAS schedule | status, departure.actual/gate/terminal, arrival.estimated/gate/terminal, position.* | Delay alerts, “now boarding,” en-route maps |
| Future flights | Forward-looking plans (beyond near-term schedules) | Query routes that include LAS | Planned timings, airline, aircraft | Capacity planning, future availability previews |
| Flight history | Past operations for analysis | Historical flights that arrived to or departed from LAS | Actual vs scheduled times, status history | On-time analytics, post-event reporting |
| Flight delay predictions | Predictive delay signals | Use alongside LAS schedule and live status | Predicted delay magnitude/timing | Proactive customer messaging and staffing buffers |
First request: get LAS arrivals from the schedule API
Start with scheduled arrivals so you have a stable baseline to render boards or determine which flights to poll for live updates. The schedules endpoint accepts the airport IATA code and a type flag.
curl -s "https://api.goflightlabs.com/flights-schedules?iataCode=LAS&type=arrival&api_key=YOUR_API_KEY"
Notes:
- Authentication: include your API key as a query parameter (api_key=YOUR_API_KEY). If you prefer header-based auth, see the Documentation for supported methods.
- Time windows and pagination: schedules are typically returned in batches. If you need a rolling window (e.g., next 6–12 hours), call the endpoint periodically and cache results. For specific pagination parameters, consult the docs.
Use the schedule data in code
This JavaScript example requests LAS arrivals, then maps the result into an array suitable for an arrival board. It extracts the fields developers rely on in dashboards and alerting logic.
async function fetchLasArrivals() {
const url = "https://api.goflightlabs.com/flights-schedules?iataCode=LAS&type=arrival&api_key=YOUR_API_KEY";
const res = await fetch(url);
if (!res.ok) {
throw new Error("Request failed: " + res.status);
}
const json = await res.json();
// Expect a structure similar to the schedules sample in FlightLabs docs.
const schedules = (json && json.data && json.data.schedules) ? json.data.schedules : [];
// Normalize for boards/alerts: flight, airline, scheduled times, terminals.
return schedules.map(s => ({
flightNumber: s.flight_number,
airlineIata: s.airline && s.airline.iata,
airlineName: s.airline && s.airline.name,
arrivalAirport: s.arrival && s.arrival.airport,
arrivalScheduledUtc: s.arrival && s.arrival.scheduled, // ISO 8601 UTC
arrivalTerminal: s.arrival && s.arrival.terminal,
departureAirport: s.departure && s.departure.airport,
departureScheduledUtc: s.departure && s.departure.scheduled,
departureTerminal: s.departure && s.departure.terminal,
aircraftType: s.aircraft && s.aircraft.type
}));
}
fetchLasArrivals()
.then(rows => {
// Example: render top 5
console.log(rows.slice(0, 5));
})
.catch(err => console.error(err));
Official sample: real-time tracking payload (field guide)
The live tracking response includes the operational details you’ll combine with LAS schedules to power alerts and up-to-the-minute boards. The field structure is consistent regardless of airport, so your integration for LAS uses the same schema.
{
"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
}
}
}
}
How these fields map to LAS use cases:
- status: drives alerting logic (e.g., en-route, landed, potentially cancelled/diverted). Handle unexpected values defensively.
- departure.actual vs departure.scheduled: compute departure delay for your ETD variance banner.
- arrival.estimated vs arrival.scheduled: compute arrival delay and update ETA on LAS boards.
- terminal and gate (both sides): populate “Terminal 1, Gate B12” style labels on passenger displays.
- position.*: render in-flight maps and distance-to-LAS summaries.
Three LAS-focused use cases and the fields that power them
1) Arrivals board for LAS
- Baseline: schedules from /flights-schedules with iataCode=LAS&type=arrival.
- Live overlay: merge by flight number with real-time status (status, arrival.estimated, arrival.terminal, arrival.gate).
- Display: airline.iata/name, flight_number, departure.airport, arrival.estimated (or scheduled if missing), terminal/gate.
2) Delay alerts for inbound flights
- Compare arrival.estimated to arrival.scheduled from live tracking.
- Trigger thresholds (e.g., “notify at 15+ minutes difference”) and send notifications to subscribers arriving at LAS.
- Include gate changes when arrival.gate differs between polls.
3) Schedule sync for day-of-ops
- Pull LAS departures via /flights-schedules?iataCode=LAS&type=departure several times per hour.
- Cache by flight_number and airline.iata, and update terminals/aircraft.type when they change.
- Backfill actuals post-ops using Flight History for analytics on block times and ground handling.
Time, status, and caching considerations for LAS
- Time zones: timestamps are ISO 8601; treat them as UTC unless otherwise specified by the field name or docs. Convert to America/Los_Angeles for local LAS displays while keeping UTC in storage for comparisons.
- Polling cadence: for public boards, 30–60s on live tracking is typical; schedules can be refreshed every 5–15 minutes. Use ETag/Last-Modified or hash-comparison caching to avoid unnecessary re-renders.
- Merging data: join schedules and live tracking on airline IATA + flight number. Prefer live fields (estimated, actual, gate) when present; fall back to scheduled.
- Cancelled or diverted: the status field is your source of truth. Treat non-en-route/landed values as exceptions; preserve the record with a clear label and suppress countdown timers.
- Codeshares: if you ingest both marketing and operating numbers, de-duplicate by a chosen “display number” and cross-link the alternates. Where a codeshare list is not present in the response, infer via matching times/aircraft and your airline reference tables.
Workflow example: boarding-to-arrival lifecycle for LAS
- Fetch LAS departure schedule for your window (e.g., next 6 hours) and store flight_number, departure.scheduled, terminal/gate, airline.
- For each flight in-window, periodically request live status. If departure.actual appears and status indicates airborne, switch the UI to “en-route.”
- Use arrival.estimated to update the ETA tile for LAS and announce delays as differences from arrival.scheduled.
- On touchdown/at-gate, when status indicates landed and arrival.gate is set, freeze the final record and archive it for history calculations.
Deploying at scale with MCP and operational tips
- API orchestration: if you run multiple workers that poll different time windows, centralize keys and routing with MCP to keep request patterns consistent.
- Error handling: retry with backoff on network failures; if the response omits live fields, keep the scheduled baseline in place.
- Data hygiene: normalize airline codes to uppercase IATA, guard against missing terminals/gates, and treat aircraft.registration as optional in schedules.
Endpoint selection for LAS: side-by-side
| Endpoint | Freshness | Primary keys to join | Operational details | Best for LAS |
|---|---|---|---|---|
| /flights-schedules | Published schedules | airline.iata + flight_number | Terminals, scheduled times, aircraft type | Base boards and plan-of-day |
| Real-time tracking | Seconds-to-minutes | iata/icao flight codes + number | status, actual/estimated times, gates, position | Alerts, late/early banners, live gates |
| Flight history | Post-ops | Same identifiers | Final actuals and status outcomes | Performance analysis at LAS |
Testing and debugging your LAS integration
- Unit tests: fix time zone conversion by snapshotting examples where scheduled vs actual differ by minutes.
- UI states: create fixtures for on-time, delayed, cancelled, diverted, and no-gate-yet to validate your board logic.
- Drift checks: compare schedule vs live fields every poll; alert if the aircraft type or terminal flips unexpectedly, then re-render once confirmed twice to reduce flicker.
Authentication, quotas, and pricing overview
FlightLabs uses API key authentication. Store your key securely (e.g., in a server-side vault) and call from your backend to shield it from client apps. If you need to test from a browser, proxy requests through your server.
Plans include a 7-day or 50-request trial to validate your pipeline. The Starter plan is $24.99/month for light usage and prototypes. For detailed quotas, rate limits, and production guidance, review the Documentation.
Putting it all together for LAS
In production, run a two-tier loop: a slow lane for schedules (e.g., every 10 minutes) and a fast lane for live tracking (30–60 seconds for in-window flights). Merge by airline + flight number, prefer live times when present, and maintain UTC internally with localized presentation in America/Los_Angeles for traveler-facing views. Cache aggressively and debounce gate/terminal changes.
FAQ
How do I filter schedules only for arrivals at LAS?
Use the schedules endpoint with iataCode=LAS and type=arrival. Cache responses and refresh periodically to capture late updates.
What if a flight is cancelled or diverted?
Rely on the live tracking status field. When it indicates an exception, mark the record accordingly, stop ETA countdowns, and keep the last reliable gate/terminal data visible.
What time zone does FlightLabs use?
Timestamps are provided in ISO 8601; treat them as UTC unless a field explicitly denotes a local context. Convert to America/Los_Angeles for LAS displays.
How often should I poll for LAS boards?
Schedules: every 5–15 minutes. Live tracking for in-window flights: every 30–60 seconds. Implement exponential backoff on errors and avoid over-polling flights that have already landed.
Where can I test and monitor my calls?
Use the MCP to centralize requests and manage environments, then verify schemas against the Documentation.
Ready to pull LAS arrivals and departures into your stack? Get your API key now and start building with FlightLabs: Register.