Skip to content

// docs

Airbnb: Search stays

Extracts accommodation listing from Airbnb by destination and period, with optional filter by latitude/longitude.

airbnb.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 '{
  "address": "curitiba",
  "startDate": "2026-02-20",
  "endDate": "2026-02-22",
  "numAdults": 2,
  "page": 1,
  "type": "plp",
  "target": "airbnb.com.br"
}'

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

airbnb_com_br_plp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "airbnb_com_br_plp",
    "arguments": {
      "address": "curitiba",
      "startDate": "2026-02-20",
      "endDate": "2026-02-22",
      "numAdults": 2,
      "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
url
URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields.
string (URL) Optional Optional; when absent, the gateway assembles URL by address/startDate/endDate. - https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2
latitude
Latitude of the search area. It must be sent together with longitude. Supported in Airbnb PLP, Zap Imóveis PLP, VivaReal PLP, Chaves na Mão PLP and Webmotors PLP.
number Optional Optional together with longitude. The worker converts the point into map bounds of 2 km and sends search_by_map=true to Airbnb. - -25.4284
longitude
Longitude of the search area. It must be sent together with latitude. Supported in Airbnb PLP, Zap Imóveis PLP, VivaReal PLP, Chaves na Mão PLP and Webmotors PLP.
number Optional Optional together with latitude. The worker converts the point into map bounds of 2 km and sends search_by_map=true to Airbnb. - -49.2733
address
Reference address used by Google Places to locate the search area.
string Conditional Mandatory when url is not sent. - curitiba
target
Target source for extraction.
enum Required Always mandatory in the payload and must be airbnb.com.br. - airbnb.com.br
type
Extraction type: pdp, idp, plp, ilp, quote, review or places.
enum Required Always mandatory in the payload 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 Supported for PLP; must be integer >= 1. - 1
startDate
Start date of stay for Airbnb (alias of checkinDate in backend).
string (YYYY-MM-DD) Required Start date of stay (YYYY-MM-DD). - 2026-02-20
endDate
End of stay date for Airbnb (alias of checkoutDate in backend).
string (YYYY-MM-DD) Required End date of stay (YYYY-MM-DD), later than startDate. - 2026-02-22
checkinDate
Check-in date for Booking PDP/PLP, Hoteis.com PDP/PLP and Trivago PDP/PLP.
string (YYYY-MM-DD) Conditional Alias of startDate; use one or the other. - 2026-03-01
checkoutDate
Checkout date for Booking PDP/PLP, Hoteis.com PDP/PLP and Trivago PDP/PLP. Must be greater than checkinDate.
string (YYYY-MM-DD) Conditional Alias of endDate; use one or the other. - 2026-03-02
numAdults
Quantity of adults for Booking, Airbnb, Hoteis.com, Trivago, Decolar, GOL, Azul, LATAM and Trip.com.
integer (1-30) Optional Optional for quantity of adults. 2 2

Request examples

PLP by destination + dates

Recommended flow without explicit URL; the gateway mounts the canonical URL.

PLP by destination + dates
{
  "address": "curitiba",
  "startDate": "2026-02-20",
  "endDate": "2026-02-22",
  "numAdults": 2,
  "page": 1,
  "type": "plp",
  "target": "airbnb.com.br"
}

PLP with optional URL

Also accepts URL search directly when necessary.

PLP with optional URL
{
  "url": "https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2",
  "target": "airbnb.com.br",
  "type": "plp",
  "page": 1
}

PLP with coordinate filter

Send latitude and longitude together to turn the destination into a map search. The worker assembles a viewport of 2 km around the point using search_by_map and Airbnb bounds.

PLP with coordinate filter
{
  "address": "curitiba",
  "startDate": "2026-02-20",
  "endDate": "2026-02-22",
  "numAdults": 2,
  "latitude": -25.4284,
  "longitude": -49.2733,
  "page": 1,
  "type": "plp",
  "target": "airbnb.com.br"
}

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.url": "string",
  "data.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.address": "string",
  "data.query": "string",
  "data.startDate": "string (YYYY-MM-DD)",
  "data.endDate": "string (YYYY-MM-DD)",
  "data.numAdults": "number",
  "data.latitude": "number | null",
  "data.longitude": "number | null",
  "data.coordinateRadiusKm": "number | null",
  "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[].listingId": "string",
  "data.items[].url": "string",
  "data.items[].title": "string",
  "data.items[].name": "string",
  "data.items[].category": "string",
  "data.items[].city": "string",
  "data.items[].latitude": "number",
  "data.items[].longitude": "number",
  "data.items[].thumbnail": "string",
  "data.items[].images[].url": "string",
  "data.items[].currency": "string",
  "data.items[].currencyRaw": "string",
  "data.items[].price": "number",
  "data.items[].regularPrice": "number",
  "data.items[].totalPriceLabel": "string",
  "data.items[].aggregateRating.rating": "number",
  "data.items[].aggregateRating.reviewCount": "number",
  "data.items[].badges[]": "string",
  "data.items[].highlights[]": "string",
  "data.items[].superhost": "boolean",
  "data.items[].guestFavorite": "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": "bbbb1111-1111-4111-8111-bbbbbbbbbbbb",
  "executionId": "bbbb2222-2222-4222-8222-bbbbbbbbbbbb",
  "data": {
    "source": "airbnb.com.br",
    "type": "plp",
    "url": "https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14",
    "requestUrl": "https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14",
    "extractedAt": "2026-02-17T20:40:00.000Z",
    "address": "curitiba",
    "query": "curitiba",
    "startDate": "2026-02-20",
    "endDate": "2026-02-22",
    "numAdults": 2,
    "latitude": -25.4284,
    "longitude": -49.2733,
    "coordinateRadiusKm": 2,
    "totalResults": 812,
    "primaryResults": 18,
    "page": 1,
    "resultsPerPage": 18,
    "offset": 0,
    "nextPage": 2,
    "nextPageUrl": "https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14&items_offset=18&cursor=eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0%3D",
    "items": [
      {
        "position": 1,
        "listingId": "1501379416546185177",
        "url": "https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22",
        "title": "Apartamento em Curitiba ⋅ Centro",
        "name": "Loft elegante no centro de Curitiba",
        "category": "Apartamento em Curitiba",
        "city": "Centro",
        "latitude": -25.4294,
        "longitude": -49.2719,
        "thumbnail": "https://a0.muscache.com/im/pictures/sample/thumb.jpg",
        "images": [
          {
            "url": "https://a0.muscache.com/im/pictures/sample/thumb.jpg"
          },
          {
            "url": "https://a0.muscache.com/im/pictures/sample/inside.jpg"
          }
        ],
        "currency": "BRL",
        "currencyRaw": "R$",
        "price": 298,
        "regularPrice": 332,
        "totalPriceLabel": "R$ 596 no total, incluindo taxas",
        "aggregateRating": {
          "rating": 4.95,
          "reviewCount": 87
        },
        "badges": [
          "Preferido dos hospedes",
          "Superhost"
        ],
        "highlights": [
          "2 hospedes",
          "1 quarto",
          "Wi-Fi"
        ],
        "superhost": true,
        "guestFavorite": true
      }
    ]
  }
}

Complete field reference

PathTypeDescriptionExample
data.address string Field data.address returned in the response payload. curitiba
data.coordinateRadiusKm number | null Radius used to convert latitude/longitude to Airbnb map bounds. Today it is 2 km. 2
data.endDate string (YYYY-MM-DD) Field data.endDate returned in the response payload. 2026-02-22
data.extractedAt string (iso datetime) data.extractedAt field returned in the response payload. 2026-02-17T20:40:00.000Z
data.items[].aggregateRating.rating number Field data.items[].aggregateRating.rating returned in the response payload. 4.95
data.items[].aggregateRating.reviewCount number Field data.items[].aggregateRating.reviewCount returned in the response payload. 87
data.items[].badges[] string Field data.items[].badges[] returned in the response payload. Preferido dos hospedes
data.items[].category string Field data.items[].category returned in the response payload. Apartamento em Curitiba
data.items[].city string Field data.items[].city returned in the response payload. Centro
data.items[].currency string data.items[].currency field returned in the response payload. BRL
data.items[].currencyRaw string Field data.items[].currencyRaw returned in the response payload. R$
data.items[].guestFavorite boolean Field data.items[].guestFavorite returned in the response payload. true
data.items[].highlights[] string Field data.items[].highlights[] returned in the response payload. 2 hospedes
data.items[].images[].url string Field data.items[].images[].url returned in the response payload. https://a0.muscache.com/im/pictures/sample/thumb.jpg
data.items[].latitude number Field data.items[].latitude returned in the response payload. -25.4294
data.items[].listingId string Field data.items[].listingId returned in the response payload. 1501379416546185177
data.items[].longitude number Field data.items[].longitude returned in the response payload. -49.2719
data.items[].name string data.items[].name field returned in the response payload. Loft elegante no centro de Curitiba
data.items[].position number data.items[].position field returned in the response payload. 1
data.items[].price number Field data.items[].price returned in the response payload. 298
data.items[].regularPrice number Field data.items[].regularPrice returned in the response payload. 332
data.items[].superhost boolean Field data.items[].superhost returned in the response payload. true
data.items[].thumbnail string Field data.items[].thumbnail returned in the response payload. https://a0.muscache.com/im/pictures/sample/thumb.jpg
data.items[].title string Field data.items[].title returned in the response payload. Apartamento em Curitiba ⋅ Centro
data.items[].totalPriceLabel string Field data.items[].totalPriceLabel returned in the response payload. R$ 596 no total, incluindo taxas
data.items[].url string data.items[].url field returned in the response payload. https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22
data.latitude number | null Latitude sent in the request when the coordinate filter is active. -25.4284
data.longitude number | null Longitude sent in the request when the coordinate filter is active. -49.2733
data.nextPage number Field data.nextPage returned in the response payload. 2
data.nextPageUrl string Field data.nextPageUrl returned in the response payload. https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14&items_offset=18&cursor=eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0%3D
data.numAdults number data.numAdults field returned in the response payload. 2
data.offset number Field data.offset returned in the response payload. 0
data.page number Field data.page returned in the response payload. 1
data.primaryResults number Field data.primaryResults returned in the response payload. 18
data.query string data.query field returned in the response payload. curitiba
data.requestUrl string Same value as `data.url`; never exposes the queried internal endpoint. https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14
data.resultsPerPage number Field data.resultsPerPage returned in the response payload. 18
data.source string Field data.source returned in the response payload. airbnb.com.br
data.startDate string (YYYY-MM-DD) Field data.startDate returned in the response payload. 2026-02-20
data.totalResults number Field data.totalResults returned in the response payload. 812
data.type string Field data.type returned in the response payload. plp
data.url string Field data.url returned in the response payload. https://www.airbnb.com.br/s/curitiba/homes?refinement_paths%5B%5D=%2Fhomes&date_picker_type=calendar&checkin=2026-02-20&checkout=2026-02-22&adults=2&latitude=-25.4284&longitude=-49.2733&search_by_map=true&ne_lat=-25.410434&ne_lng=-49.253406&sw_lat=-25.446366&sw_lng=-49.293194&zoom_level=14
executionId string (uuid) Field executionId returned in the response payload. bbbb2222-2222-4222-8222-bbbbbbbbbbbb
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. bbbb1111-1111-4111-8111-bbbbbbbbbbbb

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.

Other Airbnb operations