Skip to content

// docs

ClickBus: Search bus trips

Extracts list of bus trips from ClickBus by origin/destination (city + UF) and departure data, with optional return and page.

clickbus.com.br:plp · 1 credit per request

Standard credit cost. Your account pricing is shown in the sandbox.

Try this operation in the sandbox

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": "clickbus.com.br",
  "type": "plp",
  "originCity": "Foz do Iguacu",
  "originState": "PR",
  "destinationCity": "Sao Paulo",
  "destinationState": "SP",
  "departureDate": "2026-02-24",
  "page": 1
}'

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

clickbus_com_br_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "clickbus_com_br_plp",
    "arguments": {
      "originCity": "Foz do Iguacu",
      "originState": "PR",
      "destinationCity": "Sao Paulo",
      "destinationState": "SP",
      "departureDate": "2026-02-24",
      "page": 1,
      "executionId": "exec_example_123"
    }
  }
}

Supported inputs

Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.

FieldTypeRequirementRuleDefaultExample
originCity
City of origin for PLP search of ClickBus.
string Required Route origin city (will be normalized to slug in URL upstream). - Foz do Iguacu
originState
Source UF for searching PLP from ClickBus (format XX).
string (UF 2 letters) Required UF source in XX format (ex: PR, SP, RJ). - PR
destinationCity
Destination city for searching PLP from ClickBus.
string Required Route destination city (will be normalized to slug in URL upstream). - Sao Paulo
destinationState
UF target for searching PLP from ClickBus (format XX).
string (UF 2 letters) Required Target UF in the format XX (ex: PR, SP, RJ). - SP
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-02-24
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 >= departureDate. - 2026-02-25
target
Target source for extraction.
enum Required Always mandatory and must be clickbus.com.br. - clickbus.com.br
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always mandatory and must be plp. - plp
page
Pagination. In PLP, including Trivago, and in Reclame AQUI ILP starts in 1; in review (MercadoLivre, Booking and Hotels) starts in 0. The Reclame AQUI ILP even accepts the page 100.
integer Optional Paginacao 1-based. 1 1

Request examples

Search ClickBus - one way

Searches for trips by origin and destination with a departure date.

Search ClickBus - one way
{
  "target": "clickbus.com.br",
  "type": "plp",
  "originCity": "Foz do Iguacu",
  "originState": "PR",
  "destinationCity": "Sao Paulo",
  "destinationState": "SP",
  "departureDate": "2026-02-24",
  "page": 1
}

Search ClickBus - round trip

Search with optional return data and page 2.

Search ClickBus - round trip
{
  "target": "clickbus.com.br",
  "type": "plp",
  "originCity": "Cascavel",
  "originState": "PR",
  "destinationCity": "Rio de Janeiro",
  "destinationState": "RJ",
  "departureDate": "2026-02-24",
  "returnDate": "2026-02-25",
  "page": 2
}

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)",
  "notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
  "data.source": "string",
  "data.type": "string",
  "data.parser": "\"1.0.0\"",
  "data.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.originCity": "string",
  "data.originState": "string",
  "data.destinationCity": "string",
  "data.destinationState": "string",
  "data.departureDate": "string (YYYY-MM-DD)",
  "data.returnDate": "string (YYYY-MM-DD)",
  "data.totalResults": "number",
  "data.primaryResults": "number",
  "data.page": "number",
  "data.resultsPerPage": "number",
  "data.offset": "number",
  "data.nextPage": "number",
  "data.nextPageUrl": "string",
  "data.items[].position": "number",
  "data.items[].id": "string",
  "data.items[].type": "string",
  "data.items[].currency": "string",
  "data.items[].price": "number",
  "data.items[].discountedPrice": "number",
  "data.items[].maxInstallments": "number",
  "data.items[].availableSeats": "number",
  "data.items[].totalSeats": "number",
  "data.items[].lowFareAvailableSeats": "number",
  "data.items[].durationText": "string",
  "data.items[].durationDays": "number",
  "data.items[].departure.date": "string",
  "data.items[].departure.time": "string",
  "data.items[].departure.dateTime": "string (iso datetime)",
  "data.items[].departure.place.id": "number",
  "data.items[].departure.place.name": "string",
  "data.items[].departure.place.slug": "string",
  "data.items[].departure.place.city": "string",
  "data.items[].departure.place.state": "string",
  "data.items[].departure.place.terminal": "string",
  "data.items[].departure.place.terminalAddress": "string",
  "data.items[].arrival.date": "string",
  "data.items[].arrival.time": "string",
  "data.items[].arrival.dateTime": "string (iso datetime)",
  "data.items[].arrival.place.id": "number",
  "data.items[].arrival.place.name": "string",
  "data.items[].arrival.place.slug": "string",
  "data.items[].arrival.place.city": "string",
  "data.items[].arrival.place.state": "string",
  "data.items[].arrival.place.terminal": "string",
  "data.items[].arrival.place.terminalAddress": "string",
  "data.items[].travelCompany.id": "number",
  "data.items[].travelCompany.name": "string",
  "data.items[].travelCompany.slug": "string",
  "data.items[].travelCompany.logo": "string",
  "data.items[].serviceClass.id": "number",
  "data.items[].serviceClass.name": "string",
  "data.items[].anttServiceClass.id": "number",
  "data.items[].anttServiceClass.name": "string",
  "data.items[].busFeatures[]": "string",
  "data.items[].seatReclineDegrees": "number",
  "data.items[].hasBoardingPass": "boolean",
  "data.items[].hasElectronicBoardingPass": "boolean",
  "data.items[].isLowFare": "boolean",
  "data.items[].isReservable": "boolean",
  "data.items[].discountAvailable": "boolean",
  "data.items[].hasGratuity": "boolean",
  "data.items[].isGratuityTrip": "boolean",
  "data.items[].tripChangeAvailable": "boolean",
  "data.items[].tripChangeFee": "boolean"
}

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": "12b2ce4f-d5f0-4b8f-83b1-bf056beaa001",
  "executionId": "12b2ce4f-d5f0-4b8f-83b1-bf056beaa002",
  "data": {
    "source": "clickbus.com.br",
    "type": "plp",
    "parser": "1.0.0",
    "url": "https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj",
    "requestUrl": "https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj",
    "extractedAt": "2026-02-22T22:15:00.000Z",
    "originCity": "Cascavel",
    "originState": "PR",
    "destinationCity": "Rio de Janeiro",
    "destinationState": "RJ",
    "departureDate": "2026-02-24",
    "returnDate": "2026-02-25",
    "totalResults": 25,
    "primaryResults": 20,
    "page": 1,
    "resultsPerPage": 20,
    "offset": 0,
    "nextPage": 2,
    "nextPageUrl": "https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj?departureDate=2026-02-24&returnDate=2026-02-25&page=2",
    "items": [
      {
        "position": 1,
        "id": "2423332e-b514-352c-94c2-8f73ed2f93d8",
        "type": "direct",
        "currency": "BRL",
        "price": 634.99,
        "discountedPrice": 539.99,
        "maxInstallments": 4,
        "availableSeats": 1,
        "totalSeats": 8,
        "lowFareAvailableSeats": 1,
        "durationText": "1d 3h 10m",
        "durationDays": 1,
        "departure": {
          "date": "2026-02-24",
          "time": "13:45:00",
          "dateTime": "2026-02-24T13:45:00.000Z",
          "place": {
            "id": 2581,
            "name": "Cascavel, PR",
            "slug": "cascavel-pr",
            "city": "Cascavel",
            "state": "PR",
            "terminal": "Cascavel - Rodoviaria",
            "terminalAddress": "Av. Assuncao, 1757 - Alto Alegre | Cascavel, PR"
          }
        },
        "arrival": {
          "date": "2026-02-25",
          "time": "16:55:00",
          "dateTime": "2026-02-25T16:55:00.000Z",
          "place": {
            "id": 3827,
            "name": "Rio de Janeiro, RJ - Rodoviaria do Rio",
            "slug": "rio-de-janeiro-rj",
            "city": "Rio de Janeiro",
            "state": "RJ",
            "terminal": "Rio de Janeiro - Rodoviaria Novo Rio",
            "terminalAddress": "Av Francisco Bicalho, 1 - Santo Cristo - Rio de Janeiro - RJ"
          }
        },
        "travelCompany": {
          "id": 6,
          "name": "Catarinense",
          "slug": "catarinense",
          "logo": "https://static.clickbus.com/live/travel-company-logos/catarinense.svg"
        },
        "serviceClass": {
          "id": 5,
          "name": "Cama"
        },
        "anttServiceClass": {
          "id": 5,
          "name": "Cama"
        },
        "busFeatures": [
          "airConditioning",
          "bathroom"
        ],
        "seatReclineDegrees": 170,
        "hasBoardingPass": true,
        "hasElectronicBoardingPass": true,
        "isLowFare": true,
        "isReservable": true,
        "discountAvailable": false,
        "hasGratuity": true,
        "isGratuityTrip": false,
        "tripChangeAvailable": false,
        "tripChangeFee": false
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.departureDate string (YYYY-MM-DD) Departure date applied in the search. 2026-02-24
data.destinationCity string Destination city normalized in the result. Rio de Janeiro
data.destinationState string UF normalized in the result. RJ
data.extractedAt string (iso datetime) Extraction timestamp UTC. 2026-02-22T22:15:00.000Z
data.items[].anttServiceClass.id number Service class ANTT ID. 5
data.items[].anttServiceClass.name string Class name ANTT of the service. Cama
data.items[].arrival.date string Trip arrival date. 2026-02-25
data.items[].arrival.dateTime string (iso datetime) Combined arrival datetime UTC. 2026-02-25T16:55:00.000Z
data.items[].arrival.place.city string City of arrival point. Rio de Janeiro
data.items[].arrival.place.id number ID from the landing point. 3827
data.items[].arrival.place.name string Name of the disembarkation point. Rio de Janeiro, RJ - Rodoviaria do Rio
data.items[].arrival.place.slug string Arrival point slug. rio-de-janeiro-rj
data.items[].arrival.place.state string UF from the landing point. RJ
data.items[].arrival.place.terminal string Name of the arrivals terminal. Rio de Janeiro - Rodoviaria Novo Rio
data.items[].arrival.place.terminalAddress string Textual address of the arrival terminal. Av Francisco Bicalho, 1 - Santo Cristo - Rio de Janeiro - RJ
data.items[].arrival.time string Trip arrival time. 16:55:00
data.items[].availableSeats number Seats available for the trip. 1
data.items[].busFeatures[] string List of amenities available on the bus. airConditioning
data.items[].currency string Fare currency. BRL
data.items[].departure.date string Trip departure date. 2026-02-24
data.items[].departure.dateTime string (iso datetime) Datetime UTC match date. 2026-02-24T13:45:00.000Z
data.items[].departure.place.city string City of boarding point. Cascavel
data.items[].departure.place.id number ID of the boarding point. 2581
data.items[].departure.place.name string Boarding point name. Cascavel, PR
data.items[].departure.place.slug string Boarding point slug. cascavel-pr
data.items[].departure.place.state string UF of the boarding point. PR
data.items[].departure.place.terminal string Name of the departure terminal. Cascavel - Rodoviaria
data.items[].departure.place.terminalAddress string Textual address of the departure terminal. Av. Assuncao, 1757 - Alto Alegre | Cascavel, PR
data.items[].departure.time string Trip departure time. 13:45:00
data.items[].discountAvailable boolean Indicates whether there is a discount applicable to the trip. false
data.items[].discountedPrice number Promotional rate when available. 539.99
data.items[].durationDays number Number of days during the trip. 1
data.items[].durationText string Textual duration of the trip. 1d 3h 10m
data.items[].hasBoardingPass boolean Indicates whether a boarding ticket is available. true
data.items[].hasElectronicBoardingPass boolean Indicates whether there is an electronic boarding pass. true
data.items[].hasGratuity boolean Indicates whether the trip is free. true
data.items[].id string Unique main trip identifier (trip uuid). 2423332e-b514-352c-94c2-8f73ed2f93d8
data.items[].isGratuityTrip boolean Indicates whether the trip is free. false
data.items[].isLowFare boolean Indicates whether the trip is in low fare mode. true
data.items[].isReservable boolean Indicates whether the trip allows reservation. true
data.items[].lowFareAvailableSeats number Seats available in low fare mode. 1
data.items[].maxInstallments number Maximum number of installments. 4
data.items[].position number Absolute position of the trip in the listing. 1
data.items[].price number Base trip fare. 634.99
data.items[].seatReclineDegrees number Degree of seat inclination when informed by upstream. 170
data.items[].serviceClass.id number ID. 5
data.items[].serviceClass.name string Name of the commercial class of the service. Cama
data.items[].totalSeats number Total seating capacity on the bus. 8
data.items[].travelCompany.id number ID of the vehicle. 6
data.items[].travelCompany.logo string URL of the vehicle logo. https://static.clickbus.com/live/travel-company-logos/catarinense.svg
data.items[].travelCompany.name string Name of the vehicle. Catarinense
data.items[].travelCompany.slug string Vehicle slug. catarinense
data.items[].tripChangeAvailable boolean Indicates whether ticket exchange is available. false
data.items[].tripChangeFee boolean Indicates whether ticket exchange has a fee. false
data.items[].type string Trip type (ex: direct). direct
data.nextPage number Number of the next page, if any. 2
data.nextPageUrl string URL builder for the next page, if any. https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj?departureDate=2026-02-24&returnDate=2026-02-25&page=2
data.offset number Offset 0-based from the current page. 0
data.originCity string City of origin normalized in the result. Cascavel
data.originState string UF of normalized origin in the result. PR
data.page number Page returned. 1
data.parser "1.0.0" Stable version of the API response format. 1.0.0
data.primaryResults number Number of trips in the current page clipping. 20
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj
data.resultsPerPage number Page size applied by the backend. 20
data.returnDate string (YYYY-MM-DD) Return date applied in the search when informed. 2026-02-25
data.source string Extraction source. clickbus.com.br
data.totalResults number Total number of trips returned by upstream. 25
data.type string Extraction type. plp
data.url string URL canonical of the queried route. https://www.clickbus.com.br/onibus/cascavel-pr/rio-de-janeiro-rj
executionId string (uuid) Field executionId returned in the response payload. 12b2ce4f-d5f0-4b8f-83b1-bf056beaa002
notFound boolean (optional; true when the upstream entity was not found and data is null) Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. N/A
requestId string (uuid) Field requestId returned in the response payload. 12b2ce4f-d5f0-4b8f-83b1-bf056beaa001

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.