// docs

Smiles Flights Search

Extrai ofertas de passagens da Smiles por aeroporto de origem/destino, datas e passageiros. A API consulta o endpoint mobile de flight search e retorna opções normalizadas com pontos, taxas, horários e trechos em JSON estruturado.

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. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

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-06-20",
  "returnDate": "2026-06-27",
  "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-06-20",
      "returnDate": "2026-06-27",
      "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, 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, 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, KAYAK, MaxMilhas e 123Milhas.
string (YYYY-MM-DD) Obrigatório Data de ida no formato YYYY-MM-DD. - 2026-05-17
returnDate
Data de retorno opcional para busca PLP da ClickBus, Decolar, GOL, Azul, LATAM, 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-05-20
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatório e deve ser smiles.com.br. - mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, quote, review ou places.
enum Obrigatório Sempre obrigatório e deve ser plp. - pdp
numAdults
Quantidade de adultos para Booking, Airbnb, Hoteis.com, Decolar, GOL, Azul e LATAM.
integer (1-30) Opcional Quantidade de adultos. Deve ser inteiro entre 1 e 9. 1 2
numChildren
Quantidade de criancas para Booking, Hoteis.com, Decolar, GOL, Azul e LATAM.
integer (0-30) Opcional Quantidade de crianças. Deve ser inteiro entre 0 e 9. 0 0
numInfants
Quantidade de bebes para GOL, Azul e LATAM 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-06-20",
  "returnDate": "2026-06-27",
  "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-07-10",
  "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": "string",
  "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"
}

Exemplo de response

responseExample
{
  "requestId": "99999999-1111-4111-8111-999999999999",
  "executionId": "99999999-2222-4222-8222-999999999999",
  "data": {
    "source": "smiles.com.br",
    "type": "plp",
    "parser": "smiles_flightsearch_json_api",
    "url": "https://www.smiles.com.br/passagens-aereas?from=GRU&to=GIG&departureDate=2026-06-20&returnDate=2026-06-27&numAdults=1&numChildren=0&numInfants=0&cabin=ALL",
    "requestUrl": "https://api-air-flightsearch-green.smiles.com.br/v1/airlines/search?cabin=ALL&originAirportCode=GRU&destinationAirportCode=GIG&departureDate=2026-06-20&returnDate=2026-06-27&memberNumber=&adults=1&children=0&infants=0&forceCongener=false",
    "extractedAt": "2026-05-28T15: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": "ALL",
    "runtimeEnv": "green",
    "totalOffers": 2,
    "listedOffers": 2,
    "cheapestOffer": {
      "position": 1,
      "uid": "flight-uid-1",
      "pricingUid": "pricing-uid-1",
      "fareType": "SMILES_CLUB",
      "airline": "G3",
      "cabin": "ECONOMIC",
      "stops": 0,
      "sourceGDS": "G3",
      "departureAirport": "GRU",
      "departureTime": "2026-06-20T09:00:00",
      "arrivalAirport": "GIG",
      "arrivalTime": "2026-06-20T10:10:00",
      "priceHint": 12500,
      "fareOptions": [
        {
          "uid": "fare-uid-1",
          "fareType": "SMILES_CLUB",
          "miles": 12500,
          "money": 0,
          "costTax": 39.9,
          "productClass": "PROMO",
          "classOfService": "U"
        }
      ]
    },
    "offers": [
      {
        "position": 1,
        "uid": "flight-uid-1",
        "pricingUid": "pricing-uid-1",
        "fareType": "SMILES_CLUB",
        "airline": "G3",
        "cabin": "ECONOMIC",
        "stops": 0,
        "sourceGDS": "G3",
        "departureAirport": "GRU",
        "departureTime": "2026-06-20T09:00:00",
        "arrivalAirport": "GIG",
        "arrivalTime": "2026-06-20T10:10:00",
        "priceHint": 12500,
        "fareOptions": [
          {
            "uid": "fare-uid-1",
            "fareType": "SMILES_CLUB",
            "miles": 12500,
            "money": 0,
            "costTax": 39.9,
            "productClass": "PROMO",
            "classOfService": "U"
          }
        ]
      },
      {
        "position": 2,
        "uid": "flight-uid-2",
        "pricingUid": "pricing-uid-2",
        "fareType": "STANDARD",
        "airline": "G3",
        "cabin": "ECONOMIC",
        "stops": 1,
        "sourceGDS": "G3",
        "departureAirport": "GRU",
        "departureTime": "2026-06-20T13:20:00",
        "arrivalAirport": "GIG",
        "arrivalTime": "2026-06-20T16:05:00",
        "priceHint": 15800,
        "fareOptions": [
          {
            "uid": "fare-uid-2",
            "fareType": "STANDARD",
            "miles": 15800,
            "money": 0,
            "costTax": 39.9,
            "productClass": "LIGHT",
            "classOfService": "X"
          }
        ]
      }
    ]
  }
}

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-06-20T10:10:00
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-06-20T09:00:00
data.cheapestOffer.fareOptions[].costTax number | string | null Taxas da opção tarifária. 39.9
data.cheapestOffer.fareOptions[].fareType string | null Tipo da opção tarifária. SMILES_CLUB
data.cheapestOffer.fareOptions[].miles number | string | null Preço em milhas/pontos quando disponível. 12500
data.cheapestOffer.fareOptions[].money number | string | null Componente em dinheiro quando disponível. 0
data.cheapestOffer.fareType string | null Tipo de tarifa da oferta. SMILES_CLUB
data.cheapestOffer.position number Posição da oferta mais barata no conjunto normalizado. 1
data.cheapestOffer.priceHint number | null Valor numérico usado para ordenar ofertas por menor preço em pontos. 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-06-20
data.extractedAt string (iso datetime) Data e hora em que a resposta foi normalizada. 2026-05-28T15: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. 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-06-20T10:10:00
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-06-20T09:00:00
data.offers[].fareOptions[].costTax number | string | null Taxas da opção tarifária. 39.9
data.offers[].fareOptions[].fareType string | null Tipo da opção tarifária. SMILES_CLUB
data.offers[].fareOptions[].miles number | string | null Preço em milhas/pontos quando disponível. 12500
data.offers[].fareOptions[].money number | string | null Componente em dinheiro quando disponível. 0
data.offers[].fareType string | null Tipo de tarifa da oferta. SMILES_CLUB
data.offers[].position number Posição da oferta no array normalizado. 1
data.offers[].priceHint number | null Valor numérico usado para ordenar ofertas por menor preço em pontos. 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 string Parser interno usado para normalizar a resposta. smiles_flightsearch_json_api
data.requestUrl string Endpoint upstream consultado pela API. https://api-air-flightsearch-green.smiles.com.br/v1/airlines/search?cabin=ALL&originAirportCode=GRU&destinationAirportCode=GIG&departureDate=2026-06-20&returnDate=2026-06-27&memberNumber=&adults=1&children=0&infants=0&forceCongener=false
data.returnDate string | null Data de volta usada na busca quando informada. 2026-06-27
data.runtimeEnv string Ambiente Smiles resolvido para a busca. green
data.searchType string (ONE_WAY | ROUND_TRIP) Indica se a busca é somente ida ou 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-06-20&returnDate=2026-06-27&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.