Skip to content

// docs

Trip.com: Search flights

Check outbound economy class flights on Trip.com by airports, data and passengers. Returns companies, segments, local times and fares in JSON. Cost: 5 credits per consultation.

trip.com:plp · 5 credits per request

Standard credit cost. Your account pricing is shown in the sandbox.

Try this operation in the sandbox

Source-specific limitations

Prices and availability reflect the time of the request and can change before purchase. Displayed totals may be rounded; the per-passenger breakdown preserves the received values.

HTTP request

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "trip.com",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-10-17",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0,
  "currency": "BRL",
  "lang": "pt-BR"
}'

Keep your API key on your server. See the quickstart for authentication and response handling.

MCP request

The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.

POST /v1/mcp · Bearer or X-API-Key authentication

trip_com_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "trip_com_plp",
    "arguments": {
      "from": "GRU",
      "to": "GIG",
      "departureDate": "2026-10-17",
      "numAdults": 1,
      "numChildren": 0,
      "numInfants": 0,
      "currency": "BRL",
      "lang": "pt-BR",
      "executionId": "exec_example_123"
    }
  }
}

Supported inputs

Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.

FieldTypeRequirementRuleDefaultExample
from
Code IATA of the airport of origin for searching PLP of Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas and 123Milhas.
string (IATA 3 letters) Required Airport code IATA with letters 3 (ex: GRU). City codes such as SAO are not supported on this endpoint. - GRU
to
Destination airport code IATA for search PLP of Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas and 123Milhas.
string (IATA 3 letters) Required Code IATA of the destination airport with letters 3 (ex: GIG), different from the origin. - GIG
departureDate
Departure date for searching PLP from ClickBus, Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas and 123Milhas.
string (YYYY-MM-DD) Required Valid date in YYYY-MM-DD, starting today. One-way fares in economy class. - 2026-10-17
target
Target source for extraction.
enum Required Use trip.com. - trip.com
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Use plp. - plp
numAdults
Quantity of adults for Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (1-30) Optional Integer from 1 to 9. Adults and children combined cannot exceed 9. 1 1
numChildren
Number of children for Booking, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (0-30) Optional Integer from 0 to 9, respecting the limit of 9 adults and children combined. 0 0
numInfants
Number of babies for GOL, Azul, LATAM and Trip.com PLP. It must be less than or equal to the number of adults.
integer (0-9) Optional Integer from 0 to 9, less than or equal to the number of adults. 0 0
lang
Language for Booking and Trivago (backend default: pt-br).
string (ll or ll-cc) Optional Language and region in ll-CC format. pt-BR pt-BR
currency
Currency for Booking, Trivago and Azul (backend default: BRL).
string (ISO 4217) Optional Currency code with 3 letters. The query fails if the source returns another currency. BRL BRL

Request examples

Flights GRU → GIG — one-way

Search for an adult, in reais and Brazilian Portuguese. Replace departureDate with the desired future data.

Flights GRU → GIG — one-way
{
  "target": "trip.com",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-10-17",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0,
  "currency": "BRL",
  "lang": "pt-BR"
}

Flights GRU → LIS — two adults

Exact airports and total for two adults. Replace the data with the day of your trip.

Flights GRU → LIS — two adults
{
  "target": "trip.com",
  "type": "plp",
  "from": "GRU",
  "to": "LIS",
  "departureDate": "2026-10-19",
  "numAdults": 2
}

Response schema

Leaf paths and expected types. Field names and enum values are part of the API contract.

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "data.source": "\"trip.com\"",
  "data.type": "\"plp\"",
  "data.parser": "\"1.0.0\"",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.searchType": "\"ONE_WAY\"",
  "data.from": "string",
  "data.to": "string",
  "data.departureDate": "string (YYYY-MM-DD)",
  "data.numAdults": "number",
  "data.numChildren": "number",
  "data.numInfants": "number",
  "data.currency": "string",
  "data.lang": "string",
  "data.cabin": "\"Economy\"",
  "data.success": "boolean",
  "data.totalFlightOptions": "number",
  "data.totalResults": "number",
  "data.listing.reportedFlightOptions": "number | null",
  "data.listing.excludedFlightOptions": "number",
  "data.requestUsage.requests": "number",
  "data.items[].recordType": "\"flight_price\"",
  "data.items[].position.flightOption": "number",
  "data.items[].position.brand": "number",
  "data.items[].route.originIata": "string",
  "data.items[].route.destinationIata": "string",
  "data.items[].route.departure": "string | null",
  "data.items[].route.arrival": "string | null",
  "data.items[].flight.id": "string | null",
  "data.items[].flight.flightCode": "string",
  "data.items[].flight.durationMinutes": "number | null",
  "data.items[].flight.stops": "number",
  "data.items[].fare.cabinLabel": "string",
  "data.items[].fare.cabinClasses": "array<object>",
  "data.items[].fare.seatCount": "number | null",
  "data.items[].fare.tags[].key": "string | null",
  "data.items[].fare.tags[].text": "string | null",
  "data.items[].fare.tags[].description": "string | null",
  "data.items[].fare.flags": "array<string>",
  "data.items[].price.currency": "string",
  "data.items[].price.amount": "number | null",
  "data.items[].price.total": "number",
  "data.items[].price.totalTax": "number | null",
  "data.items[].price.adult": "object | null",
  "data.items[].price.child": "object | null",
  "data.items[].price.infant": "object | null",
  "data.items[].price.referencePrices": "array<object>",
  "data.items[].flight.segments[].flightNumber": "string | null",
  "data.items[].flight.segments[].airlineCode": "string | null",
  "data.items[].flight.segments[].airlineName": "string | null",
  "data.items[].flight.segments[].originIata": "string | null",
  "data.items[].flight.segments[].destinationIata": "string | null",
  "data.items[].flight.segments[].originName": "string | null",
  "data.items[].flight.segments[].destinationName": "string | null",
  "data.items[].flight.segments[].originCity": "string | null",
  "data.items[].flight.segments[].destinationCity": "string | null",
  "data.items[].flight.segments[].departure": "string | null",
  "data.items[].flight.segments[].arrival": "string | null",
  "data.items[].flight.segments[].departureTerminal": "string | null",
  "data.items[].flight.segments[].arrivalTerminal": "string | null",
  "data.items[].flight.segments[].departureUtcOffsetHours": "number | null",
  "data.items[].flight.segments[].arrivalUtcOffsetHours": "number | null",
  "data.items[].flight.segments[].durationMinutes": "number | null",
  "data.items[].flight.segments[].aircraft": "object",
  "data.items[].flight.segments[].technicalStops": "array<object>"
}

Example response

Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.

responseExample
{
  "requestId": "99999999-1111-4111-8111-999999999999",
  "executionId": "99999999-2222-4222-8222-999999999999",
  "data": {
    "source": "trip.com",
    "type": "plp",
    "parser": "1.0.0",
    "url": "https://br.trip.com/flights/showfarefirst?dcity=gru&acity=gig&ddate=2026-10-17&triptype=ow&class=y&quantity=1&childqty=0&babyqty=0&curr=BRL",
    "requestUrl": "https://br.trip.com/flights/showfarefirst?dcity=gru&acity=gig&ddate=2026-10-17&triptype=ow&class=y&quantity=1&childqty=0&babyqty=0&curr=BRL",
    "extractedAt": "2026-09-17T15:05:38.190Z",
    "searchType": "ONE_WAY",
    "from": "GRU",
    "to": "GIG",
    "departureDate": "2026-10-17",
    "numAdults": 1,
    "numChildren": 0,
    "numInfants": 0,
    "currency": "BRL",
    "lang": "pt-BR",
    "cabin": "Economy",
    "success": true,
    "totalFlightOptions": 1,
    "totalResults": 1,
    "listing": {
      "reportedFlightOptions": 1,
      "excludedFlightOptions": 0
    },
    "requestUsage": {
      "requests": 1
    },
    "items": [
      {
        "recordType": "flight_price",
        "position": {
          "flightOption": 1,
          "brand": 1
        },
        "route": {
          "originIata": "GRU",
          "destinationIata": "GIG",
          "departure": "2026-10-17T04:35:00",
          "arrival": "2026-10-17T05:40:00"
        },
        "flight": {
          "id": "example-flight-id",
          "flightCode": "G31524",
          "durationMinutes": 65,
          "stops": 0,
          "segments": [
            {
              "flightNumber": "G31524",
              "airlineCode": "G3",
              "airlineName": "Gol Linhas Aéreas Inteligentes",
              "originIata": "GRU",
              "destinationIata": "GIG",
              "originName": "Aeroporto Internacional de São Paulo/Guarulhos–Governador André Franco Montoro",
              "destinationName": "Aeroporto Internacional do Rio de Janeiro - Galeão – Antonio Carlos Jobim",
              "originCity": "São Paulo",
              "destinationCity": "Rio de Janeiro",
              "departure": "2026-10-17T04:35:00",
              "arrival": "2026-10-17T05:40:00",
              "departureTerminal": "T2",
              "arrivalTerminal": "T2",
              "departureUtcOffsetHours": -3,
              "arrivalUtcOffsetHours": -3,
              "durationMinutes": 65,
              "aircraft": {
                "craftType": "7M8",
                "name": "Boeing 737 MAX 8",
                "widthLevel": "N",
                "minSeats": 162,
                "maxSeats": 178,
                "level": 2,
                "levelName": "Aeronave média",
                "shortName": "Boeing 737 MAX 8"
              },
              "technicalStops": []
            }
          ]
        },
        "fare": {
          "cabinLabel": "Econômica",
          "cabinClasses": [
            {
              "segmentNo": 1,
              "grade": 1,
              "journeyNo": 1,
              "mainSegment": true,
              "subClass": "O",
              "gradeMultilingual": "Econômica"
            }
          ],
          "seatCount": 7,
          "tags": [
            {
              "key": "FREE_CARRY_ON_BAGGAGE",
              "text": "Bagagem de mão incluída",
              "description": "{\"detailList\":[{\"contentList\":[\"1\"],\"subject\":\"Count\"},{\"contentList\":[\"Bagagem de mão: 12 kg\"],\"merge\":false,\"subject\":\"DetailContent\"}]}"
            },
            {
              "key": "LOW_SEAT_COUNT",
              "text": "menos de 9",
              "description": null
            }
          ],
          "flags": [
            "BRAND_POLICY",
            "DIRECT_LOWEST_PRICE",
            "DIRECT_FLIGHT",
            "LOWEST_PRICE",
            "LCC",
            "ECONOMY",
            "PRIORITIZING",
            "BRAND_FARE",
            "FREE_CARRY_ON_BAGGAGE"
          ]
        },
        "price": {
          "currency": "BRL",
          "amount": 376,
          "total": 376,
          "totalTax": 36.15,
          "adult": {
            "salePrice": 339.13,
            "tax": 36.15,
            "discount": 0,
            "totalPrice": 375.28,
            "morePrice": {
              "ticketTotalPrice": 375.28,
              "flightHotelDiscount": 0
            }
          },
          "child": null,
          "infant": null,
          "referencePrices": [
            {
              "crossOutType": "StrikeThroughPrice",
              "amount": 393
            }
          ]
        }
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.cabin "Economy" Economy cabin. Economy
data.currency string Currency requested and confirmed in the response. BRL
data.departureDate string (YYYY-MM-DD) Requested departure date. 2026-10-17
data.extractedAt string (iso datetime) Extraction time in UTC. 2026-09-17T15:05:38.190Z
data.from string Airport IATA of origin. GRU
data.items[].fare.cabinClasses array<object> Fare classes and subclasses by segment, when available. [{"segmentNo":1,"grade":1,"journeyNo":1,"mainSegment":true,"subClass":"O","gradeMultilingual":"Econômica"}]
data.items[].fare.cabinLabel string Cabin name provided by source. Econômica
data.items[].fare.flags array<string> Fare indicators reported by Trip.com. ["BRAND_POLICY","DIRECT_LOWEST_PRICE","DIRECT_FLIGHT","LOWEST_PRICE","LCC","ECONOMY","PRIORITIZING","BRAND_FARE","FREE_CARRY_ON_BAGGAGE"]
data.items[].fare.seatCount number | null Seat availability reported for fare, subject to change. 7
data.items[].fare.tags[].description string | null Original details of the characteristic, which may contain serialized JSON. {"detailList":[{"contentList":["1"],"subject":"Count"},{"contentList":["Bagagem de mão: 12 kg"],"merge":false,"subject":"DetailContent"}]}
data.items[].fare.tags[].key string | null Rate characteristic identifier. FREE_CARRY_ON_BAGGAGE
data.items[].fare.tags[].text string | null Original text of the characteristic, which may contain serialized JSON. Bagagem de mão incluída
data.items[].flight.durationMinutes number | null Total duration of the trip in minutes, reported by the source. 65
data.items[].flight.flightCode string Option flight numbers, separated by / when there are connections. G31524
data.items[].flight.id string | null Identifier of the returned option; does not constitute a reservation. example-flight-id
data.items[].flight.segments[].aircraft object Aircraft data provided by the source, such as craftType and name. {"craftType":"7M8","name":"Boeing 737 MAX 8","widthLevel":"N","minSeats":162,"maxSeats":178,"level":2,"levelName":"Aeronave média","shortName":"Boeing 737 MAX 8"}
data.items[].flight.segments[].airlineCode string | null Airline code. G3
data.items[].flight.segments[].airlineName string | null Airline name. Gol Linhas Aéreas Inteligentes
data.items[].flight.segments[].arrival string | null Local arrival, no conversion to UTC. 2026-10-17T05:40:00
data.items[].flight.segments[].arrivalTerminal string | null Arrival terminal, when available. T2
data.items[].flight.segments[].arrivalUtcOffsetHours number | null Difference for UTC in hours reported for the city of arrival. -3
data.items[].flight.segments[].departure string | null Local departure, no conversion to UTC. 2026-10-17T04:35:00
data.items[].flight.segments[].departureTerminal string | null Departure terminal, when available. T2
data.items[].flight.segments[].departureUtcOffsetHours number | null Difference for UTC in hours reported for the city of departure. -3
data.items[].flight.segments[].destinationCity string | null City of arrival. Rio de Janeiro
data.items[].flight.segments[].destinationIata string | null Segment arrival airport. GIG
data.items[].flight.segments[].destinationName string | null Name of the arrival airport. Aeroporto Internacional do Rio de Janeiro - Galeão – Antonio Carlos Jobim
data.items[].flight.segments[].durationMinutes number | null Segment duration in minutes. 65
data.items[].flight.segments[].flightNumber string | null Full flight number. G31524
data.items[].flight.segments[].originCity string | null Departure city. São Paulo
data.items[].flight.segments[].originIata string | null Segment departure airport. GRU
data.items[].flight.segments[].originName string | null Name of departure airport. Aeroporto Internacional de São Paulo/Guarulhos–Governador André Franco Montoro
data.items[].flight.segments[].technicalStops array<object> Technical stops reported by the source, separate from connections. []
data.items[].flight.stops number Number of connections between segments. Technical stops are at segments[].technicalStops. 0
data.items[].position.brand number Fare position within the flight option. 1
data.items[].position.flightOption number Flight option position in source response; may contain gaps after filtering. 1
data.items[].price.adult object | null Values per adult: salePrice, tax and totalPrice, when available. Preserves original accuracy, which may differ from the displayed total. {"salePrice":339.13,"tax":36.15,"discount":0,"totalPrice":375.28,"morePrice":{"ticketTotalPrice":375.28,"flightHotelDiscount":0}}
data.items[].price.amount number | null Average price per passenger displayed by the source, which may be rounded. 376
data.items[].price.child object | null Values per child, when available; null when missing. null
data.items[].price.currency string Currency of values. BRL
data.items[].price.infant object | null Values per baby, when available; null when missing. null
data.items[].price.referencePrices array<object> Reference or crossed out prices reported by the source; are not the total payable. [{"crossOutType":"StrikeThroughPrice","amount":393}]
data.items[].price.total number Total displayed for all search passengers. Can be rounded by Trip.com. 376
data.items[].price.totalTax number | null Total fees reported by source. 36.15
data.items[].recordType "flight_price" Each item represents a fare for a flight option. flight_price
data.items[].route.arrival string | null Arrival local airport time, no suffix UTC. 2026-10-17T05:40:00
data.items[].route.departure string | null Departure in local airport time, without suffix UTC. 2026-10-17T04:35:00
data.items[].route.destinationIata string Requested destination airport. GIG
data.items[].route.originIata string Requested origin airport. GRU
data.lang string Requested language and region. pt-BR
data.listing.excludedFlightOptions number Options dropped by different airports or data, non-air transportation or missing fare. 0
data.listing.reportedFlightOptions number | null Quantity reported by Trip.com, including possible suggestions for other airports. 1
data.numAdults number Number of adults. 1
data.numChildren number Number of children. 0
data.numInfants number Number of babies. 0
data.parser "1.0.0" Public format version of the response. 1.0.0
data.requestUrl string Same value as data.url. https://br.trip.com/flights/showfarefirst?dcity=gru&acity=gig&ddate=2026-10-17&triptype=ow&class=y&quantity=1&childqty=0&babyqty=0&curr=BRL
data.requestUsage.requests number Source requests needed to complete the search. The consultation price remains 5 credits. 1
data.searchType "ONE_WAY" One-way search. ONE_WAY
data.source "trip.com" Source consulted. trip.com
data.success boolean Indicates a valid response, even when there are no flights. true
data.to string Destination airport IATA. GIG
data.totalFlightOptions number Flight options with fares valid for the requested airports and data. 1
data.totalResults number Quantity of tariffs in items. A flight can have several fares. 1
data.type "plp" Query type. plp
data.url string URL corresponding to the search. https://br.trip.com/flights/showfarefirst?dcity=gru&acity=gig&ddate=2026-10-17&triptype=ow&class=y&quantity=1&childqty=0&babyqty=0&curr=BRL
executionId string (uuid) Idempotent identifier of the execution. 99999999-2222-4222-8222-999999999999
requestId string (uuid) Request identifier at the gateway. 99999999-1111-4111-8111-999999999999

Errors and missing data

When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.

HTTP statusError codeMeaning
400INVALID_PAYLOADInvalid JSON or a request that violates the documented validation rules.
401UNAUTHORIZEDMissing authorization or an invalid API key or token.
402INSUFFICIENT_CREDITSThe account has insufficient credits for this operation.
403FORBIDDENThe account does not have access, or the API is temporarily disabled.
409EXECUTION_CONFLICTThe execution identifier conflicts with an incompatible execution state.
429RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTSA rate limit or simultaneous request limit was exceeded.
5xxUPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERRORAn upstream, worker or gateway failure. Failed requests follow the platform refund policy.