For the complete documentation index, see llms.txt. This page is also available as Markdown.

Price Compare Search

Atlas API priceCompareSearch.do reference for pre-sale route coverage and raw flight-price discovery.

💬 Need help? If you're stuck, ask Eva in the Help Center for instant diagnostics.

Ask Eva

Use this API for pre-sale route coverage and raw price discovery.

It is not a standard booking step.

What this API does

  • returns raw prices with maximum route coverage

  • skips booking-rule filtering

  • ignores supplier operational switches

  • checks Atlas cache first, then falls back to live airline pricing

Request compatibility

The request body is fully compatible with search.do.

No extra request fields are required.

Use the same core fields:

  • tripType, adultNum, childNum, infantNum

  • fromCity, toCity, fromDate, retDate

  • airlines, currency, includeMultipleFareFamily

How to read the response

When results exist

The API returns status: 0, msg: "success", and a non-empty routings array.

The routings structure matches search.do.

When no results exist

No results still return status: 0.

This is a normal business outcome.

Check both:

  • routings.length

  • noResultReason.code

Do not rely on status alone.

noResultReason

When routings is empty, the response may include noResultReason.

It contains:

  • code — machine-readable reason

  • message — human-readable detail

  • recentFlightDates — optional nearby dates with actual flight schedules

Reason codes

ROUTE_NOT_SUPPORTED

The route is outside Atlas coverage.

Do not retry the same route.

AIRLINE_NO_FLIGHT

The airline returned no flight info for that route and date.

Check recentFlightDates and retry with another supported date.

FLIGHT_SOLD_OUT

The flight exists, but no seats are available.

Check recentFlightDates and retry with another date.

PRICE_FETCH_FAILED

Atlas could not fetch a price from the airline.

Treat this as a temporary technical failure.

Retry later.

How recentFlightDates works

recentFlightDates returns up to 7 actual scheduled dates around the searched date.

The window targets 3 days before and 3 days after.

If earlier dates are unavailable, later dates fill the gap.

The list only includes dates with real flight schedules.

API-level errors

status != 0 means the request failed at API level.

Common values include:

  • 100, 101, 102 — missing or invalid request data

  • 109 — search limit exceeded

  • 110 — QPS limit exceeded

  • 112 — request timeout

  • 900 — unauthorized

  • 9999 — internal error

Integration guidance

Use this API when you want to evaluate Atlas route coverage before production integration.

Use the standard booking flow when you need a bookable path.

See Booking Overview for the normal search-to-ticket flow.

Price Compare Search

post

Purpose: Search comparable fares for a route/date/airline filter. The endpoint performs synchronous smart search and is intended for fare comparison scenarios.

Dependency: No preceding function needs to be called before this API.

Important notes:

  • The returned settlement currency is determined by client configuration or the optional currency request field.

  • Total payable amount for one adult passenger is normally adultPrice + adultTax + transactionFeePerPax.

  • When supportCreditTransPayment = 1, vendorFare contains the airline/vendor-side fare. When pass-through payment is not supported, supportCreditTransPayment = 0 and vendorFare may be null or omitted.

  • ancillaryProductElements depends on client configuration and airline support.

  • links may include airline terms and conditions.

  • When status = 0 but routings is empty, check noResultReason for the business reason and possible recent available flight dates.

  • Display-currency values are for display only and should not be used for settlement, fare comparison, or accounting.

Header parameters
AcceptstringRequired

Expected response media type. Use application/json.

Example: application/json
Content-TypestringRequired

Request body media type. Use application/json.

Example: application/json
Accept-EncodingstringRequired

Enable gzip response compression when supported.

Example: gzip
x-atlas-client-idstringRequired

Atlas client ID. The server uses this value as the request customer identifier.

Example: JWC21872_api_1
x-atlas-client-secretstringRequired

Atlas client secret for authentication. Use the secret assigned to the client ID.

Example: w(s5VY8[qAT!vwcXa}DC%4O2$f5mY7sL
Body
tripTypestring · enumRequired

Trip type. 1 = one-way, 2 = round trip. retDate is required when tripType = 2.

Example: 2Possible values:
requestIdstring · nullableOptional

Client-side request identifier for tracing and troubleshooting. Optional but recommended.

Example: pc-20260222-0001
adultNuminteger · min: 1 · max: 9Required

Adult passenger count. Must be at least 1. adultNum + childNum cannot exceed 9.

Default: 0Example: 1
childNuminteger · max: 8Required

Child passenger count. adultNum + childNum cannot exceed 9.

Default: 0Example: 0
infantNuminteger · max: 9Required

Infant passenger count. Cannot exceed the adult passenger count.

Default: 0Example: 0
fromCitystringRequired

Departure city or airport IATA code in uppercase. If an airport code is supplied here, results are filtered by that airport.

Example: KUL
fromAirportstring · nullableOptional

Optional departure airport IATA code. Leave empty when fromCity already represents the desired city/airport filter.

toCitystringRequired

Arrival city or airport IATA code in uppercase. If an airport code is supplied here, results are filtered by that airport.

Example: BKI
toAirportstring · nullableOptional

Optional arrival airport IATA code. Leave empty when toCity already represents the desired city/airport filter.

fromDatestringRequired

Departure date in YYYYMMDD format.

Example: 20260222Pattern: ^\d{8}$
retDatestring · nullableOptional

Return date in YYYYMMDD format. Required for round-trip searches; use null or omit for one-way searches.

Example: 20260222Pattern: ^\d{8}$
airlinesstring[] · nullableOptional

Airline IATA code filter in uppercase. The response only contains flights operated/marketed by the specified airlines when supplied.

Example: ["OD"]
fromFlightNumbersstring[] · nullableOptional

Optional outbound flight-number filter. Use one string per candidate itinerary. For connecting flights, join segment flight numbers with a comma, e.g. OD1001,OD1002.

Example: ["OD1001"]
retFlightNumbersstring[] · nullableOptional

Optional return flight-number filter. For connecting flights, join segment flight numbers with a comma.

Example: ["OD1002"]
includeMultipleFareFamilyboolean · nullableOptional

Whether to return multiple fare families for the same flight. false returns the lowest fare per flight by default.

Default: falseExample: false
currencystring · nullableOptional

Optional settlement currency in ISO 4217 format. Use only when the client has multiple settlement currencies configured with Atlas.

Example: USD
displayCurrencystring · nullableOptional

Optional display currency in ISO 4217 format. Display-currency amounts are for presentation only and should not be used for settlement or accounting.

Example: USD
maxResponseTimeinteger · nullableOptional

Optional client-side expected maximum response time in milliseconds. Actual timeout is also controlled by Atlas configuration.

Example: 30000
baggagePieceinteger · nullableOptional

Optional requested checked baggage pieces used for filtering or pricing when supported.

Example: 1
baggageWeightinteger · nullableOptional

Optional requested checked baggage weight in kilograms used for filtering or pricing when supported.

Example: 20
requestSourcestring · nullableOptional

Traffic source label, e.g. Google Flights, Organic Search, or SkyScanner. Used for analytics and traffic governance.

Example: SkyScanner
channelstring · nullableOptional

Optional client channel label used for reporting and traffic segmentation.

Example: API
mainChannelstring · nullableOptional

Optional primary channel label used for reporting and traffic segmentation.

Example: META
subChannelIDstring · nullableOptional

Optional secondary channel identifier used for reporting and traffic segmentation.

Example: skyscanner-us
residentCodestring · nullableOptional

Optional resident discount code when an airline or market supports resident fares.

Example: MY
Responses
200

Successful HTTP response. Business success or failure is indicated by the status field in the response body.

application/json
statusintegerRequired

Business status code. 0 means success. Common non-zero values:

  • 100: Missing required request data.
  • 101: Illegal request data or invalid format.
  • 102: Illegal request parameter.
  • 105: OD is not in the client's round-trip whitelist.
  • 106: Search is not allowed for this client.
  • 107: Insufficient balance.
  • 108: Route is restricted or blocked by system limitations.
  • 109: Search limit exceeded. For price compare, this may also mean daily quota exceeded.
  • 110: Too many concurrent requests.
  • 111: Real-time search is not allowed.
  • 112: Search timed out.
  • 113: Airline is under maintenance in Atlas.
  • 114: No flights present.
  • 116: Search data was not captured.
  • 123: Too many requests but too few paid orders.
  • 124: Unsupported settlement currency.
  • 126: requestId does not exist or request is already ended.
  • 900: Unauthorized access.
  • 9999: Internal system error.
msgstring · nullableRequired

Business message. Usually success or null for successful responses; contains the error message when status is non-zero.

requestIdstring · nullableOptional

Atlas request identifier returned for tracing. May be absent when the request fails before request initialization.

Example: ATLAS-20260222-000001
clientRequestIdstring · nullableOptional

Echo of the client request identifier when provided.

Example: pc-20260222-0001
smartEndboolean · nullableOptional

Whether the smart-search process has completed for this synchronous response.

Example: true
post/priceCompareSearch.do
200

Successful HTTP response. Business success or failure is indicated by the status field in the response body.

Last updated

Was this helpful?