Skip to content

// docs

MaxMilhas: Search flights

Extracts flight offers from MaxMilhas by origin/destination airport, dates and passengers. API creates the search, consults the returned companies and delivers standardized offers in structured JSON.

maxmilhas.com.br: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

Some requests can take up to 1 minute to respond. This is expected for this operation; wait for the request to complete.

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": "maxmilhas.com.br",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-06-20",
  "returnDate": "2026-06-27",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0
}'

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

maxmilhas_com_br_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "maxmilhas_com_br_plp",
    "arguments": {
      "from": "GRU",
      "to": "GIG",
      "departureDate": "2026-06-20",
      "returnDate": "2026-06-27",
      "numAdults": 1,
      "numChildren": 0,
      "numInfants": 0,
      "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 Code IATA of the airport of origin with letters 3 (ex: GRU). - 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 Destination airport code IATA with letters 3 (ex: GIG). - GIG
departureDate
Departure date for searching PLP from ClickBus, Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas and 123Milhas.
string (YYYY-MM-DD) Required Departure date in YYYY-MM-DD format. - 2026-06-20
returnDate
Optional return date for PLP search of ClickBus, Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas, and 123Milhas.
string (YYYY-MM-DD) Optional Return date in YYYY-MM-DD format. Must be greater than or equal to departureDate. When omitted, the search is one-way. - 2026-06-27
target
Target source for extraction.
enum Required Always required and must be maxmilhas.com.br. - maxmilhas.com.br
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always required and must be plp. - plp
numAdults
Quantity of adults for Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (1-30) Optional Number of adults. Must be an integer between 1 and 9. 1 1
numChildren
Number of children for Booking, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (0-30) Optional Number of children. Must be an integer between 0 and 9. 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 Number of babies in arms. Must be an integer between 0 and 9 and less than or equal to numAdults. 0 0

Request examples

Search MaxMilhas - round trip

Round-trip search on MaxMilhas with origin, destination, dates and passengers.

Search MaxMilhas - round trip
{
  "target": "maxmilhas.com.br",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-06-20",
  "returnDate": "2026-06-27",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0
}

Search MaxMilhas - one way

One-way search informing only departureDate.

Search MaxMilhas - one way
{
  "target": "maxmilhas.com.br",
  "type": "plp",
  "from": "CGH",
  "to": "SDU",
  "departureDate": "2026-07-10",
  "numAdults": 2,
  "numChildren": 0,
  "numInfants": 0
}

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": "string",
  "data.type": "string",
  "data.parser": "\"1.0.0\"",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.createUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.searchType": "string (ONE_WAY | ROUND_TRIP)",
  "data.from": "string",
  "data.to": "string",
  "data.departureDate": "string (YYYY-MM-DD)",
  "data.returnDate": "string | null",
  "data.numAdults": "number",
  "data.numChildren": "number",
  "data.numInfants": "number",
  "data.cabin": "string",
  "data.searchId": "string | null",
  "data.airlines[]": "string",
  "data.success": "boolean",
  "data.complete": "boolean",
  "data.totalOffers": "number",
  "data.listedOffers": "number",
  "data.pollsPerformed": "number",
  "data.errors": "object",
  "data.cheapestOffer.airline": "string",
  "data.cheapestOffer.offerId": "string | null",
  "data.cheapestOffer.totalPrice": "number | null",
  "data.offers[].position": "number",
  "data.offers[].airline": "string",
  "data.offers[].offerId": "string | null",
  "data.offers[].type": "string | null",
  "data.offers[].cabin": "string | null",
  "data.offers[].totalPrice": "number | null",
  "data.offers[].adultPrice": "number | null",
  "data.offers[].fees": "number | null",
  "data.offers[].serviceCharge": "number | null",
  "data.offers[].boardingFees": "number | null",
  "data.offers[].label": "string | null",
  "data.offers[].baggage": "string | null",
  "data.offers[].minDurationText": "string | null",
  "data.offers[].outbound.carrier": "string | null",
  "data.offers[].outbound.departure": "string | null",
  "data.offers[].outbound.departureTime": "string | null",
  "data.offers[].outbound.arrival": "string | null",
  "data.offers[].outbound.arrivalTime": "string | null",
  "data.offers[].outbound.durationText": "string | null",
  "data.offers[].outbound.stops": "number | null",
  "data.offers[].inbound.carrier": "string | null",
  "data.offers[].inbound.departure": "string | null",
  "data.offers[].inbound.arrival": "string | null"
}

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": "maxmilhas.com.br",
    "type": "plp",
    "parser": "1.0.0",
    "url": "https://www.maxmilhas.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-06-20&returnDate=2026-06-27&numAdults=1&numChildren=0&numInfants=0",
    "requestUrl": "https://www.maxmilhas.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-06-20&returnDate=2026-06-27&numAdults=1&numChildren=0&numInfants=0",
    "createUrl": "https://bff-mobile.maxmilhas.com.br/v1/combo/offers",
    "extractedAt": "2026-05-15T15:00:00.000Z",
    "searchType": "ROUND_TRIP",
    "from": "GRU",
    "to": "GIG",
    "departureDate": "2026-06-20",
    "returnDate": "2026-06-27",
    "numAdults": 1,
    "numChildren": 0,
    "numInfants": 0,
    "cabin": "EC",
    "searchId": "combo-search-id",
    "airlines": [
      "gol",
      "latam"
    ],
    "success": true,
    "complete": true,
    "totalOffers": 2,
    "listedOffers": 2,
    "pollsPerformed": 2,
    "errors": {},
    "cheapestOffer": {
      "position": 1,
      "airline": "latam",
      "offerId": "offer-2",
      "type": "miles",
      "cabin": "EC",
      "totalPrice": 399.99,
      "adultPrice": 360,
      "fees": 39.99,
      "serviceCharge": 20,
      "boardingFees": 19.99,
      "label": "Menor preço",
      "tag": "best_price",
      "baggage": "checked=1x23kg",
      "minDuration": 4200,
      "minDurationText": "1h10m",
      "outbound": {
        "id": "bound-latam-out",
        "carrier": "LA",
        "departure": "GRU",
        "departureTime": "2026-06-20T12:00:00",
        "arrival": "GIG",
        "arrivalTime": "2026-06-20T13:10:00",
        "duration": 4200,
        "durationText": "1h10m",
        "stops": 0,
        "airportChange": false
      },
      "inbound": {
        "id": "bound-latam-in",
        "carrier": "LA",
        "departure": "GIG",
        "departureTime": "2026-06-27T19:00:00",
        "arrival": "GRU",
        "arrivalTime": "2026-06-27T20:10:00",
        "duration": 4200,
        "durationText": "1h10m",
        "stops": 0,
        "airportChange": false
      }
    },
    "offers": [
      {
        "position": 1,
        "airline": "latam",
        "offerId": "offer-2",
        "type": "miles",
        "cabin": "EC",
        "totalPrice": 399.99,
        "adultPrice": 360,
        "fees": 39.99,
        "serviceCharge": 20,
        "boardingFees": 19.99,
        "label": "Menor preço",
        "tag": "best_price",
        "baggage": "checked=1x23kg",
        "minDuration": 4200,
        "minDurationText": "1h10m",
        "outbound": {
          "id": "bound-latam-out",
          "carrier": "LA",
          "departure": "GRU",
          "departureTime": "2026-06-20T12:00:00",
          "arrival": "GIG",
          "arrivalTime": "2026-06-20T13:10:00",
          "duration": 4200,
          "durationText": "1h10m",
          "stops": 0,
          "airportChange": false
        },
        "inbound": {
          "id": "bound-latam-in",
          "carrier": "LA",
          "departure": "GIG",
          "departureTime": "2026-06-27T19:00:00",
          "arrival": "GRU",
          "arrivalTime": "2026-06-27T20:10:00",
          "duration": 4200,
          "durationText": "1h10m",
          "stops": 0,
          "airportChange": false
        }
      },
      {
        "position": 2,
        "airline": "gol",
        "offerId": "offer-1",
        "type": "miles",
        "cabin": "EC",
        "totalPrice": 425.9,
        "adultPrice": 380.4,
        "fees": 45.5,
        "serviceCharge": 20,
        "boardingFees": 25.5,
        "label": "Tarifa recomendada",
        "tag": "recommended",
        "baggage": "checked=1x23kg",
        "minDuration": 3900,
        "minDurationText": "1h05m",
        "outbound": {
          "id": "bound-gol-out",
          "carrier": "G3",
          "departure": "GRU",
          "departureTime": "2026-06-20T09:00:00",
          "arrival": "GIG",
          "arrivalTime": "2026-06-20T10:05:00",
          "duration": 3900,
          "durationText": "1h05m",
          "stops": 0,
          "airportChange": false
        },
        "inbound": {
          "id": "bound-gol-in",
          "carrier": "G3",
          "departure": "GIG",
          "departureTime": "2026-06-27T20:00:00",
          "arrival": "GRU",
          "arrivalTime": "2026-06-27T21:05:00",
          "duration": 3900,
          "durationText": "1h05m",
          "stops": 0,
          "airportChange": false
        }
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.airlines[] string Companies returned when creating the search and used for polling. gol
data.cabin string Cabin used in mobile flow. EC
data.cheapestOffer.airline string Cheapest offer company. latam
data.cheapestOffer.offerId string | null Identifier of the cheapest offer. offer-2
data.cheapestOffer.totalPrice number | null Total price of the cheapest offer. 399.99
data.complete boolean Indicates whether all companies were consulted without final error. true
data.createUrl string Endpoint POST /v1/combo/offers from BFF mobile from MaxMilhas. https://bff-mobile.maxmilhas.com.br/v1/combo/offers
data.departureDate string (YYYY-MM-DD) Requested departure date. 2026-06-20
data.errors object Errors per company when a poll ends without offers. {}
data.extractedAt string (iso datetime) Extraction Timestamp ISO on UTC. 2026-05-15T15:00:00.000Z
data.from string Airport of origin. GRU
data.listedOffers number Number of offers returned in array offers. 2
data.numAdults number Number of adults sent to the search. 1
data.numChildren number Number of children sent to the search. 0
data.numInfants number Number of babies sent to the search. 0
data.offers[].adultPrice number | null Base price per adult when available. 360
data.offers[].airline string Company consulted for the offer. latam
data.offers[].baggage string | null Summary of checked baggage when available. checked=1x23kg
data.offers[].boardingFees number | null Boarding fees when available. 19.99
data.offers[].cabin string | null Offer booth. EC
data.offers[].fees number | null Total fees when available. 39.99
data.offers[].inbound.arrival string | null Arrival airport for the return leg. GRU
data.offers[].inbound.carrier string | null Company operating the return leg. LA
data.offers[].inbound.departure string | null Departure airport for the return leg. GIG
data.offers[].label string | null Message or commercial seal of the offer. Menor preço
data.offers[].minDurationText string | null Minimum formatted duration. 1h10m
data.offers[].offerId string | null Offer identifier in the upstream payload. offer-2
data.offers[].outbound.arrival string | null Airport of arrival for the outbound leg. GIG
data.offers[].outbound.arrivalTime string | null Arrival time of the outward leg. 2026-06-20T13:10:00
data.offers[].outbound.carrier string | null Company operating the outward section. LA
data.offers[].outbound.departure string | null Departure airport for the outward leg. GRU
data.offers[].outbound.departureTime string | null Departure time for the outward leg. 2026-06-20T12:00:00
data.offers[].outbound.durationText string | null Formatted duration of the outbound leg. 1h10m
data.offers[].outbound.stops number | null Number of stops on the outward section. 0
data.offers[].position number Position of the offer after sorting by lowest price. 1
data.offers[].serviceCharge number | null Service charge when available. 20
data.offers[].totalPrice number | null Standardized total price. 399.99
data.offers[].type string | null Offer type returned by MaxMilhas. miles
data.parser "1.0.0" Stable version of the API response format. 1.0.0
data.pollsPerformed number Total number of polls executed in all companies. 2
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://www.maxmilhas.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-06-20&returnDate=2026-06-27&numAdults=1&numChildren=0&numInfants=0
data.returnDate string | null Requested return date when available. 2026-06-27
data.searchId string | null Search identifier returned by MaxMilhas. combo-search-id
data.searchType string (ONE_WAY | ROUND_TRIP) Search type: ONE_WAY or ROUND_TRIP. ROUND_TRIP
data.source string Logic source executed. maxmilhas.com.br
data.success boolean Indicates whether at least one offer has been normalized. true
data.to string Destination airport. GIG
data.totalOffers number Total standardized offers. 2
data.type string Logical type of API. plp
data.url string URL synthetic canonical search, used for auditing and deduplication. https://www.maxmilhas.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-06-20&returnDate=2026-06-27&numAdults=1&numChildren=0&numInfants=0
executionId string (uuid) Idempotent identifier of the execution. 99999999-2222-4222-8222-999999999999
requestId string (uuid) Request identifier in GeckoAPI. 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.