Free tool · live search, rate-limited
Round trip Beijing to Shanghai
Out and back on PEK → SHA, priced as one itinerary. Both legs, their airlines and their stops, and one total for the pair rather than two searches you add up and hope match.
PEK ⇄ SHA
nothing searched yetSet two dates and press Price the trip. Each row that comes back is one itinerary: the outbound and the return with their own airlines, stops and durations, and one total price for the pair. No stale sample sits here in the meantime, because a fare captured last month is not information.
This route
PEK → SHA, in facts rather than adjectives
Airport names, countries and time zones come from the OurAirports-derived airport dataset. The distance is great-circle, computed from those two coordinate pairs. Prices are not here because a price that is not live is not a price.
Origin
Beijing Capital International AirportPEK · Beijing, China
Destination
Shanghai Hongqiao International AirportSHA · Shanghai, China
Great-circle distance
1,076 km669 miles between the two airports
Time zones
Asia/Shanghaito Asia/Shanghai
Search type
DomesticBoth airports are in China. The request is identical either way: two IATA codes and a date.
Why this page exists
busiest routes by available seats, 2025Rank 9 in that published table. We build a page for a route people actually fly, and only for those.
Reading the result
The total is only half the answer
Two itineraries with the same total can be very different trips, and the response says which is which.
Each row gives you the outbound leg and the return leg separately: airline, stops, duration and the times, on both sides. At 1,076 km between PEK and SHA, a connection adds real hours, and the row shows you where they go rather than burying them in a single total.
Trip length is the other lever. The return date is a field, so a week against ten days is two requests, not two different tools. If the difference matters to you, sweep it: that is the same call in a loop on your own key.
Nothing here is an average or a prediction. It is the itineraries that came back for the two dates you chose, at the moment you asked.
On your own key
One PEK → SHA trip here. Every trip length, on your key
Paired-leg pricing across a range of return dates is the request on this page, fired in parallel.
Same route, different question
Three ways to look at PEK → SHA
Routes next door
Other pages through PEK and SHA
Every one of these is in the same published ranking, and every one runs the same live search.
SHA → SZX
Shanghai to Shenzhen
CAN → SHA
Guangzhou to Shanghai
PEK → SZX
Beijing to Shenzhen
CTU → PEK
Chengdu to Beijing
The full list of route and city pages is on the tools index.
Questions, answered plainly
- How much is a round trip from Beijing to Shanghai?
- Set the two dates above and the search answers it for those dates. There is no fixed number to print here: a return fare is a function of when you go and how long you stay, and any figure written into this page would be stale by the time you read it.
- Why is this not just two one-way searches?
- Because airlines price a return as one product. The total of two one-way fares is frequently higher than the return fare, and occasionally lower than anything actually on sale. This calls the round-trip endpoint, which returns paired legs and a real total for the pair.
- What does each row contain?
- total_price and total_price_as_number for the itinerary, then the outbound leg and the return leg separately, each with its own airline, stop count, duration and times. That is how you tell a cheap total with a long layover apart from a cheap total without one.
- Does trip length change the price?
- Often, and sometimes by more than moving the outbound date does. Change the return date and run it again; each run is one request. Sweeping several trip lengths at once is a job for your own key, in parallel.
- The search came back empty. What does that mean?
- On a round trip it usually means the pair of dates cannot be flown as an itinerary, not that the route has no flights. The API says so through X-Search-Status: "empty" is a real answer, "degraded" means the search did not finish and would be retried.
- Can I run the SHA to PEK direction?
- Yes, swap the codes in the form. The endpoint does not care which end you start from.