{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Rooms URLs Scraper with Nightly Rates and Open Dates",
    "description": "Scrape Airbnb room URLs with nightly rates, available dates, listing details, locations, and booking availability. Build structured datasets for rental research, price comparison, market analysis, and identifying open Airbnb rooms across target locations.",
    "version": "0.1",
    "x-build-id": "o3a2OmDLfL1WvwQHx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/api-empire~Airbnb-Rooms-URLs-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-api-empire-Airbnb-Rooms-URLs-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/api-empire~Airbnb-Rooms-URLs-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-api-empire-Airbnb-Rooms-URLs-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/api-empire~Airbnb-Rooms-URLs-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-api-empire-Airbnb-Rooms-URLs-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🏠 Airbnb room URLs (or a search keyword)",
            "type": "array",
            "description": "One Airbnb room link per line — https://www.airbnb.com/rooms/12937. A plain keyword is still accepted and sent to Airbnb search, but Airbnb renders its search results in the browser: the search HTML carried 0 room links when this was last measured (2026-08-02), so keyword input returns nothing. Paste room URLs.",
            "default": [
              "https://www.airbnb.com/rooms/53997462",
              "https://www.airbnb.com/rooms/12937"
            ],
            "items": {
              "type": "string"
            }
          },
          "calendarMonths": {
            "title": "🗓️ Months of calendar to read",
            "minimum": 0,
            "maximum": 12,
            "type": "integer",
            "description": "Counted from the horizon start month forward. 12 = the whole forward year (365 days). 0 = skip the calendar entirely and behave like the plain listing scraper. Default is 12.",
            "default": 12
          },
          "calendarStartDate": {
            "title": "📆 Start the horizon at this date",
            "type": "string",
            "description": "Leave empty to start at the current month. Accepts YYYY-MM-DD or a relative value such as `2 months`. If it is empty the Check-in date below is used instead, and only then today's month."
          },
          "availableNightsOnly": {
            "title": "✅ Keep only nights that are still open",
            "type": "boolean",
            "description": "ON drops every booked / blocked night from the `calendar` array, so you only carry the bookable inventory. The counters (`openNights`, `takenNights`, month roll-ups) are always computed over the full horizon either way. Default is OFF.",
            "default": false
          },
          "includeNightlyPrices": {
            "title": "💵 Ask Airbnb for a rate on each date",
            "type": "boolean",
            "description": "ON turns the availability list into a rate curve: stay total, the price breakdown line and the per-night figure, in the currency chosen below. One extra request per quoted date. Default is ON.",
            "default": true
          },
          "stayLengthNights": {
            "title": "🌙 Nights per quote",
            "minimum": 1,
            "maximum": 28,
            "type": "integer",
            "description": "Airbnb prices a 1-night stay and a 5-night stay differently, so pick the stay length you want to compare. Automatically raised for a date whose `minNights` is higher, and the length actually used is reported per date in `quoteNights`. Default is 1.",
            "default": 1
          },
          "maxPricedDates": {
            "title": "🔢 Most dates to quote per listing",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Hard cost cap. 20 quotes ≈ 20 extra requests per listing. 0 = quote nothing, 365 = quote every open check-in date in the horizon. Default is 20.",
            "default": 20
          },
          "rateSampling": {
            "title": "↕️ Which dates get quoted",
            "enum": [
              "soonest-first",
              "spread-across-horizon"
            ],
            "type": "string",
            "description": "`soonest-first` quotes the next open check-in dates — best for pricing the coming weeks. `spread-across-horizon` samples evenly over the whole horizon — best for a seasonality curve. Default is soonest-first.",
            "default": "soonest-first"
          },
          "checkIn": {
            "title": "📅 Check-in date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "YYYY-MM-DD. Also used as the calendar horizon start when the horizon start above is empty."
          },
          "checkOut": {
            "title": "🛎️ Check-out date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "YYYY-MM-DD. With a check-in date set, this pair is quoted on its own and returned in `requestedStayQuote`."
          },
          "adults": {
            "title": "🧑 Adults",
            "minimum": 1,
            "type": "integer",
            "description": "Guests priced as adults. Used on the listing page and on every rate quote. Left empty, quotes are priced for 1 adult."
          },
          "children": {
            "title": "🧒 Children",
            "minimum": 0,
            "type": "integer",
            "description": "Children (2-12). Affects the quoted price on listings that charge per extra guest."
          },
          "infants": {
            "title": "👶 Infants",
            "minimum": 0,
            "type": "integer",
            "description": "Infants under 2. Usually free, but they can trip a listing's occupancy rules."
          },
          "pets": {
            "title": "🐾 Pets",
            "minimum": 0,
            "type": "integer",
            "description": "Pets travelling with the guests. Some listings add a pet fee to the quote."
          },
          "currency": {
            "title": "💱 Quote every rate in this currency",
            "enum": [
              "USD",
              "CZK",
              "AUD",
              "BRL",
              "BGN",
              "CAD",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "HRK",
              "DKK",
              "EGP",
              "AED",
              "EUR",
              "GHS",
              "HKD",
              "HUF",
              "INR",
              "IDR",
              "ILS",
              "JPY",
              "KZT",
              "KES",
              "MYR",
              "MXN",
              "MAD",
              "TWD",
              "NZD",
              "NOK",
              "PEN",
              "PHP",
              "PLN",
              "GBP",
              "QAR",
              "RON",
              "SAR",
              "SGD",
              "ZAR",
              "KRW",
              "SEK",
              "CHF",
              "THB",
              "TRY",
              "UGX",
              "UAH",
              "UYU",
              "VND"
            ],
            "type": "string",
            "description": "Airbnb converts the rate itself, so the numbers are Airbnb's own, not a conversion done here. Default is USD.",
            "default": "USD"
          },
          "locale": {
            "title": "🌐 Listing language",
            "enum": [
              "en-US",
              "az-AZ",
              "id-ID",
              "bs-BA",
              "ca-ES",
              "cs-CZ",
              "sr-ME",
              "da-DK",
              "de-DE",
              "de-AT",
              "de-CH",
              "de-LU",
              "et-EE",
              "en-AU",
              "en-CA",
              "en-GB",
              "en-GY",
              "en-IN",
              "en-IE",
              "en-NZ",
              "en-SG",
              "en-AE",
              "es-AR",
              "es-BZ",
              "es-BO",
              "es-CL",
              "es-CO",
              "es-CR",
              "es-EC",
              "es-SV",
              "es-ES",
              "es-US",
              "es-GT",
              "es-HN",
              "es-419",
              "es-MX",
              "es-NI",
              "es-PA",
              "es-PY",
              "es-PE",
              "es-VE",
              "fr-BE",
              "fr-CA",
              "fr-FR",
              "fr-CH",
              "fr-LU",
              "ga-IE",
              "hr-HR",
              "xh-ZA",
              "zu-ZA",
              "is-IS",
              "it-IT",
              "it-CH",
              "sw-XX",
              "lv-LV",
              "lt-LT",
              "hu-HU",
              "mt-MT",
              "ms-MY",
              "nl-BE",
              "nl-NL",
              "no-NO",
              "pl-PL",
              "pt-BR",
              "pt-PT",
              "ro-RO",
              "sq-AL",
              "sk-SK",
              "sl-SI",
              "sr-RS",
              "fi-FI",
              "sv-SE",
              "tl-PH",
              "vi-VN",
              "tr-TR",
              "el-GR",
              "bg-BG",
              "mk-MK",
              "ru-RU",
              "uk-UA",
              "ka-GE",
              "hy-AM",
              "he-IL",
              "ar-XX",
              "hi-IN",
              "th-TH",
              "ko-KR",
              "ja-JP",
              "zh-US",
              "zh-TW-US",
              "zh-CN",
              "zh-HK",
              "zh-TW"
            ],
            "type": "string",
            "description": "Language and region used for the listing text and the price breakdown wording. Default is English (United States).",
            "default": "en-US"
          },
          "enrichUserProfiles": {
            "title": "👤 Also open the host profile page",
            "type": "boolean",
            "description": "Adds one profile request per host and co-host and nests the public profile under `host.profile`. Slower, and unrelated to pricing. Default is OFF.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy configuration",
            "type": "object",
            "description": "Starts with no proxy and falls back to datacenter, then residential, only when a response comes back without the expected data container."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}