{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Availability Calendar: Check-In Times & House Rules",
    "description": "Airbnb Availability Calendar: Check-In Times & House Rules Extract calendar data including available dates, blocked dates, nightly prices, and minimum stay rules. Useful for rental market research, competitor monitoring, price analysis, and tracking booking availability across Airbnb listings.",
    "version": "0.1",
    "x-build-id": "16geGT7RlUUKUbPVv"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~airbnb-availability-calendar/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-airbnb-availability-calendar",
        "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/scraper-engine~airbnb-availability-calendar/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-airbnb-availability-calendar",
        "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/scraper-engine~airbnb-availability-calendar/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-airbnb-availability-calendar",
        "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": {
          "urls": {
            "title": "🔗 Listing URLs or IDs",
            "type": "array",
            "description": "Airbnb room URLs or listing IDs. Add multiple for bulk. Use this or listingUrl.",
            "items": {
              "type": "string"
            }
          },
          "listingUrl": {
            "title": "🔗 Single listing URL or ID",
            "type": "string",
            "description": "Single room URL or numeric ID (alternative to urls)."
          },
          "startDate": {
            "title": "📆 Start Date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "First day of the range (YYYY-MM-DD).",
            "default": "2025-12-01"
          },
          "endDate": {
            "title": "📆 End Date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Last day of the range (YYYY-MM-DD).",
            "default": "2025-12-31"
          },
          "enrichWithPricing": {
            "title": "💰 Enrich with Pricing",
            "type": "boolean",
            "description": "Include pricing and booking-related fields in each availability entry.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy Configuration",
            "type": "object",
            "description": "Optional. Default: no proxy. On block: datacenter → residential (3 retries), then residential for remaining requests."
          },
          "includeHouseRules": {
            "title": "🏠 Return the check-in times, house rules and safety notes",
            "type": "boolean",
            "description": "🕒 Returns what Airbnb prints under \"Things to know\" for each listing: the hours you can check in and must check out, whether there's a lockbox or keypad so you can let yourself in, the quiet hours, the house's own rules, the host's own written rules, and the safety and property warnings — unfenced pools, cameras on the property, stairs, and homes that report no smoke alarm. No extra requests: Airbnb sends this in the same call the actor already makes. These describe the listing, not the date, so they are the same on every row of that listing.",
            "default": true
          },
          "arriveByTime": {
            "title": "🕐 Only listings that can let us in by this time",
            "type": "string",
            "description": "🛬 The clock time your group will actually reach the door, written as 24-hour HH:MM — 23:00 for an 11 PM landing. Leave it empty (the default) and nothing is dropped. Fill it in and any listing whose printed check-in window closes before that time is dropped from the run entirely — the 8 PM door you would otherwise only discover on arrival. Listings that print an open-ended time such as \"Check-in after 3:00 PM\" have no closing hour to compare against, so they are always kept. Because these times describe the listing rather than the date, a listing is kept or dropped as a whole, with all of its date rows.",
            "default": ""
          },
          "selfCheckInOnly": {
            "title": "🔑 Only listings with self check-in",
            "type": "boolean",
            "description": "🗝️ Switch on to keep only the listings that report a way to let yourself in — a lockbox, a keypad, a smart lock, or building staff — so nobody has to meet a host to collect keys. Off by default on purpose: self check-in is far less common than it looks. Measured 2026-08-16: 22 of 30 listings worldwide reported one, but only 6 of 15 across Barcelona, Rome and Prague. Turning this on in Europe can remove most of your shortlist, which is why you have to ask for it. A listing is kept or dropped as a whole, with all of its date rows.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}