{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Listing Details & Availability Calendar",
    "description": "Airbnb listing details and availability calendar by URL: description, amenities, house rules, six category ratings, review count, photos, coordinates and a 1–12 month day-by-day availability calendar. One flat row per listing, no personal data about hosts or guests.",
    "version": "0.1",
    "x-build-id": "Q56gizzpoq0ufH9Yf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/myth84~airbnb-listing-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-myth84-airbnb-listing-details-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/myth84~airbnb-listing-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-myth84-airbnb-listing-details-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/myth84~airbnb-listing-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-myth84-airbnb-listing-details-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": {
          "listingUrls": {
            "title": "Airbnb listing URLs",
            "type": "array",
            "description": "One Airbnb listing per line: a listing URL copied from your browser (<code>https://www.airbnb.com/rooms/21607939</code>, any Airbnb country site) or just the numeric listing id. Duplicates are fetched once. Search result URLs are not accepted: use the Airbnb Listings Scraper for searches.",
            "items": {
              "type": "string",
              "pattern": "^(https?://|\\d+$)"
            }
          },
          "checkIn": {
            "title": "Check-in",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Optional check-in date, YYYY-MM-DD, e.g. <code>2026-12-01</code>, given with Check-out. Dates are written into the listing URL of each row and, when the calendar is requested, the row says whether the stay is available (isAvailable). Leave both empty when you only need the listing details."
          },
          "checkOut": {
            "title": "Check-out",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Check-out date, YYYY-MM-DD, after the check-in date, e.g. <code>2026-12-03</code>. Required when a check-in date is given."
          },
          "adults": {
            "title": "Adults",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adults, 0 to 16, written into the listing URL of each row and counted in the guests column. Default 2: a couple, the occupancy of our validation runs.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Number of children aged 2 to 12, 0 to 15, sent with the listing page request and counted in the guests column. Default 0: adults only.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of infants under 2, 0 to 5, sent with the listing page request (not counted in the guests column). Default 0: no infant.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of pets travelling with you, 0 to 5, sent with the listing page request (not counted in the guests column). Default 0: no pet.",
            "default": 0
          },
          "includeCalendar": {
            "title": "Include availability calendar",
            "type": "boolean",
            "description": "Also fetch the availability calendar of each listing (one extra request per listing): a day-by-day list with availability, check-in / check-out permission and minimum stay, plus summary columns (available days, next available date, whether your dates are free). Charged per listing-month, see the Pricing tab. Default off: the listing details alone, one request and one charge per listing.",
            "default": false
          },
          "calendarMonths": {
            "title": "Calendar months",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Number of months of calendar to fetch, starting with the current month, 1 to 12, e.g. <code>12</code> for a year ahead. Only used when the calendar is included; each month is charged. Default 3: the current month and the next two, three calendar events per listing.",
            "default": 3
          },
          "maxResults": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many listings saved; you are never charged for more. Default 100: caps the bill of a long list of URLs. The form is prefilled with 50, more than the three prefilled listings: raise it when you paste more than 50 URLs.",
            "default": 100
          },
          "currency": {
            "title": "Currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "ISO 4217 code sent with the listing page and calendar requests and recorded in the currency column, e.g. USD, EUR or GBP. Pick one from the list or type any code supported by Airbnb. Default USD: listing pages and the calendar carry no price, so the currency only fills the currency column.",
            "default": "USD"
          },
          "locale": {
            "title": "Language",
            "pattern": "^[a-z]{2}(-[A-Za-z]{2})?$",
            "type": "string",
            "description": "Airbnb language code for the description, amenities, rules and property type, e.g. <code>en</code>, <code>fr</code>, <code>es</code> or <code>en-GB</code>: two lowercase letters, optionally followed by a region. Default en: English texts, the same words for every listing.",
            "default": "en"
          },
          "domain": {
            "title": "Airbnb site",
            "pattern": "^www\\.airbnb\\.[a-z.]+$",
            "type": "string",
            "description": "Airbnb site to query, e.g. <code>www.airbnb.fr</code> or <code>www.airbnb.co.uk</code>. Listing URLs in the output use this domain, whatever the site of the pasted URLs (a listing id is the same on every site). Default www.airbnb.com: the international site, used by our validation runs.",
            "default": "www.airbnb.com"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify datacenter proxies (automatic) are enough for Airbnb listing pages. If your runs get blocked, switch to Apify residential proxies. Selecting a proxy country records it in the viewCountryCode column. You can also provide your own proxy URLs. Default: Apify datacenter proxies, included in the price.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxRequests": {
            "title": "Max requests",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Safety cap on the number of requests in one run (one per listing, plus one per listing when the calendar is included). Default 500: room for the 100 listings of the default maximum, with their calendars and retries.",
            "default": 500
          },
          "delayMs": {
            "title": "Delay between listings",
            "minimum": 0,
            "maximum": 30000,
            "type": "integer",
            "description": "Pause between two listings, in milliseconds. Increase it if you get blocked; 0 disables the pause. Default 800: steady pacing that worked in our validation and control runs.",
            "default": 800
          },
          "debugStoreHtml": {
            "title": "Store raw responses",
            "type": "boolean",
            "description": "Debugging only: save every fetched page and calendar response in the run's key-value store. Slows the run down and uses storage. Default off: no response is stored.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}