Detroit Airport Flight Status Scraper avatar

Detroit Airport Flight Status Scraper

Pricing

from $0.48 / 1,000 flight extracteds

Go to Apify Store
Detroit Airport Flight Status Scraper

Detroit Airport Flight Status Scraper

Export current Detroit Metro Airport (DTW) arrivals and departures with airline, flight number, route, estimated time, status, gate, and observation timestamp.

Pricing

from $0.48 / 1,000 flight extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Export detroit airport flight status as structured arrival and departure rows from the current public Detroit Metropolitan Airport (DTW) flight board. Use the dataset to check flight identities, routes, estimated times, public statuses and gates during repeated airport operations monitoring.

The Actor reads the airport's browser-facing flight feed. It is a snapshot exporter, not a flight alerting or historical archive service. Run it again on an Apify schedule to collect later snapshots; compare them downstream when change detection matters.

Who is this for?

  • Airport operations teams assembling a current inbound or outbound board in a spreadsheet.
  • Ground transportation operators checking arrivals and gates before dispatch.
  • Travel automation builders refreshing specific airline or status subsets.

Why use this Actor?

One run yields normalized rows instead of a screenshot or manually copied table. Choose arrivals, departures, or both, then narrow the current feed by airline, flight number, route city/code or public status. Output includes an observation timestamp and source URL for provenance. Missing source values stay null; the Actor never invents a scheduled time from an estimated time.

What data is exported?

FieldMeaning
direction, airline, airlineCode, flightNumberPublic flight identity and movement type.
originAirportCode, originCity, destinationAirportCode, destinationCityThe public airport route labels.
scheduledTime, estimatedTimeSource local date/time strings, without an implied timezone offset. Sentinel/missing times become null.
status, gateAirport public status and gate, nullable.
observedAt, sourceUrlUTC observation time and official board URL. observedAt is not the airport's last-update time.

Get started

  1. Leave Flight direction at Both for the current board, or pick Arrivals/Departures.
  2. Optionally enter an airline, flight number, city/airport code or public status filter.
  3. Set a row limit and run. The default saves at most 100 matches.
  4. Download the dataset as JSON or CSV, or schedule another run for a later snapshot.

Input options

  • direction: both, arrivals or departures (default both).
  • airline: case-insensitive substring of airline name or code.
  • flightNumber: case-insensitive substring of the flight identifier.
  • city: case-insensitive substring of either route city or airport code.
  • status: case-insensitive substring of the published public status.
  • maxItems: 1–5000; defaults to 100. The limit is applied after filtering/deduplication.

The airport feed covers a rolling public window (normally six hours past and twelve hours ahead). There is no arbitrary date, archived history, custom URL, flight tracking map, alert delivery, or guaranteed full-day schedule mode. Filters search only the rows currently returned by the airport.

Example input

{"direction":"arrivals","maxItems":25}

For a focused operations feed: {"direction":"arrivals","status":"Arrived","maxItems":100}. Airlines and statuses can change with the source; a highly specific filter can legitimately return zero rows.

Example output

A representative local flight-board row (sampled from the public feed; live values change):

{
"direction": "Arrival",
"airline": "WestJet",
"airlineCode": "WS",
"flightNumber": "WS8354",
"originAirportCode": "SEA",
"originCity": "Seattle WA",
"destinationAirportCode": "DTW",
"destinationCity": "Detroit MI",
"scheduledTime": null,
"estimatedTime": "2026-09-24T12:54:00",
"status": "Arrived",
"gate": "A6",
"observedAt": "2026-09-24T20:09:22.037Z",
"sourceUrl": "https://www.metroairport.com/flights/flight-status"
}

How much does it cost to export Detroit airport flight status?

Pay-per-event billing includes a one-time start event per run and a flight event per saved row. Runs with no matching flights emit no flight event; the start event can still be charged. See the Actor's live Pricing tab for the applicable current plan and exact tiered rate before scheduling a high-volume export. Platform compute charges and refunds are governed by Apify's terms.

Integrations and monitoring

Use an Apify Task to save an arrivals-only or airline-specific input. Schedule the Task at the interval your operation needs, then send dataset rows to a sheet, webhook consumer, or warehouse using Apify integrations. For change detection, key by direction, flight number and estimated time, retaining observedAt for snapshot provenance; the Actor does not itself send alerts or deduplicate across separate runs.

API with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~detroit-dtw-flight-status/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"direction":"departures","maxItems":25}'

Keep API tokens in secrets, not in public code or shared reports.

API with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/detroit-dtw-flight-status').call({ direction: 'arrivals', maxItems: 25 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/detroit-dtw-flight-status').call(run_input={'direction': 'arrivals', 'maxItems': 25})
print(client.dataset(run['defaultDatasetId']).list_items().items)

MCP use

Expose this Actor to an MCP client such as Claude Code:

$claude mcp add --transport http apify 'https://mcp.apify.com?tools=automation-lab/detroit-dtw-flight-status'

Claude Desktop, Cursor, and VS Code can each use an HTTP MCP server configuration (use the client's MCP settings location):

{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/detroit-dtw-flight-status"}}}

Example prompts for MCP:

  • “Run the Detroit DTW flight status Actor for arrivals, up to 20 rows, and summarize the public statuses.”
  • “Export current DTW departures matching WestJet, then list their destination cities and gates.”

MCP calls run the same current-board workflow, not a historical flight lookup.

Reliability and limitations

The upstream feed can be delayed, omit fields, or temporarily fail. The Actor validates the JSON shape and retries transient network/429/server errors up to three requests per selected direction, then fails rather than returning a misleading empty success. It does not use a proxy or browser for the functioning public JSON endpoint. Gate and status are snapshots, not operational guarantees: confirm time-sensitive travel decisions with the airline and airport.

Legality and responsible use

Only collect publicly displayed flight status records at sensible schedule intervals. Follow the airport site's applicable terms and Apify's platform policies; do not treat this output as a safety-critical source of truth, a private passenger manifest, or a substitute for airline confirmation.

FAQ

Why is scheduledTime null? The sampled airport feed returned the year-0001 sentinel for that field. We explicitly convert this to null rather than invent a scheduled time.

Why did my airline or status filter return no rows? Only currently visible flights match; spelling and published status can change. Try a broad arrivals/departures run first.

Why does an error appear instead of an empty dataset? A failed, challenged, or structurally changed feed is treated as a source failure rather than as proof there are no flights.

Phoenix Sky Harbor Flight Status Scraper exports a different airport's flight board; FAA NAS Status & Airport Delays Scraper tracks airport-level advisories, not individual DTW flights.