// docs

Smiles Flights Search

Extrai ofertas de passagens da Smiles por rota, datas e passageiros, com milhas, valores em reais, taxas, números dos voos, companhias por conexão e bagagem informada na busca.

Tempo de resposta: Em algumas execuções, esta API pode levar até 1 minuto para responder. Isso é normal para este endpoint. Aguarde a conclusão da requisição.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Consulte o schema e a descrição de cada campo para tratar valores ausentes; os exemplos mostram uma resposta possível.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "smiles.com.br",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-11-09",
  "returnDate": "2026-11-16",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

smiles_com_br_plp

Auth

Bearer ou X-API-Key

smiles_com_br_plp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "smiles_com_br_plp",
    "arguments": {
      "from": "GRU",
      "to": "GIG",
      "departureDate": "2026-11-09",
      "returnDate": "2026-11-16",
      "numAdults": 1,
      "numChildren": 0,
      "numInfants": 0,
      "executionId": "exec_example_123"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
from
Codigo IATA do aeroporto de origem para busca PLP da Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas e 123Milhas.
string (IATA 3 letras) Obrigatório Código IATA do aeroporto de origem com 3 letras (ex: GRU). - GRU
to
Codigo IATA do aeroporto de destino para busca PLP da Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas e 123Milhas.
string (IATA 3 letras) Obrigatório Código IATA do aeroporto de destino com 3 letras (ex: GIG). - GIG
departureDate
Data de saida para busca PLP da ClickBus, Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas e 123Milhas.
string (YYYY-MM-DD) Obrigatório Data de ida no formato YYYY-MM-DD. - 2026-11-09
returnDate
Data de retorno opcional para busca PLP da ClickBus, Decolar, GOL, Azul, LATAM, Trip.com, KAYAK, MaxMilhas e 123Milhas.
string (YYYY-MM-DD) Opcional Data de volta no formato YYYY-MM-DD. Deve ser maior ou igual a departureDate. Quando omitida, a busca é one-way. - 2026-11-16
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatório e deve ser smiles.com.br. - smiles.com.br
type
Tipo da extração: pdp, idp, plp, ilp, quote, review ou places.
enum Obrigatório Sempre obrigatório e deve ser plp. - plp
numAdults
Quantidade de adultos para Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM e Trip.com.
integer (1-30) Opcional Quantidade de adultos. Deve ser inteiro entre 1 e 9. 1 1
numChildren
Quantidade de criancas para Booking, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM e Trip.com.
integer (0-30) Opcional Quantidade de crianças. Deve ser inteiro entre 0 e 9. 0 0
numInfants
Quantidade de bebes para GOL, Azul, LATAM e Trip.com PLP. Deve ser menor ou igual a quantidade de adultos.
integer (0-9) Opcional Quantidade de bebês de colo. Deve ser inteiro entre 0 e 9 e menor ou igual a numAdults. 0 0

Exemplos de request

Busca Smiles - ida e volta

Busca round-trip na Smiles com origem, destino, datas e passageiros.

Busca Smiles - ida e volta
{
  "target": "smiles.com.br",
  "type": "plp",
  "from": "GRU",
  "to": "GIG",
  "departureDate": "2026-11-09",
  "returnDate": "2026-11-16",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0
}

Busca Smiles - somente ida

Busca one-way informando apenas departureDate.

Busca Smiles - somente ida
{
  "target": "smiles.com.br",
  "type": "plp",
  "from": "CGH",
  "to": "SDU",
  "departureDate": "2026-11-20",
  "numAdults": 2,
  "numChildren": 0,
  "numInfants": 0
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

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.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.runtimeEnv": "string",
  "data.totalOffers": "number",
  "data.listedOffers": "number",
  "data.cheapestOffer.position": "number",
  "data.cheapestOffer.uid": "string | null",
  "data.cheapestOffer.pricingUid": "string | null",
  "data.cheapestOffer.fareType": "string | null",
  "data.cheapestOffer.airline": "string | null",
  "data.cheapestOffer.cabin": "string | null",
  "data.cheapestOffer.stops": "number | string | null",
  "data.cheapestOffer.sourceGDS": "string | null",
  "data.cheapestOffer.departureAirport": "string | null",
  "data.cheapestOffer.departureTime": "string | null",
  "data.cheapestOffer.arrivalAirport": "string | null",
  "data.cheapestOffer.arrivalTime": "string | null",
  "data.cheapestOffer.priceHint": "number | null",
  "data.cheapestOffer.fareOptions[].fareType": "string | null",
  "data.cheapestOffer.fareOptions[].miles": "number | string | null",
  "data.cheapestOffer.fareOptions[].money": "number | string | null",
  "data.cheapestOffer.fareOptions[].costTax": "number | string | null",
  "data.offers[].position": "number",
  "data.offers[].uid": "string | null",
  "data.offers[].pricingUid": "string | null",
  "data.offers[].fareType": "string | null",
  "data.offers[].airline": "string | null",
  "data.offers[].cabin": "string | null",
  "data.offers[].stops": "number | string | null",
  "data.offers[].sourceGDS": "string | null",
  "data.offers[].departureAirport": "string | null",
  "data.offers[].departureTime": "string | null",
  "data.offers[].arrivalAirport": "string | null",
  "data.offers[].arrivalTime": "string | null",
  "data.offers[].priceHint": "number | null",
  "data.offers[].fareOptions[].fareType": "string | null",
  "data.offers[].fareOptions[].miles": "number | string | null",
  "data.offers[].fareOptions[].money": "number | string | null",
  "data.offers[].fareOptions[].costTax": "number | string | null",
  "data.cheapestOffer.flightNumbers": "string[]",
  "data.cheapestOffer.legs": "array",
  "data.cheapestOffer.legs[].flightNumber": "string | null",
  "data.cheapestOffer.legs[].marketingAirline": "string | null",
  "data.cheapestOffer.legs[].operatingAirline": "string | null",
  "data.cheapestOffer.legs[].cabin": "string | null",
  "data.cheapestOffer.legs[].departureAirport": "string | null",
  "data.cheapestOffer.legs[].departureTime": "string | null",
  "data.cheapestOffer.legs[].arrivalAirport": "string | null",
  "data.cheapestOffer.legs[].arrivalTime": "string | null",
  "data.cheapestOffer.baggage": "object | null",
  "data.cheapestOffer.baggage.free": "boolean | null",
  "data.cheapestOffer.baggage.quantity": "number | null",
  "data.cheapestOffer.fareOptions[].uid": "string | null",
  "data.cheapestOffer.fareOptions[].productClass": "string | null",
  "data.cheapestOffer.fareOptions[].classOfService": "string | null",
  "data.offers[].flightNumbers": "string[]",
  "data.offers[].legs": "array",
  "data.offers[].legs[].flightNumber": "string | null",
  "data.offers[].legs[].marketingAirline": "string | null",
  "data.offers[].legs[].operatingAirline": "string | null",
  "data.offers[].legs[].cabin": "string | null",
  "data.offers[].legs[].departureAirport": "string | null",
  "data.offers[].legs[].departureTime": "string | null",
  "data.offers[].legs[].arrivalAirport": "string | null",
  "data.offers[].legs[].arrivalTime": "string | null",
  "data.offers[].baggage": "object | null",
  "data.offers[].baggage.free": "boolean | null",
  "data.offers[].baggage.quantity": "number | null",
  "data.offers[].fareOptions[].uid": "string | null",
  "data.offers[].fareOptions[].productClass": "string | null",
  "data.offers[].fareOptions[].classOfService": "string | null"
}

Exemplo de response

responseExample
{
  "requestId": "99999999-1111-4111-8111-999999999999",
  "executionId": "99999999-2222-4222-8222-999999999999",
  "data": {
    "source": "smiles.com.br",
    "type": "plp",
    "parser": "1.0.0",
    "url": "https://www.smiles.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-11-09&returnDate=2026-11-16&numAdults=1&numChildren=0&numInfants=0&cabin=ALL",
    "requestUrl": "https://www.smiles.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-11-09&returnDate=2026-11-16&numAdults=1&numChildren=0&numInfants=0&cabin=ALL",
    "extractedAt": "2026-10-11T15:00:00.000Z",
    "searchType": "ROUND_TRIP",
    "from": "GRU",
    "to": "GIG",
    "departureDate": "2026-11-09",
    "returnDate": "2026-11-16",
    "numAdults": 1,
    "numChildren": 0,
    "numInfants": 0,
    "cabin": "ALL",
    "runtimeEnv": "green",
    "totalOffers": 2,
    "listedOffers": 2,
    "cheapestOffer": {
      "position": 1,
      "uid": "flight-uid-1",
      "pricingUid": "pricing-uid-1",
      "fareType": "SEGMENT_1",
      "airline": "G3",
      "cabin": "ECONOMIC",
      "stops": 0,
      "sourceGDS": "G3",
      "departureAirport": "GRU",
      "departureTime": "2026-11-09T09:00:00",
      "arrivalAirport": "GIG",
      "arrivalTime": "2026-11-09T10:10:00",
      "priceHint": 12500,
      "fareOptions": [
        {
          "uid": "fare-uid-1",
          "fareType": "SMILES_CLUB",
          "miles": 12500,
          "money": 0,
          "costTax": 39.9,
          "productClass": "PROMO",
          "classOfService": "U"
        }
      ],
      "flightNumbers": [
        "1001"
      ],
      "legs": [
        {
          "flightNumber": "1001",
          "marketingAirline": "G3",
          "operatingAirline": "G3",
          "cabin": "ECONOMIC",
          "departureAirport": "GRU",
          "departureTime": "2026-11-09T09:00:00",
          "arrivalAirport": "GIG",
          "arrivalTime": "2026-11-09T10:10:00"
        }
      ],
      "baggage": {
        "free": false,
        "quantity": 0
      }
    },
    "offers": [
      {
        "position": 1,
        "uid": "flight-uid-1",
        "pricingUid": "pricing-uid-1",
        "fareType": "SEGMENT_1",
        "airline": "G3",
        "cabin": "ECONOMIC",
        "stops": 0,
        "sourceGDS": "G3",
        "departureAirport": "GRU",
        "departureTime": "2026-11-09T09:00:00",
        "arrivalAirport": "GIG",
        "arrivalTime": "2026-11-09T10:10:00",
        "priceHint": 12500,
        "fareOptions": [
          {
            "uid": "fare-uid-1",
            "fareType": "SMILES_CLUB",
            "miles": 12500,
            "money": 0,
            "costTax": 39.9,
            "productClass": "PROMO",
            "classOfService": "U"
          }
        ],
        "flightNumbers": [
          "1001"
        ],
        "legs": [
          {
            "flightNumber": "1001",
            "marketingAirline": "G3",
            "operatingAirline": "G3",
            "cabin": "ECONOMIC",
            "departureAirport": "GRU",
            "departureTime": "2026-11-09T09:00:00",
            "arrivalAirport": "GIG",
            "arrivalTime": "2026-11-09T10:10:00"
          }
        ],
        "baggage": {
          "free": false,
          "quantity": 0
        }
      },
      {
        "position": 2,
        "uid": "flight-uid-2",
        "pricingUid": "pricing-uid-2",
        "fareType": "SEGMENT_1",
        "airline": "G3",
        "cabin": "ECONOMIC",
        "stops": 1,
        "sourceGDS": "G3",
        "departureAirport": "GRU",
        "departureTime": "2026-11-09T13:20:00",
        "arrivalAirport": "GIG",
        "arrivalTime": "2026-11-09T16:05:00",
        "priceHint": 15800,
        "fareOptions": [
          {
            "uid": "fare-uid-2",
            "fareType": "SMILES",
            "miles": 15800,
            "money": 0,
            "costTax": 39.9,
            "productClass": "LIGHT",
            "classOfService": "X"
          }
        ],
        "flightNumbers": [
          "1201",
          "1202"
        ],
        "legs": [
          {
            "flightNumber": "1201",
            "marketingAirline": "G3",
            "operatingAirline": "G3",
            "cabin": "ECONOMIC",
            "departureAirport": "GRU",
            "departureTime": "2026-11-09T13:20:00",
            "arrivalAirport": "CNF",
            "arrivalTime": "2026-11-09T14:30:00"
          },
          {
            "flightNumber": "1202",
            "marketingAirline": "G3",
            "operatingAirline": "G3",
            "cabin": "ECONOMIC",
            "departureAirport": "CNF",
            "departureTime": "2026-11-09T14:55:00",
            "arrivalAirport": "GIG",
            "arrivalTime": "2026-11-09T16:05:00"
          }
        ],
        "baggage": {
          "free": true,
          "quantity": 1
        }
      }
    ]
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.cabin string Cabine enviada para o endpoint Smiles. ALL
data.cheapestOffer.airline string | null Companhia aérea ou GDS associado à oferta. G3
data.cheapestOffer.arrivalAirport string | null Aeroporto de chegada. GIG
data.cheapestOffer.arrivalTime string | null Data/hora de chegada. 2026-11-09T10:10:00
data.cheapestOffer.baggage object | null Franquia de bagagem despachada informada na busca para a oferta; null quando ausente. Não é uma validação por opção tarifária ou por passageiro: a tarifa escolhida e benefícios pessoais podem alterar a franquia. Peso, dimensões, bagagem de mão e regras completas não são retornados. {"free":false,"quantity":0}
data.cheapestOffer.baggage.free boolean | null Indicação de bagagem gratuita fornecida pela Smiles. false indica explicitamente bagagem não gratuita na oferta; null significa desconhecido. Não inclui validação de benefícios pessoais do Clube/categoria. false
data.cheapestOffer.baggage.quantity number | null Quantidade de volumes de bagagem despachada informada para a oferta. Zero é uma quantidade explícita; null significa ausente ou desconhecida. Não representa peso em kg. 0
data.cheapestOffer.cabin string | null Cabine associada à oferta. ECONOMIC
data.cheapestOffer.departureAirport string | null Aeroporto de partida. GRU
data.cheapestOffer.departureTime string | null Data/hora de partida. 2026-11-09T09:00:00
data.cheapestOffer.fareOptions[].classOfService string | null Classe de reserva quando informada. Não substitui as regras tarifárias completas. U
data.cheapestOffer.fareOptions[].costTax number | string | null Taxa adicional em reais (BRL), separada de money, quando informada. null significa taxa desconhecida, não zero. Não garante todas as cobranças da emissão, especialmente em companhias parceiras; confirme o total na Smiles. 39.9
data.cheapestOffer.fareOptions[].fareType string | null Modalidade tarifária, como SMILES, SMILES_CLUB, SMILES_MONEY, SMILES_MONEY_CLUB ou MONEY. Tarifas de Clube/categoria dependem de elegibilidade na emissão; a API não autentica a conta Smiles. SMILES_CLUB
data.cheapestOffer.fareOptions[].miles number | string | null Quantidade de milhas da opção, por passageiro e trecho da oferta; não é o total da reserva. Crianças e bebês podem ter condições específicas. 12500
data.cheapestOffer.fareOptions[].money number | string | null Componente da tarifa em reais (BRL), não em centavos. Quando há milhas, é a parcela em dinheiro do Smiles & Money. Não inclui costTax; some os dois campos conhecidos para estimar o componente em dinheiro. Não é o total da reserva. 0
data.cheapestOffer.fareOptions[].productClass string | null Código do produto tarifário quando informado. Não substitui as regras completas de bagagem, alteração ou cancelamento. PROMO
data.cheapestOffer.fareOptions[].uid string | null Identificador da opção tarifária retornado pela Smiles. fare-uid-1
data.cheapestOffer.fareType string | null Tipo da oferta/trecho retornado pela Smiles, como SEGMENT_1 ou SEGMENT_2. Para a modalidade de pagamento e elegibilidade, leia fareOptions[].fareType. SEGMENT_1
data.cheapestOffer.flightNumbers string[] Números dos voos, sem prefixo da companhia, na ordem de legs. Array vazio quando não informados; use legs para associar cada número à companhia e à conexão. ["1001"]
data.cheapestOffer.legs array Voos que compõem o itinerário da oferta, na ordem retornada pela Smiles. Array vazio quando não informados. [{"flightNumber":"1001","marketingAirline":"G3","operatingAirline":"G3","cabin":"ECONOMIC","departureAirport":"GRU","departureTime":"2026-11-09T09:00:00","arrivalAirport":"GIG","arrivalTime":"2026-11-09T10:10:00"}]
data.cheapestOffer.legs[].arrivalAirport string | null Código IATA do aeroporto de chegada deste voo. GIG
data.cheapestOffer.legs[].arrivalTime string | null Data/hora de chegada deste voo, conforme retornada pela Smiles. Não presume UTC quando não há offset. 2026-11-09T10:10:00
data.cheapestOffer.legs[].cabin string | null Cabine deste voo, quando informada. ECONOMIC
data.cheapestOffer.legs[].departureAirport string | null Código IATA do aeroporto de partida deste voo. GRU
data.cheapestOffer.legs[].departureTime string | null Data/hora de partida deste voo, conforme retornada pela Smiles. Não presume UTC quando não há offset. 2026-11-09T09:00:00
data.cheapestOffer.legs[].flightNumber string | null Número do voo sem prefixo da companhia. Preserva zeros à esquerda quando recebidos; null quando não informado. 1001
data.cheapestOffer.legs[].marketingAirline string | null Código da companhia que comercializa este voo. Pode diferir da operadora em codeshare. G3
data.cheapestOffer.legs[].operatingAirline string | null Código da companhia que opera este voo, quando informado pela Smiles. G3
data.cheapestOffer.position number Posição da oferta mais barata no conjunto normalizado. 1
data.cheapestOffer.priceHint number | null Indicador numérico usado para ordenar ofertas em milhas. Não representa custo total em reais e não soma money ou costTax. 12500
data.cheapestOffer.pricingUid string | null Identificador de precificação da oferta. pricing-uid-1
data.cheapestOffer.sourceGDS string | null Fonte GDS retornada pelo upstream. G3
data.cheapestOffer.stops number | string | null Quantidade de escalas quando disponível. 0
data.cheapestOffer.uid string | null Identificador do voo/oferta quando retornado pela Smiles. flight-uid-1
data.departureDate string (YYYY-MM-DD) Data de ida usada na busca. 2026-11-09
data.extractedAt string (iso datetime) Data e hora em que a resposta foi normalizada. 2026-10-11T15:00:00.000Z
data.from string Código IATA de origem. GRU
data.listedOffers number Quantidade de ofertas incluídas no array offers. 2
data.numAdults number Quantidade de adultos enviada à busca. Os preços das opções não são multiplicados pelo número de passageiros pela API. 1
data.numChildren number Quantidade de crianças. 0
data.numInfants number Quantidade de bebês de colo. 0
data.offers[].airline string | null Companhia aérea ou GDS associado à oferta. G3
data.offers[].arrivalAirport string | null Aeroporto de chegada. GIG
data.offers[].arrivalTime string | null Data/hora de chegada. 2026-11-09T10:10:00
data.offers[].baggage object | null Franquia de bagagem despachada informada na busca para a oferta; null quando ausente. Não é uma validação por opção tarifária ou por passageiro: a tarifa escolhida e benefícios pessoais podem alterar a franquia. Peso, dimensões, bagagem de mão e regras completas não são retornados. {"free":false,"quantity":0}
data.offers[].baggage.free boolean | null Indicação de bagagem gratuita fornecida pela Smiles. false indica explicitamente bagagem não gratuita na oferta; null significa desconhecido. Não inclui validação de benefícios pessoais do Clube/categoria. false
data.offers[].baggage.quantity number | null Quantidade de volumes de bagagem despachada informada para a oferta. Zero é uma quantidade explícita; null significa ausente ou desconhecida. Não representa peso em kg. 0
data.offers[].cabin string | null Cabine associada à oferta. ECONOMIC
data.offers[].departureAirport string | null Aeroporto de partida. GRU
data.offers[].departureTime string | null Data/hora de partida. 2026-11-09T09:00:00
data.offers[].fareOptions[].classOfService string | null Classe de reserva quando informada. Não substitui as regras tarifárias completas. U
data.offers[].fareOptions[].costTax number | string | null Taxa adicional em reais (BRL), separada de money, quando informada. null significa taxa desconhecida, não zero. Não garante todas as cobranças da emissão, especialmente em companhias parceiras; confirme o total na Smiles. 39.9
data.offers[].fareOptions[].fareType string | null Modalidade tarifária, como SMILES, SMILES_CLUB, SMILES_MONEY, SMILES_MONEY_CLUB ou MONEY. Tarifas de Clube/categoria dependem de elegibilidade na emissão; a API não autentica a conta Smiles. SMILES_CLUB
data.offers[].fareOptions[].miles number | string | null Quantidade de milhas da opção, por passageiro e trecho da oferta; não é o total da reserva. Crianças e bebês podem ter condições específicas. 12500
data.offers[].fareOptions[].money number | string | null Componente da tarifa em reais (BRL), não em centavos. Quando há milhas, é a parcela em dinheiro do Smiles & Money. Não inclui costTax; some os dois campos conhecidos para estimar o componente em dinheiro. Não é o total da reserva. 0
data.offers[].fareOptions[].productClass string | null Código do produto tarifário quando informado. Não substitui as regras completas de bagagem, alteração ou cancelamento. PROMO
data.offers[].fareOptions[].uid string | null Identificador da opção tarifária retornado pela Smiles. fare-uid-1
data.offers[].fareType string | null Tipo da oferta/trecho retornado pela Smiles, como SEGMENT_1 ou SEGMENT_2. Para a modalidade de pagamento e elegibilidade, leia fareOptions[].fareType. SEGMENT_1
data.offers[].flightNumbers string[] Números dos voos, sem prefixo da companhia, na ordem de legs. Array vazio quando não informados; use legs para associar cada número à companhia e à conexão. ["1001"]
data.offers[].legs array Voos que compõem o itinerário da oferta, na ordem retornada pela Smiles. Array vazio quando não informados. [{"flightNumber":"1001","marketingAirline":"G3","operatingAirline":"G3","cabin":"ECONOMIC","departureAirport":"GRU","departureTime":"2026-11-09T09:00:00","arrivalAirport":"GIG","arrivalTime":"2026-11-09T10:10:00"}]
data.offers[].legs[].arrivalAirport string | null Código IATA do aeroporto de chegada deste voo. GIG
data.offers[].legs[].arrivalTime string | null Data/hora de chegada deste voo, conforme retornada pela Smiles. Não presume UTC quando não há offset. 2026-11-09T10:10:00
data.offers[].legs[].cabin string | null Cabine deste voo, quando informada. ECONOMIC
data.offers[].legs[].departureAirport string | null Código IATA do aeroporto de partida deste voo. GRU
data.offers[].legs[].departureTime string | null Data/hora de partida deste voo, conforme retornada pela Smiles. Não presume UTC quando não há offset. 2026-11-09T09:00:00
data.offers[].legs[].flightNumber string | null Número do voo sem prefixo da companhia. Preserva zeros à esquerda quando recebidos; null quando não informado. 1001
data.offers[].legs[].marketingAirline string | null Código da companhia que comercializa este voo. Pode diferir da operadora em codeshare. G3
data.offers[].legs[].operatingAirline string | null Código da companhia que opera este voo, quando informado pela Smiles. G3
data.offers[].position number Posição da oferta no array normalizado. 1
data.offers[].priceHint number | null Indicador numérico usado para ordenar ofertas em milhas. Não representa custo total em reais e não soma money ou costTax. 12500
data.offers[].pricingUid string | null Identificador de precificação da oferta. pricing-uid-1
data.offers[].sourceGDS string | null Fonte GDS retornada pelo upstream. G3
data.offers[].stops number | string | null Quantidade de escalas quando disponível. 0
data.offers[].uid string | null Identificador do voo/oferta quando retornado pela Smiles. flight-uid-1
data.parser "1.0.0" Versão estável do formato de resposta da API. 1.0.0
data.requestUrl string Mesmo valor de `data.url`; nunca expõe o endpoint interno consultado. https://www.smiles.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-11-09&returnDate=2026-11-16&numAdults=1&numChildren=0&numInfants=0&cabin=ALL
data.returnDate string | null Data de volta usada na busca quando informada. 2026-11-16
data.runtimeEnv string Ambiente Smiles resolvido para a busca. green
data.searchType string (ONE_WAY | ROUND_TRIP) Indica somente ida ou ida e volta. Cada oferta pertence a um trecho/itinerário; não representa um pacote com o total de ida e volta. ROUND_TRIP
data.source string Fonte consultada. smiles.com.br
data.to string Código IATA de destino. GIG
data.totalOffers number Quantidade de ofertas normalizadas. 2
data.type string Tipo de extração. plp
data.url string URL canônica criada a partir dos parâmetros estruturados. https://www.smiles.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-11-09&returnDate=2026-11-16&numAdults=1&numChildren=0&numInfants=0&cabin=ALL
executionId string (uuid) Identificador da execução assíncrona. 99999999-2222-4222-8222-999999999999
requestId string (uuid) Identificador da requisição de extração. 99999999-1111-4111-8111-999999999999

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.