Skip to content

// docs

Azul: Search flights

Extracts availability, itineraries and fares from Azul by origin/destination airport, dates and passengers in structured JSON. API returns trips, journeys, segments, fare families, lowest fare and flexible schedule in cash or TudoAzul points.

voeazul.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": "voeazul.com.br",
  "type": "plp",
  "from": "CNF",
  "to": "VCP",
  "departureDate": "2026-06-27",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0,
  "currency": "BRL"
}'

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

voeazul_com_br_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "voeazul_com_br_plp",
    "arguments": {
      "from": "CNF",
      "to": "VCP",
      "departureDate": "2026-06-27",
      "numAdults": 1,
      "numChildren": 0,
      "numInfants": 0,
      "currency": "BRL",
      "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: CNF). - CNF
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: VCP). - VCP
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-27
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. - 2026-07-17
target
Target source for extraction.
enum Required Always mandatory and must be voeazul.com.br. - voeazul.com.br
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always mandatory 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. Must be an integer between 0 and 9 and less than or equal to numAdults. 0 0
points
When true, the search Azul PLP returns fares in TudoAzul points.
boolean Optional When true, queries the TudoAzul endpoint and returns prices in points in the fare field pointsOptions. false true
currency
Currency for Booking, Trivago and Azul (backend default: BRL).
string (ISO 4217) Optional Currency ISO 4217 used in the search. The default is BRL. BRL BRL

Request examples

Search Azul - one way

One-way search for airports IATA with adults, children, babies and currency.

Search Azul - one way
{
  "target": "voeazul.com.br",
  "type": "plp",
  "from": "CNF",
  "to": "VCP",
  "departureDate": "2026-06-27",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0,
  "currency": "BRL"
}

Search Azul - round trip

Round-trip search for airports IATA with return data.

Search Azul - round trip
{
  "target": "voeazul.com.br",
  "type": "plp",
  "from": "GRU",
  "to": "REC",
  "departureDate": "2026-07-10",
  "returnDate": "2026-07-17",
  "numAdults": 2,
  "numChildren": 1,
  "numInfants": 0,
  "currency": "BRL"
}

Search Azul - points TudoAzul

One-way search with points=true to return price options in TudoAzul points.

Search Azul - points TudoAzul
{
  "target": "voeazul.com.br",
  "type": "plp",
  "from": "CNF",
  "to": "VCP",
  "departureDate": "2026-07-03",
  "numAdults": 1,
  "numChildren": 0,
  "numInfants": 0,
  "currency": "BRL",
  "points": true
}

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.extractedAt": "string (iso datetime)",
  "data.searchType": "string (ONE_WAY | ROUND_TRIP)",
  "data.pricingMode": "string (cash | points)",
  "data.from": "string",
  "data.to": "string",
  "data.departureDate": "string (YYYY-MM-DD)",
  "data.returnDate": "string",
  "data.numAdults": "number",
  "data.numChildren": "number",
  "data.numInfants": "number",
  "data.currency": "string",
  "data.totalResults": "number",
  "data.trips[].position": "number",
  "data.trips[].origin": "string",
  "data.trips[].destination": "string",
  "data.trips[].date": "string",
  "data.trips[].currency": "string",
  "data.trips[].flightType": "string",
  "data.trips[].region": "string",
  "data.trips[].fareInformation.lowestAmount": "number (optional)",
  "data.trips[].fareInformation.highestAmount": "number (optional)",
  "data.trips[].fareInformation.lowestPoints": "number (optional when points=true)",
  "data.trips[].fareInformation.highestPoints": "number (optional when points=true)",
  "data.trips[].totalResults": "number",
  "data.trips[].journeys[].position": "number",
  "data.trips[].journeys[].id": "string",
  "data.trips[].journeys[].journeyKey": "string",
  "data.trips[].journeys[].origin": "string",
  "data.trips[].journeys[].destination": "string",
  "data.trips[].journeys[].departure": "string (iso datetime)",
  "data.trips[].journeys[].arrival": "string (iso datetime)",
  "data.trips[].journeys[].stopsCount": "number",
  "data.trips[].journeys[].available": "boolean",
  "data.trips[].journeys[].duration": "string",
  "data.trips[].journeys[].segments[].origin": "string",
  "data.trips[].journeys[].segments[].destination": "string",
  "data.trips[].journeys[].segments[].departure": "string (iso datetime)",
  "data.trips[].journeys[].segments[].arrival": "string (iso datetime)",
  "data.trips[].journeys[].segments[].duration": "string",
  "data.trips[].journeys[].segments[].stopsCount": "number",
  "data.trips[].journeys[].segments[].flight.carrierCode": "string",
  "data.trips[].journeys[].segments[].flight.flightNumber": "string",
  "data.trips[].journeys[].segments[].flight.operatedBy": "string",
  "data.trips[].journeys[].segments[].flight.equipmentName": "string",
  "data.trips[].journeys[].segments[].flight.equipmentType": "string",
  "data.trips[].journeys[].fares[].key": "string",
  "data.trips[].journeys[].fares[].productClass.code": "string",
  "data.trips[].journeys[].fares[].productClass.category": "string",
  "data.trips[].journeys[].fares[].productClass.name": "string",
  "data.trips[].journeys[].fares[].classOfService": "string",
  "data.trips[].journeys[].fares[].cabin": "string",
  "data.trips[].journeys[].fares[].lowestFare": "boolean",
  "data.trips[].journeys[].fares[].recommended": "boolean",
  "data.trips[].journeys[].fares[].total.currency": "string (optional in points mode)",
  "data.trips[].journeys[].fares[].total.amount": "number (optional in points mode)",
  "data.trips[].journeys[].fares[].pointsOptions[].passengerType": "string (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].amountLevel": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].points": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].discountedPoints": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].fareMoney.amount": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].fareMoney.currency": "string (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].taxesAndFees.amount": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].taxesAndFees.currency": "string (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].convenienceFee.amount": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].convenienceFee.currency": "string (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].totalMoney.amount": "number (optional when points=true)",
  "data.trips[].journeys[].fares[].pointsOptions[].totalMoney.currency": "string (optional when points=true)",
  "data.trips[].journeys[].cheapestFare.key": "string",
  "data.trips[].journeys[].cheapestFare.total.currency": "string (optional in points mode)",
  "data.trips[].journeys[].cheapestFare.total.amount": "number (optional in points mode)",
  "data.flexibleDays[].origin": "string",
  "data.flexibleDays[].destination": "string",
  "data.flexibleDays[].lowestFares[].date": "string",
  "data.flexibleDays[].lowestFares[].totalLowFareAmount": "number",
  "data.flexibleDays[].lowestFares[].totalLowFarePoints": "number (optional when points=true)",
  "data.notifications[]": "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": "voeazul.com.br",
    "type": "plp",
    "parser": "1.0.0",
    "url": "https://www.voeazul.com.br/br/pt/home/selecao-voo?c%5B0%5D.ds=CNF&c%5B0%5D.std=06%2F27%2F2026&c%5B0%5D.as=VCP&p%5B0%5D.t=ADT&p%5B0%5D.c=1&p%5B0%5D.cp=false&f.dl=7&f.dr=7&cc=BRL",
    "requestUrl": "https://www.voeazul.com.br/br/pt/home/selecao-voo?c%5B0%5D.ds=CNF&c%5B0%5D.std=06%2F27%2F2026&c%5B0%5D.as=VCP&p%5B0%5D.t=ADT&p%5B0%5D.c=1&p%5B0%5D.cp=false&f.dl=7&f.dr=7&cc=BRL",
    "extractedAt": "2026-05-28T18:00:00.000Z",
    "searchType": "ONE_WAY",
    "pricingMode": "cash",
    "from": "CNF",
    "to": "VCP",
    "departureDate": "2026-06-27",
    "returnDate": "",
    "numAdults": 1,
    "numChildren": 0,
    "numInfants": 0,
    "currency": "BRL",
    "totalResults": 1,
    "trips": [
      {
        "position": 1,
        "origin": "CNF",
        "destination": "VCP",
        "date": "2026-06-27",
        "currency": "BRL",
        "flightType": "DOMESTIC",
        "region": "BRAZIL",
        "totalResults": 1,
        "journeys": [
          {
            "position": 1,
            "id": "CNF-VCP-20260627-AD1234",
            "journeyKey": "CNF|VCP|2026-06-27|AD1234",
            "origin": "CNF",
            "destination": "VCP",
            "departure": "2026-06-27T10:00:00.000Z",
            "arrival": "2026-06-27T11:15:00.000Z",
            "stopsCount": 0,
            "available": true,
            "duration": "PT1H15M",
            "segments": [
              {
                "origin": "CNF",
                "destination": "VCP",
                "departure": "2026-06-27T10:00:00.000Z",
                "arrival": "2026-06-27T11:15:00.000Z",
                "duration": "PT1H15M",
                "stopsCount": 0,
                "flight": {
                  "carrierCode": "AD",
                  "flightNumber": "1234",
                  "operatedBy": "Azul",
                  "equipmentName": "Embraer 195",
                  "equipmentType": "E95"
                }
              }
            ],
            "fares": [
              {
                "key": "CNF-VCP-AD1234-AZUL",
                "productClass": {
                  "code": "AZUL",
                  "category": "ECONOMY",
                  "name": "Azul"
                },
                "classOfService": "P",
                "cabin": "ECONOMY",
                "lowestFare": true,
                "recommended": true,
                "total": {
                  "currency": "BRL",
                  "amount": 499.9
                }
              }
            ],
            "cheapestFare": {
              "key": "CNF-VCP-AD1234-AZUL",
              "productClass": {
                "code": "AZUL",
                "category": "ECONOMY",
                "name": "Azul"
              },
              "classOfService": "P",
              "cabin": "ECONOMY",
              "lowestFare": true,
              "recommended": true,
              "total": {
                "currency": "BRL",
                "amount": 499.9
              }
            }
          }
        ]
      }
    ],
    "flexibleDays": [
      {
        "origin": "CNF",
        "destination": "VCP",
        "lowestFares": [
          {
            "date": "2026-06-27",
            "totalLowFareAmount": 499.9
          }
        ]
      }
    ],
    "notifications": [
      {
        "code": "INFO",
        "message": "example"
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.currency string Currency used in the search. BRL
data.departureDate string (YYYY-MM-DD) Departure date sent in the request. 2026-06-27
data.extractedAt string (iso datetime) Extraction time in ISO 8601. 2026-05-28T18:00:00.000Z
data.flexibleDays[].destination string Flexible calendar destination. VCP
data.flexibleDays[].lowestFares[].date string Flexible calendar date. 2026-06-27
data.flexibleDays[].lowestFares[].totalLowFareAmount number Lowest value of the day in the flexible calendar. 499.9
data.flexibleDays[].lowestFares[].totalLowFarePoints number (optional when points=true) Lowest number of day points in the flexible calendar when returned. N/A
data.flexibleDays[].origin string Flexible calendar source. CNF
data.from string Airport IATA of origin. CNF
data.notifications[] object Notifications returned by API upstream. {"code":"INFO","message":"example"}
data.numAdults number Number of adults used in the search. 1
data.numChildren number Number of children used in the search. 0
data.numInfants number Number of babies used in the search. 0
data.parser "1.0.0" Stable version of the API response format. 1.0.0
data.pricingMode string (cash | points) Price mode used in the query: cash to cash or points to TudoAzul. cash
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://www.voeazul.com.br/br/pt/home/selecao-voo?c%5B0%5D.ds=CNF&c%5B0%5D.std=06%2F27%2F2026&c%5B0%5D.as=VCP&p%5B0%5D.t=ADT&p%5B0%5D.c=1&p%5B0%5D.cp=false&f.dl=7&f.dr=7&cc=BRL
data.returnDate string Return date sent in the request, if any.
data.searchType string (ONE_WAY | ROUND_TRIP) ONE_WAY when there is no returnDate; ROUND_TRIP when there is a return. ONE_WAY
data.source string Source consulted. voeazul.com.br
data.to string Destination airport IATA. VCP
data.totalResults number Total number of standard shifts. 1
data.trips[].currency string Currency of trip fares. BRL
data.trips[].date string Travel date. 2026-06-27
data.trips[].destination string Travel destination. VCP
data.trips[].fareInformation.highestAmount number (optional) Highest cash value reported by Azul when available. N/A
data.trips[].fareInformation.highestPoints number (optional when points=true) Highest price in TudoAzul points reported by Azul when points=true. N/A
data.trips[].fareInformation.lowestAmount number (optional) Lowest cash value reported by Azul when available. N/A
data.trips[].fareInformation.lowestPoints number (optional when points=true) Lowest price in TudoAzul points reported by Azul when points=true. N/A
data.trips[].flightType string Flight type returned by Azul. DOMESTIC
data.trips[].journeys[].arrival string (iso datetime) Journey arrival date/time. 2026-06-27T11:15:00.000Z
data.trips[].journeys[].available boolean Indicates whether the journey is available. true
data.trips[].journeys[].cheapestFare.key string Key for the lowest fare on the journey. CNF-VCP-AD1234-AZUL
data.trips[].journeys[].cheapestFare.total.amount number (optional in points mode) Value of the lowest fare. 499.9
data.trips[].journeys[].cheapestFare.total.currency string (optional in points mode) Currency of the lowest fare. BRL
data.trips[].journeys[].departure string (iso datetime) Journey departure date/time. 2026-06-27T10:00:00.000Z
data.trips[].journeys[].destination string Journey destination. VCP
data.trips[].journeys[].duration string Total duration of the journey. PT1H15M
data.trips[].journeys[].fares[].cabin string Fare booth. ECONOMY
data.trips[].journeys[].fares[].classOfService string Class of service. P
data.trips[].journeys[].fares[].key string Technical tariff key. CNF-VCP-AD1234-AZUL
data.trips[].journeys[].fares[].lowestFare boolean Indicates whether the fare is the lowest on the journey. true
data.trips[].journeys[].fares[].pointsOptions[].amountLevel number (optional when points=true) Level of the points + money combination returned by Azul. N/A
data.trips[].journeys[].fares[].pointsOptions[].convenienceFee.amount number (optional when points=true) Option cash convenience fee in points. N/A
data.trips[].journeys[].fares[].pointsOptions[].convenienceFee.currency string (optional when points=true) Convenience fee currency. N/A
data.trips[].journeys[].fares[].pointsOptions[].discountedPoints number (optional when points=true) Number of points after discount, if applicable. N/A
data.trips[].journeys[].fares[].pointsOptions[].fareMoney.amount number (optional when points=true) Cash installment of the fare in the points + cash combination. N/A
data.trips[].journeys[].fares[].pointsOptions[].fareMoney.currency string (optional when points=true) Currency of the cash installment of the fare. N/A
data.trips[].journeys[].fares[].pointsOptions[].passengerType string (optional when points=true) Option passenger type in points. N/A
data.trips[].journeys[].fares[].pointsOptions[].points number (optional when points=true) Number of points before discounts. N/A
data.trips[].journeys[].fares[].pointsOptions[].taxesAndFees.amount number (optional when points=true) Option cash fees in points. N/A
data.trips[].journeys[].fares[].pointsOptions[].taxesAndFees.currency string (optional when points=true) Option fee currency in points. N/A
data.trips[].journeys[].fares[].pointsOptions[].totalMoney.amount number (optional when points=true) Total cash charged to points. N/A
data.trips[].journeys[].fares[].pointsOptions[].totalMoney.currency string (optional when points=true) Currency of the total money charged to points. N/A
data.trips[].journeys[].fares[].productClass.category string Tariff family category. ECONOMY
data.trips[].journeys[].fares[].productClass.code string Tariff family code. AZUL
data.trips[].journeys[].fares[].productClass.name string Name of the tariff family. Azul
data.trips[].journeys[].fares[].recommended boolean Indicates whether the rate is recommended. true
data.trips[].journeys[].fares[].total.amount number (optional in points mode) Total fare amount. 499.9
data.trips[].journeys[].fares[].total.currency string (optional in points mode) Currency of the total fare. BRL
data.trips[].journeys[].id string Journey identifier. CNF-VCP-20260627-AD1234
data.trips[].journeys[].journeyKey string Journey technical key. CNF|VCP|2026-06-27|AD1234
data.trips[].journeys[].origin string Journey origin. CNF
data.trips[].journeys[].position number Journey position on the trip. 1
data.trips[].journeys[].segments[].arrival string (iso datetime) Segment arrival date/time. 2026-06-27T11:15:00.000Z
data.trips[].journeys[].segments[].departure string (iso datetime) Segment departure date/time. 2026-06-27T10:00:00.000Z
data.trips[].journeys[].segments[].destination string Segment destination. VCP
data.trips[].journeys[].segments[].duration string Segment duration. PT1H15M
data.trips[].journeys[].segments[].flight.carrierCode string Company code in the segment. AD
data.trips[].journeys[].segments[].flight.equipmentName string Aircraft name when returned. Embraer 195
data.trips[].journeys[].segments[].flight.equipmentType string Aircraft type when returned. E95
data.trips[].journeys[].segments[].flight.flightNumber string Flight number in the segment. 1234
data.trips[].journeys[].segments[].flight.operatedBy string Flight operator in the segment. Azul
data.trips[].journeys[].segments[].origin string Segment origin. CNF
data.trips[].journeys[].segments[].stopsCount number Number of stops in the segment. 0
data.trips[].journeys[].stopsCount number Number of stops or connections. 0
data.trips[].origin string Origin of trip. CNF
data.trips[].position number Travel position in response. 1
data.trips[].region string Region returned by Azul. BRAZIL
data.trips[].totalResults number Number of journeys on the trip. 1
data.type string Type of the executed API. plp
data.url string URL publishes canonical search query Azul. https://www.voeazul.com.br/br/pt/home/selecao-voo?c%5B0%5D.ds=CNF&c%5B0%5D.std=06%2F27%2F2026&c%5B0%5D.as=VCP&p%5B0%5D.t=ADT&p%5B0%5D.c=1&p%5B0%5D.cp=false&f.dl=7&f.dr=7&cc=BRL
executionId string (uuid) Idempotent execution identifier. 99999999-2222-4222-8222-999999999999
requestId string (uuid) Request identifier at the GeckoAPI 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.