Skip to content

// docs

Airbnb: Get accommodation details

Extracts detailed data from an accommodation page in Airbnb.

airbnb.com.br:pdp · 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 '{
  "url": "https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22",
  "target": "airbnb.com.br",
  "type": "pdp"
}'

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_pdp · tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "airbnb_com_br_pdp",
    "arguments": {
      "url": "https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22",
      "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) Required URL of accommodation Airbnb (ex: /rooms/{listingId}). - https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22
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 pdp. - pdp
startDate
Start date of stay for Airbnb (alias of checkinDate in backend).
string (YYYY-MM-DD) Optional Optional to define check-in in the page context. - 2026-03-01
endDate
End of stay date for Airbnb (alias of checkoutDate in backend).
string (YYYY-MM-DD) Optional Optional to define checkout in the page context. - 2026-03-02
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 occupation context. 2 2

Request examples

PDP by URL

Direct flow for extracting accommodation details.

PDP by URL
{
  "url": "https://www.airbnb.com.br/rooms/1501379416546185177?adults=2&check_in=2026-02-20&check_out=2026-02-22",
  "target": "airbnb.com.br",
  "type": "pdp"
}

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.requestUrl": "string",
  "data.extractedAt": "string (iso datetime)",
  "data.data.url": "string",
  "data.data.listingId": "string",
  "data.data.startDate": "string (YYYY-MM-DD)",
  "data.data.endDate": "string (YYYY-MM-DD)",
  "data.data.numAdults": "number",
  "data.data.name": "string",
  "data.data.title": "string",
  "data.data.propertyType": "string",
  "data.data.city": "string",
  "data.data.latitude": "number",
  "data.data.longitude": "number",
  "data.data.personCapacity": "number",
  "data.data.roomType": "string",
  "data.data.isSuperhost": "boolean",
  "data.data.aggregateRating.rating": "number",
  "data.data.aggregateRating.reviewCount": "number",
  "data.data.mainImage.url": "string",
  "data.data.image[].url": "string",
  "data.data.description": "string",
  "data.data.badges[]": "string",
  "data.data.highlights[]": "string",
  "data.data.amenities[]": "string",
  "data.data.host.name": "string",
  "data.data.host.isSuperhost": "boolean",
  "data.data.host.avatarUrl": "string",
  "data.data.host.highlights[]": "string",
  "data.data.cancellationPolicy": "string"
}

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": "aaaa1111-1111-4111-8111-aaaaaaaaaaaa",
  "executionId": "aaaa2222-2222-4222-8222-aaaaaaaaaaaa",
  "data": {
    "source": "airbnb.com.br",
    "type": "pdp",
    "requestUrl": "https://www.airbnb.com.br/rooms/1501379416546185177",
    "extractedAt": "2026-02-17T20:30:00.000Z",
    "data": {
      "url": "https://www.airbnb.com.br/rooms/1501379416546185177",
      "listingId": "1501379416546185177",
      "startDate": "2026-02-20",
      "endDate": "2026-02-22",
      "numAdults": 2,
      "name": "Loft elegante no centro de Curitiba",
      "title": "Loft elegante no centro de Curitiba",
      "propertyType": "Apartamento inteiro",
      "city": "Curitiba",
      "latitude": -25.4294,
      "longitude": -49.2719,
      "personCapacity": 2,
      "roomType": "Entire home/apt",
      "isSuperhost": true,
      "aggregateRating": {
        "rating": 4.95,
        "reviewCount": 87
      },
      "mainImage": {
        "url": "https://a0.muscache.com/im/pictures/sample/main.jpg"
      },
      "image": [
        {
          "url": "https://a0.muscache.com/im/pictures/sample/main.jpg"
        },
        {
          "url": "https://a0.muscache.com/im/pictures/sample/room.jpg"
        }
      ],
      "description": "Loft moderno com cozinha equipada, wifi rapido e localizacao central.",
      "badges": [
        "Superhost",
        "Preferido dos hospedes"
      ],
      "highlights": [
        "2 hospedes",
        "1 quarto",
        "1 cama",
        "1 banheiro"
      ],
      "amenities": [
        "Wi-Fi",
        "Cozinha",
        "Ar-condicionado",
        "Smart TV"
      ],
      "host": {
        "name": "Camila",
        "isSuperhost": true,
        "avatarUrl": "https://a0.muscache.com/im/pictures/user/avatar.jpg",
        "highlights": [
          "10 anos hospedando",
          "Resposta rapida"
        ]
      },
      "cancellationPolicy": "Cancelamento gratuito ate 48 horas antes do check-in"
    }
  }
}

Complete field reference

PathTypeDescriptionExample
data.data.aggregateRating.rating number Field data.data.aggregateRating.rating returned in the response payload. 4.95
data.data.aggregateRating.reviewCount number Field data.data.aggregateRating.reviewCount returned in the response payload. 87
data.data.amenities[] string Field data.data.amenities[] returned in the response payload. Wi-Fi
data.data.badges[] string data.data.badges[] field returned in the response payload. Superhost
data.data.cancellationPolicy string Field data.data.cancellationPolicy returned in the response payload. Cancelamento gratuito ate 48 horas antes do check-in
data.data.city string Field data.data.city returned in the response payload. Curitiba
data.data.description string Field data.data.description returned in the response payload. Loft moderno com cozinha equipada, wifi rapido e localizacao central.
data.data.endDate string (YYYY-MM-DD) Field data.data.endDate returned in the response payload. 2026-02-22
data.data.highlights[] string data.data.highlights[] field returned in the response payload. 2 hospedes
data.data.host.avatarUrl string Field data.data.host.avatarUrl returned in the response payload. https://a0.muscache.com/im/pictures/user/avatar.jpg
data.data.host.highlights[] string Field data.data.host.highlights[] returned in the response payload. 10 anos hospedando
data.data.host.isSuperhost boolean data.data.host.isSuperhost field returned in the response payload. true
data.data.host.name string Field data.data.host.name returned in the response payload. Camila
data.data.image[].url string Field data.data.image[].url returned in the response payload. https://a0.muscache.com/im/pictures/sample/main.jpg
data.data.isSuperhost boolean Field data.data.isSuperhost returned in the response payload. true
data.data.latitude number Field data.data.latitude returned in the response payload. -25.4294
data.data.listingId string Field data.data.listingId returned in the response payload. 1501379416546185177
data.data.longitude number data.data.longitude field returned in the response payload. -49.2719
data.data.mainImage.url string Field data.data.mainImage.url returned in the response payload. https://a0.muscache.com/im/pictures/sample/main.jpg
data.data.name string Field data.data.name returned in the response payload. Loft elegante no centro de Curitiba
data.data.numAdults number Field data.data.numAdults returned in the response payload. 2
data.data.personCapacity number Field data.data.personCapacity returned in the response payload. 2
data.data.propertyType string data.data.propertyType field returned in the response payload. Apartamento inteiro
data.data.roomType string Field data.data.roomType returned in the response payload. Entire home/apt
data.data.startDate string (YYYY-MM-DD) Field data.data.startDate returned in the response payload. 2026-02-20
data.data.title string data.data.title field returned in the response payload. Loft elegante no centro de Curitiba
data.data.url string Field data.data.url returned in the response payload. https://www.airbnb.com.br/rooms/1501379416546185177
data.extractedAt string (iso datetime) data.extractedAt field returned in the response payload. 2026-02-17T20:30:00.000Z
data.requestUrl string Same value as `data.data.url`; never exposes the queried internal endpoint. https://www.airbnb.com.br/rooms/1501379416546185177
data.source string Field data.source returned in the response payload. airbnb.com.br
data.type string Field data.type returned in the response payload. pdp
executionId string (uuid) Field executionId returned in the response payload. aaaa2222-2222-4222-8222-aaaaaaaaaaaa
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. aaaa1111-1111-4111-8111-aaaaaaaaaaaa

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