{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Scraper – Listings, Prices, Reviews & Calendar",
    "description": "Scrape Airbnb without login: search any city with your dates and get every listing with its price for your stay, full details (amenities, host, house rules, ratings, photos), guest reviews and the 12-month availability calendar. Listing URLs work too.",
    "version": "0.1",
    "x-build-id": "QH6z020c4eAt9Stup"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/smoldesk~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-smoldesk-airbnb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/smoldesk~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-smoldesk-airbnb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/smoldesk~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-smoldesk-airbnb-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "locationQueries": {
            "title": "Where (cities, areas, countries)",
            "type": "array",
            "description": "Places to search, as you'd type them into Airbnb (e.g. 'Lisbon', 'Austin, TX', 'Bali, Indonesia', 'Shibuya, Tokyo'). Each place is one search. Leave empty when you only want the listing or search URLs below.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Airbnb URLs (optional)",
            "type": "array",
            "description": "Listing URLs (https://www.airbnb.com/rooms/53997462) or search URLs copied from Airbnb with your filters (https://www.airbnb.com/s/Paris/homes?...). Any Airbnb domain works (airbnb.co.uk, airbnb.de, …).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Gives you the real price for your stay (total, per night, fees, discounts). A date (2026-12-10) or relative (+30 days, +2 weeks), so saved tasks and schedules keep working. Leave empty for listings without dates."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Must be after check-in. A date or relative (+34 days)."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests (also filters listings by capacity).",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Children aged 2–12.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Infants under 2.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of pets (shows pet-friendly listings only).",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "CAD",
              "JPY",
              "MYR",
              "SGD",
              "IDR",
              "THB",
              "PHP",
              "INR",
              "AED",
              "BRL",
              "MXN",
              "CHF",
              "NZD",
              "HKD",
              "KRW",
              "ZAR"
            ],
            "type": "string",
            "description": "Currency for all prices.",
            "default": "USD"
          },
          "roomTypes": {
            "title": "Type of place",
            "uniqueItems": true,
            "type": "array",
            "description": "Leave empty for any type.",
            "items": {
              "type": "string",
              "enum": [
                "entire",
                "private",
                "shared",
                "hotel"
              ],
              "enumTitles": [
                "Entire home",
                "Private room",
                "Shared room",
                "Hotel room"
              ]
            }
          },
          "priceMin": {
            "title": "Min price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the chosen currency. 0 = no minimum."
          },
          "priceMax": {
            "title": "Max price per night",
            "minimum": 0,
            "type": "integer",
            "description": "In the chosen currency. 0 = no maximum."
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "0 = any."
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "type": "integer",
            "description": "0 = any."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "0 = any."
          },
          "maxListingsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Listings to save for each place or search URL. Airbnb shows up to ~270 per search — for more, search smaller areas (neighborhoods) or narrow the price range. 0 = all Airbnb shows.",
            "default": 20
          },
          "maxListings": {
            "title": "Max listings in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many listings across all searches. 0 = no limit.",
            "default": 0
          },
          "includeDetails": {
            "title": "Full listing details",
            "type": "boolean",
            "description": "Open each listing for the full description, all amenities, house rules, safety info, sleeping arrangements, host profile (superhost, years hosting, response rate), category ratings and every photo. Off = only what the search page shows (name, price, rating, location, photos).",
            "default": true
          },
          "includeReviews": {
            "title": "Guest reviews",
            "type": "boolean",
            "description": "Save guest reviews for each listing (text, rating, date, language, English translation, host response) as separate rows.",
            "default": false
          },
          "maxReviewsPerListing": {
            "title": "Max reviews per listing",
            "minimum": 0,
            "type": "integer",
            "description": "0 = all reviews.",
            "default": 20
          },
          "reviewsSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "relevant"
            ],
            "type": "string",
            "description": "Newest first, or Airbnb's 'most relevant' order.",
            "default": "newest"
          },
          "includeCalendar": {
            "title": "Availability calendar",
            "type": "boolean",
            "description": "Save each listing's calendar: which nights are open or booked, check-in/check-out days and minimum/maximum stay, plus a booked-share summary (one row per listing). Airbnb no longer shows nightly prices in its calendar — set dates above for the stay price.",
            "default": false
          },
          "calendarMonths": {
            "title": "Calendar months",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Months ahead, starting with the current month.",
            "default": 12
          },
          "maxConcurrency": {
            "title": "Listings in parallel",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many listings to open at the same time.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed — the Actor switches to Apify datacenter proxy by itself if Airbnb slows it down."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}