API Smiles: busca de passagens em milhas (PLP)
Envie origem, destino, data de ida e passageiros para consultar ofertas da Smiles. Receba offers e cheapestOffer com companhia, horários, escalas e opções tarifárias em fareOptions: milhas, componente em dinheiro e taxas quando disponíveis. Inclua returnDate para uma busca de ida e volta.
GeckoAPI é uma API independente e não é afiliada, patrocinada ou endossada por Smiles.com.br.
Não precisa de cartão de crédito.
Use target: "smiles.com.br" e type: "plp". from, to e departureDate são obrigatórios; returnDate e passageiros são opcionais. Os campos url e page não são aceitos. Cada consulta custa 5 créditos.
// busca_de_passagens_plp
Consulte a rota e as datas; receba as ofertas em milhas
O endpoint smiles.com.br:plp recebe parâmetros estruturados de busca. Use códigos IATA de três letras para origem e destino e datas no formato YYYY-MM-DD. Com returnDate, a busca é de ida e volta; sem esse campo, é somente ida.
Cada consulta custa 5 créditos. 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. Os exemplos de resposta são ilustrativos: ofertas, milhas e taxas dependem da busca e da disponibilidade informada pela Smiles.
Campos aceitos na requisição
| Campo | Uso | Regra |
|---|---|---|
| url | Não aceito | URL manual não é suportada. Informe from, to, departureDate, returnDate opcional e passageiros; o backend monta a busca suportada. |
| from | Obrigatório | Código IATA do aeroporto de origem com 3 letras (ex: GRU). |
| to | Obrigatório | Código IATA do aeroporto de destino com 3 letras (ex: GIG). |
| departureDate | Obrigatório | Data de ida no formato YYYY-MM-DD. |
| returnDate | Opcional | Data de volta no formato YYYY-MM-DD. Deve ser maior ou igual a departureDate. Quando omitida, a busca é one-way. |
| numAdults | Opcional | Quantidade de adultos. Deve ser inteiro entre 1 e 9. |
| numChildren | Opcional | Quantidade de crianças. Deve ser inteiro entre 0 e 9. |
| numInfants | Opcional | Quantidade de bebês de colo. Deve ser inteiro entre 0 e 9 e menor ou igual a numAdults. |
| target | Obrigatório | Sempre obrigatório e deve ser smiles.com.br. |
| type | Obrigatório | Sempre obrigatório e deve ser plp. |
| page | Não aceito | Paginação manual não é suportada para esta busca. |
Somente ida: omita returnDate
Exemplo de corpo JSON para POST /v1/extract. Ajuste a rota, a data e os passageiros antes de enviar.
{
"target": "smiles.com.br",
"type": "plp",
"from": "CGH",
"to": "SDU",
"departureDate": "2026-11-14",
"numAdults": 2,
"numChildren": 0,
"numInfants": 0
} // sample_response
Prévia da resposta do endpoint
Versão resumida do JSON retornado pela API de Smiles.com.br, mostrando só os campos mais úteis para entender o formato da resposta. Alguns atributos opcionais podem vir como null.
{
"data": {
"source": "smiles.com.br",
"type": "plp",
"searchType": "ROUND_TRIP",
"from": "GRU",
"to": "GIG",
"departureDate": "2026-11-09",
"returnDate": "2026-11-16",
"totalOffers": 2,
"listedOffers": 2,
"cheapestOffer": {
"airline": "G3",
"cabin": "ECONOMIC",
"stops": 0,
"departureAirport": "GRU",
"departureTime": "2026-11-09T09:00:00",
"arrivalAirport": "GIG",
"arrivalTime": "2026-11-09T10:10:00",
"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
},
"priceHint": 12500,
"fareOptions": [
{
"fareType": "SMILES_CLUB",
"miles": 12500,
"money": 0,
"costTax": 39.9
}
]
},
"offers": [
{
"airline": "G3",
"cabin": "ECONOMIC",
"stops": 0,
"departureAirport": "GRU",
"departureTime": "2026-11-09T09:00:00",
"arrivalAirport": "GIG",
"arrivalTime": "2026-11-09T10:10:00",
"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
},
"priceHint": 12500,
"fareOptions": [
{
"fareType": "SMILES_CLUB",
"miles": 12500,
"money": 0,
"costTax": 39.9
}
]
},
{
"airline": "G3",
"cabin": "ECONOMIC",
"stops": 1,
"departureAirport": "GRU",
"departureTime": "2026-11-09T13:20:00",
"arrivalAirport": "GIG",
"arrivalTime": "2026-11-09T16:05:00",
"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
},
"priceHint": 15800,
"fareOptions": [
{
"fareType": "SMILES",
"miles": 15800,
"money": 0,
"costTax": 39.9
}
]
}
]
}
} // para_quem_serve
Para quem serve
Comparação de tarifas
Acompanhe ofertas Smiles por rota, data e composição de passageiros.
Travel apps e metabusca
Integre resultados de passagens e milhas em produtos de viagem sem manter scraping próprio.
Alertas de preço
Monitore menor oferta em pontos por rota e envie notificações quando houver mudança.
BI de aviação
Analise oferta, horários, escalas, taxas e distribuição de pontos em JSON padronizado.
Agentes de viagem com IA
Use MCP para responder perguntas sobre ofertas Smiles com dados atuais e verificáveis.
Automação operacional
Alimente dashboards, ETLs e rotinas internas com ofertas de voo estruturadas.
// como_funciona
Como funciona
Crie sua conta
Acesse o dashboard e gere sua chave de API.
Chame a API
Envie POST /v1/extract com target "smiles.com.br", type "plp", from, to e departureDate. Inclua returnDate e passageiros quando necessário. Não envie url nem page.
Receba JSON
Leia data.offers e data.cheapestOffer. Cada oferta pode incluir fareOptions com miles, money e costTax, além de números dos voos, companhias por conexão, horários e bagagem informada na busca.
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-14",
"returnDate": "2026-11-21",
"numAdults": 1,
"numChildren": 0,
"numInfants": 0
}' // integracao_ia
Integre com IA (MCP)
Conecte agentes de IA à GeckoAPI e seu chatbot responde com dados reais de Smiles.com.br.
// exemplos de perguntas que seu agente pode responder:
"Quais são as ofertas mais baratas na Smiles nessa rota?"
"Existe voo direto de GRU para GIG nessas datas?"
"Mostre pontos, taxas e horários para essa busca."
"Qual a menor oferta Smiles para ida e volta com 1 adulto?"
Fluxo: Chatbot → Agente MCP → GeckoAPI → Resposta com dados
Quais dados a API Smiles retorna?
As ofertas ficam em data.offers[]. As opções tarifárias de cada oferta ficam em fareOptions[]: miles informa milhas ou pontos; money, o componente em dinheiro; e costTax, as taxas, quando disponíveis. Preserve esses valores separadamente na sua integração.
data.cheapestOffer destaca a menor oferta no conjunto normalizado. Seu priceHint é usado para ordenar as ofertas por pontos; não é um preço final em reais. Campos como cabin aparecem na resposta, mas não são parâmetros de entrada documentados para este endpoint.
| Campo de resposta | Descrição da documentação |
|---|---|
| data.searchType | 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. |
| data.totalOffers | Quantidade de ofertas normalizadas. |
| data.listedOffers | Quantidade de ofertas incluídas no array offers. |
| data.offers[].airline | Companhia aérea ou GDS associado à oferta. |
| data.offers[].cabin | Cabine associada à oferta. |
| data.offers[].stops | Quantidade de escalas quando disponível. |
| data.offers[].departureAirport | Aeroporto de partida. |
| data.offers[].departureTime | Data/hora de partida. |
| data.offers[].arrivalAirport | Aeroporto de chegada. |
| data.offers[].arrivalTime | Data/hora de chegada. |
| data.offers[].flightNumbers | 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. |
| data.offers[].legs[].flightNumber | Número do voo sem prefixo da companhia. Preserva zeros à esquerda quando recebidos; null quando não informado. |
| data.offers[].legs[].marketingAirline | Código da companhia que comercializa este voo. Pode diferir da operadora em codeshare. |
| data.offers[].legs[].operatingAirline | Código da companhia que opera este voo, quando informado pela Smiles. |
| data.offers[].baggage | 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. |
| data.offers[].baggage.free | 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. |
| data.offers[].baggage.quantity | 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. |
| data.offers[].fareOptions[].fareType | 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. |
| data.offers[].fareOptions[].miles | 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. |
| data.offers[].fareOptions[].money | 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. |
| data.offers[].fareOptions[].costTax | 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. |
| data.cheapestOffer.priceHint | Indicador numérico usado para ordenar ofertas em milhas. Não representa custo total em reais e não soma money ou costTax. |
Comece a usar a API de Smiles.com.br
Crie sua conta e comece grátis. Sem cartão necessário.