Direct (nonstop) flights from Shanghai to Beijing
3 airlines fly nonstop from Hongqiao International (SHA) to Beijing Capital International Airport (PEK). It's 667 miles (1,074 km), about 2h 20m in the air. Operated by Air China, Hainan Airlines, China Eastern Airlines.
Route data last updated: May 27, 2026
Airlines with non-stop flights
Alternative Routes
Other ways to fly from Shanghai to Beijing with one stop · direct emits 124 kg CO₂ per passenger
Looking for the return flight?
PEK → SHA: Flights from Beijing to ShanghaiOther direct flights from Shanghai
Direct flights from Beijing (PEK)
Frequently Asked Questions
How long is the direct flight from Shanghai to Beijing?
A nonstop flight from Shanghai (SHA) to Beijing (PEK) takes approximately 2 hours and 20 minutes. The distance is 667 miles (1,074 km).
Which airlines fly nonstop from Shanghai to Beijing?
3 airlines: Air China, Hainan Airlines, China Eastern Airlines.
Is there a nonstop flight from Shanghai to Beijing?
Yes. 3 airlines: Air China, Hainan Airlines, China Eastern Airlines.
How far is Shanghai from Beijing?
The flight distance from Shanghai to Beijing is 667 miles (1,074 km), measured as the great-circle (shortest air) distance. That's roughly the same distance as the length of Italy.
What type of aircraft flies from Shanghai to Beijing?
At 2h 20m, this route typically uses narrow-body or mid-range jets — Boeing 737 MAX or Airbus A320neo. Varies by airline.
What is the carbon footprint of a flight from Shanghai to Beijing?
Roughly 124 kg CO2 per passenger one-way. That's about the same as driving 620 km.
Is the return flight from Beijing to Shanghai also nonstop?
Yes — nonstop flights run both ways. Flight time may differ slightly due to wind patterns.
When is the cheapest time to fly from Shanghai to Beijing?
Midweek flights (Tue/Wed) outside holiday peaks are usually cheapest. 3-6 weeks ahead is a good window for this route. Use "Check Prices" above to compare.
How early should I arrive at Hongqiao International for this flight?
1.5-2 hours for domestic. Add more time during holidays or busy travel weekends.