Skip to content

Flight Price Insights API

Fares with a verdict, not just a number

Send a route and a date; get live fares with Google's own price band and a low | typical | high call on each.

  • price_insights_low / high: Google's historical band for the route & dates
  • price_range_in_relation_to_other_periods: the verdict, straight from Google
  • On every plan, on every search, including round-trips and the free tier

Free tier on RapidAPI. No card to try.

POST /api/google_flights/oneway/v1
captured run · 2026-08-26
{
  "from_airport": "JFK",
  "to_airport": "CUN",
  "departure_date": "2027-01-01",
  "limit": 5,
  "currency": "usd"
}
Replays the captured request: free, no account, nobody's quota.

The three fields

What the response tells you

Captured from a real search (JFK→Cancún, January 1) on the date stamped above.

price_insights_lownumber | null

The bottom of Google's historical price range for this route and these dates. In the capture: $140.

price_insights_highnumber | null

The top of the band. In the capture: $180. A fare under the low end is objectively cheap for the route; over the high end, objectively expensive.

price_range_in_relation_to_other_periods"low" | "typical" | "high" | null

Google's own comparison of the current fare against that band: the field your alerting, ranking, and "book now" logic can branch on directly. In the capture: typical

The captured fare ($177) on Google's band for JFK→CUN

$140 low$180 high

This is the whole feature in one picture: the band says what the route usually costs, the dot says what it costs right now. Rendering this, or just reading the verdict, is one field access.

Patterns

Three things this field replaces

Each of these normally requires months of your own fare history. The band ships it in the response.

A price alert without a database

python · poll & alert
fares = search("JFK", "LHR", "2026-12-10")
best = min(fares, key=lambda f: f["price_as_number"])

if best["price_range_in_relation_to_other_periods"] == "low":
    alert(f"JFK→LHR is LOW: {best['price']}",
          link=best["buy_link"])

An agent that can say "book it"

the tool response your agent reads
{
  "price": "$177",
  "price_insights_low": 140,
  "price_insights_high": 180,
  "price_range_in_relation_to_other_periods":
      "typical"
}
// "That fare is typical for this route.
//  The usual range is $140 to $180."

Ranking results by value

javascript · sort by value, not price
const rank = { low: 0, typical: 1, high: 2 };
flights.sort((a, b) =>
  rank[a.price_range_in_relation_to_other_periods] -
  rank[b.price_range_in_relation_to_other_periods] ||
  a.price_as_number - b.price_as_number
);

Pricing

Every plan carries this field

PlanPrice / moRequests$ / 1k reqOverageRate limit
BASICFree10 / mohard capGet this plan →
PRO$102,500 / mo$4.00$0.003 / req150 / minGet this plan →
ULTRArecommended$2510,000 / mo$2.50$0.003 / req250 / minGet this plan →
MEGA$5050,000 / mo$1.00$0.001 / req500 / minGet this plan →

Every plan includes every endpoint. You only choose volume and rate limit. Read from the live listing on 2026-08-26; the listing is authoritative.

Questions, answered plainly

Where do the price insights come from?
From Google Flights itself. Google computes a historical price range for a route and date window and, when available, a verdict on how the current fare compares. The API surfaces those exact values as price_insights_low, price_insights_high, and price_range_in_relation_to_other_periods. Nothing is modelled on our side.
Is the verdict on every result?
No. It appears when Google publishes it for that route and date, which is most well-travelled routes. When Google doesn’t provide a band, the fields are null and your code should treat the fare as unjudged rather than bad. The captured example on this page shows real values.
What values can the verdict take?
price_range_in_relation_to_other_periods is one of "low", "typical", or "high", in Google’s own wording. "low" means the current fare sits below the usual range for that route and dates: the buy signal.
How do I build a price alert with this?
Poll the route on a schedule (a cron, an n8n workflow, or an agent) and fire when the verdict flips to "low". You skip building a price-history database entirely, because Google’s band is the history.
Do competing flight APIs return this?
Check their docs for a price-insights or price-band field. Most Google Flights wrappers return fares only, which leaves “is this a good price?” unanswerable without your own history. It is the main reason this API exists as a separate product. Our comparison pages quote competitors’ own documentation, dated.
Does it cost extra?
No. The fields ride on every one-way and round-trip search on every plan, including the free tier.

Stop guessing whether a fare is good

One subscription, every endpoint, and Google's own price context on every result.

Free tier: 10 requests/month. No card to try.