Google Flights Partner Integration: Live API & Price Feed Developer Guide

Design a Google Flights partner integration around Live API, Price Feed, Price Through Google, booking links, request-response boundaries, latency, price quality and Travel Analytics Center.

Editorial information
Advertisement

A Google Flights integration should not be treated as a public flight-search API. Partner participation is onboarding-controlled, and the public documentation exposes three important pricing modes:

  • Live API — Google Flights Search sends queries to a partner endpoint.
  • Price Feed — partners provide flight/price data to Google.
  • Price Through Google — Google computes pricing through its own pricing sources.

So the first architecture question is not “which public endpoint do I call?” but which partner integration mode am I implementing?

For partner access, fare equivalence and booking ownership, see the Google Flights profile. This guide focuses on implementation boundaries.

1. Separate public APIs from partner integration

There is no general-purpose public Google Flights search endpoint comparable to a normal developer search API.

Keep the partner contract behind an adapter:

text
Google Flights
    |
    v
Partner Integration Adapter
    |
    +--> Live API endpoint
    +--> Price Feed exporter
    +--> Booking-link generator
    +--> Quality / analytics ingestion
    |
    v
Canonical Flight Domain

2. Live API flow

Google's Travel Analytics documentation explicitly describes Google Flights Search sending queries to partner API endpoints.

text
Google Flights search
        |
        v
Partner Live API
        |
        v
availability + pricing
        |
        v
Google Flights booking options
        |
        v
partner booking page

Public reporting also shows one-way and round-trip support for Live API integrations, plus response-time and timeout diagnostics.

3. Internal request model

The actual partner wire schema can be part of onboarding. Your internal contract should remain provider-neutral.

ts
interface FlightPricingRequest {
  userCountry?: string;
  tripType: "one_way" | "round_trip";
  origin: { airportCode: string };
  destination: { airportCode: string };
  outboundDate: string;
  returnDate?: string;
  passengers: {
    adults: number;
    nonAdults: number;
  };
  cabinClass?:
    | "economy"
    | "premium_economy"
    | "business"
    | "first";
  currency?: string;
}
text
Google partner request
    -> validate
    -> internal pricing request
    -> pricing engine
    -> canonical solution
    -> Google serializer

4. Internal response model

ts
interface FlightPricingResponse {
  requestId: string;
  solutions: FlightSolution[];
  generatedAt: string;
}

interface FlightSolution {
  itinerary: FlightItinerary;
  bookingOptions: FlightBookingOption[];
}

interface FlightBookingOption {
  providerId: string;
  price: {
    amount: number;
    currency: string;
  };
  deeplink: string;
  available: boolean;
}

5. Itinerary model

Google Flights quality datasets expose concepts such as slices, segments, marketing carriers, operating carriers, validating carrier and trip type.

ts
interface FlightItinerary {
  slices: FlightSlice[];
  validatingCarrier?: string;
}

interface FlightSlice {
  segments: FlightSegment[];
}

interface FlightSegment {
  origin: string;
  destination: string;
  departure: string;
  arrival: string;
  marketingCarrier?: string;
  operatingCarrier?: string;
  flightNumber?: string;
}

Do not collapse marketing and operating carriers.

6. Price Feed

A Price Feed integration provides flight and price data to Google ahead of query-time.

ts
interface FlightPriceFeedRow {
  itineraryKey: string;
  origin: string;
  destination: string;
  departureDate: string;
  returnDate?: string;
  cabinClass?: string;
  price: number;
  currency: string;
  bookingUrl: string;
  generatedAt: string;
  expiresAt?: string;
}

Key rule:

text
feed accepted != price still valid

7. Price Through Google

Google documents GDS-based and web-fare-based Price Through Google sources.

Architecture questions:

text
Who computes the price?
Who owns availability?
Who owns booking-link quality?
Who owns final price reconciliation?

The booking option should preserve itinerary and commercial context.

ts
interface GoogleFlightsHandoff {
  itineraryKey: string;
  providerId: string;
  displayedPrice: number;
  currency: string;
  deeplink: string;
  referralId?: string;
}

A generic homepage redirect is poor link quality.

Two core public Google Flights quality metrics are:

  • Itinerary Not Found
  • Price Discrepancy

Useful internal taxonomy:

text
ITINERARY_NOT_FOUND
PRICE_MISMATCH
CURRENCY_MISMATCH
FARE_UNAVAILABLE
DEEPLINK_BROKEN
WRONG_PASSENGER_CONTEXT
WRONG_CABIN
STALE_PRICE
UNKNOWN

10. Live API latency

Google's Live API Performance reporting includes:

  • query success,
  • failure rate,
  • p50/p90/p99 latency,
  • no-solution ratio.

Public documentation identifies a 45-second timeout state and notes that p90 below 15 seconds is generally considered fast enough for the Google Flights Best tab.

Treat those as partner behavior references, not as your own backend target.

Track:

text
provider_query_duration_ms
pricing_engine_duration_ms
supplier_fanout_duration_ms
serialization_duration_ms
total_response_duration_ms

11. Timeout and fallback

Do not design to the outer timeout.

text
Google timeout
   > your API timeout
      > supplier timeout
ts
interface FlightPricingTimeouts {
  totalBudgetMs: number;
  supplierBudgetMs: number;
  fallbackBudgetMs: number;
}

Fallbacks can include cached prices, partial coverage or a controlled no-solution response.

12. Transport success is not business success

A 200 response is not enough.

Distinguish:

text
transport success
business success
priced solution found
bookable solution found

14. Retry policy

Do not retry every Live API failure. Unbounded retries increase latency and duplicate upstream load.

Potential retry candidates:

  • transient network failures,
  • selected provider 5xx responses,
  • short-lived upstream timeouts,
  • throttling/rate-limit signals with bounded backoff.

Do not blindly retry:

  • malformed requests,
  • unsupported itinerary/context,
  • stale or invalid booking links,
  • deterministic pricing-validation failures.
ts
interface RetryPolicy {
  maxAttempts: number;
  baseDelayMs: number;
  maxDelayMs: number;
  retryableCodes: string[];
}

Retry time must fit inside the interactive latency budget. A controlled no-solution or fallback can be safer than approaching the outer Google timeout because of repeated retries.

13. Error taxonomy

text
GOOGLE_FLIGHTS_BAD_REQUEST
GOOGLE_FLIGHTS_TIMEOUT
GOOGLE_FLIGHTS_UNREACHABLE
GOOGLE_FLIGHTS_PARSE_ERROR
GOOGLE_FLIGHTS_NO_SOLUTION
GOOGLE_FLIGHTS_PRICE_MISMATCH
GOOGLE_FLIGHTS_LINK_INVALID
GOOGLE_FLIGHTS_STALE_PRICE

The public dashboard documents TIMEOUT, UNREACHABLE and ERROR states.

15. Correlation and idempotency

ts
interface FlightPricingEnvelope {
  requestId: string;
  receivedAt: string;
  queryHash: string;
  request: FlightPricingRequest;
}

Passenger, market and currency dimensions must be part of any response-cache key.

16. Referral tracking

A referral is generated when a user selects a booking option in Google Flights.

ts
interface GoogleFlightsReferralEvent {
  requestId: string;
  itineraryKey: string;
  providerId: string;
  displayedPrice: number;
  currency: string;
  clickedAt: string;
}

17. Conversion reconciliation

text
Google referral
    -> deeplink click
    -> booking created
    -> booking confirmed
    -> cancellation/refund
    -> matured booking

Track referral-to-booking, referral-to-matured-booking, cancellation and unattributed booking rates.

18. Travel Analytics Center and BigQuery

Google exposes partner quality/competitiveness data through Travel Analytics Center and BigQuery.

This enables:

  • automated alerts,
  • route-level anomaly detection,
  • carrier-level quality scoring,
  • price discrepancy trends,
  • invalid-link monitoring.

Possible internal table:

text
google_flights_quality
- date
- integration_id
- origin
- destination
- trip_type
- marketing_carriers
- operating_carriers
- google_price
- partner_price
- price_diff_percentage
- is_valid_partner_link
- source

19. Monitoring

API

  • query success,
  • p50/p90/p99,
  • timeout,
  • unreachable,
  • parse error,
  • no-solution.

Price quality

  • discrepancy rate,
  • stale price,
  • currency mismatch.
  • itinerary not found,
  • invalid partner link,
  • deeplink landing success.

Commercial

  • referrals,
  • conversion,
  • matured conversion,
  • revenue,
  • cancellation-adjusted revenue.

20. Test matrix

TestExpected
one-waycorrect itinerary
round-tripcorrect two-slice solution
multiple passengerscontext preserved
business cabincorrect cabin
interlinecarrier chain preserved
codesharemarketing/operating distinction
no inventoryno-solution
stale pricemismatch alert
invalid deeplinklink-quality alert
overloadcontrolled timeout
supplier timeoutfallback/no-solution
expired feed pricenot treated as fresh

21. Go-live checklist

  • Google partner onboarding complete
  • integration mode clear
  • canonical flight model ready
  • marketing/operating carrier separation
  • request adapter tested
  • response serializer tested
  • price freshness policy defined
  • timeout budget defined
  • no-solution handling implemented
  • booking-link validation implemented
  • referral correlation implemented
  • price discrepancy monitoring enabled
  • itinerary-not-found monitoring enabled
  • TAC ownership assigned
  • BigQuery export/alerting evaluated

Summary

The correct abstraction is not “call the Google Flights API.”

It is:

text
Google Flights partner query/feed
        |
        v
Google adapter
        |
        v
Canonical flight pricing domain
        |
        v
pricing / availability
        |
        v
Google booking option
        |
        v
deeplink + referral
        |
        v
quality + conversion reconciliation

The implementation value comes from isolating the private partner contract from your flight domain and making price, itinerary and booking-link quality observable end to end.

Technical advisory

Let’s review your architecture.

We can assess your travel distribution and metasearch architecture for scalability, failure modes and operations.

Discuss your project →

Sources

Related content

flight-metasearch

Google Flights: Partner Access, Offers and Booking Handoff

google.com

Understand Google Flights partner access, itinerary and seller ranking, fare equivalence and booking handoff through practical operational scenarios.

google-flightsflightprice-tracking
Explore →
comparison

Google Flights vs Skyscanner: Flight Metasearch Comparison

Compare Google Flights and Skyscanner across flight search, discovery, price tracking, API access and provider handoff.

google-flightsskyscannerflight
Explore →
integration

Skyscanner Flight API Integration: Developer Guide

developers.skyscanner.net

Implement Skyscanner Flights Live Prices with x-api-key authentication, create/poll lifecycle, request-response models, itinerary/leg/segment mapping, agents, pricing options, rate limits and observability.

skyscannerflightapi
Explore →
integration

Wego Affiliate API Integration: Developer Guide

developers.wego.com

Implement the Wego Affiliate API around OAuth client credentials, search creation, polling, offset merging, trip/fare/provider models, rate limits, handoff and commercial reconciliation.

wegoaffiliateapi
Explore →
travel-ecosystem

ENUYGUN: Turkey OTA and Travel Marketplace Profile

enuygun.com

A profile of ENUYGUN's role in Turkey's travel-distribution ecosystem across flights, buses, hotels, car rental and transfers.

enuygunotatravel-marketplace
Explore →
troubleshooting

How to Debug Hotel Price Mismatches

Diagnose price differences between metasearch, OTA and hotel booking engines with an evidence-driven triage and root-cause workflow.

hotelprice-accuracymismatch
Explore →