{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Listings Scraper & Airbnb API: Prices & Calendar Data",
    "description": "Airbnb scraper and Airbnb API: Airbnb listings, Airbnb data, Airbnb prices and calendar availability, reviews, hosts and Experiences by search URL, map area, room URL or host ID. Pay per delivered record; empty or failed runs bill no records. JSON for STR analytics and AI agents (MCP).",
    "version": "1.0",
    "x-build-id": "rqRCC0x3fOIC5dC4v"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/openclawai~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-openclawai-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/openclawai~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-openclawai-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/openclawai~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-openclawai-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "🎯 Mode",
            "enum": [
              "search_by_url",
              "search_by_bbox",
              "room_details",
              "room_reviews",
              "room_calendar",
              "host_listings",
              "experience_search"
            ],
            "type": "string",
            "description": "Which scrape to run. Each mode uses different inputs and bills its own per-record event ($0.0005 per record in every mode). See the readme for the inputs each mode needs.",
            "default": "search_by_url"
          },
          "searchUrl": {
            "title": "🔗 Airbnb Search URL",
            "type": "string",
            "description": "Used by mode = search_by_url. Paste a full airbnb.com/s/… URL with your dates, price, amenity, and map filters already applied. The easiest way: filter on airbnb.com in your browser, then copy the URL. Without dates in the URL, Airbnb prices a 5-night stay."
          },
          "checkIn": {
            "title": "📅 Check-in (YYYY-MM-DD)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Check-in date. Required for bbox search to receive prices, and for room_details to receive a quote. Format: YYYY-MM-DD."
          },
          "checkOut": {
            "title": "📅 Check-out (YYYY-MM-DD)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Check-out date. Same rules as check-in."
          },
          "adults": {
            "title": "👥 Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests for the price quote.",
            "default": 2
          },
          "neLat": {
            "title": "🧭 NE latitude",
            "type": "number",
            "description": "Bounding box — north-east latitude. Used by mode = search_by_bbox."
          },
          "neLng": {
            "title": "🧭 NE longitude",
            "type": "number",
            "description": "Bounding box — north-east longitude."
          },
          "swLat": {
            "title": "🧭 SW latitude",
            "type": "number",
            "description": "Bounding box — south-west latitude."
          },
          "swLng": {
            "title": "🧭 SW longitude",
            "type": "number",
            "description": "Bounding box — south-west longitude."
          },
          "zoom": {
            "title": "🔍 Map zoom",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Map zoom level (1–20). Higher = tighter results.",
            "default": 12
          },
          "priceMin": {
            "title": "💵 Min nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum nightly price filter (in `currency`). 0 = no minimum.",
            "default": 0
          },
          "priceMax": {
            "title": "💵 Max nightly price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum nightly price filter (in `currency`). 0 = no maximum.",
            "default": 0
          },
          "placeType": {
            "title": "🏘️ Place type",
            "enum": [
              "",
              "Entire home/apt",
              "Private room",
              "Shared room",
              "Hotel room"
            ],
            "type": "string",
            "description": "Filter by listing type. Leave as Any to return all.",
            "default": ""
          },
          "amenities": {
            "title": "🎁 Amenity IDs",
            "type": "array",
            "description": "Airbnb amenity IDs to filter by. Example: [4, 7] = WiFi + Pool. Find IDs by applying an amenity filter on airbnb.com and reading the amenities[]= values from the URL.",
            "items": {
              "type": "integer"
            }
          },
          "freeCancellation": {
            "title": "↩️ Free cancellation only",
            "type": "boolean",
            "description": "Only return listings with flexible/free cancellation.",
            "default": false
          },
          "roomUrls": {
            "title": "🏠 Room URLs (batch)",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "List of airbnb.com/rooms/<id> URLs. Used by modes: room_details, room_reviews, room_calendar. Max 100 per run.",
            "items": {
              "type": "string",
              "pattern": "^https?://"
            }
          },
          "hostId": {
            "title": "👤 Host ID",
            "pattern": "^[0-9]+$",
            "type": "string",
            "description": "Numeric Airbnb host/user ID. Used by mode = host_listings. Find it in the host's profile URL: airbnb.com/users/show/<id>."
          },
          "experiencePlaceId": {
            "title": "🎭 Experience place ID",
            "type": "string",
            "description": "Optional raw Google place ID for Experiences search. Prefer `experiencePlace` with a plain city name."
          },
          "experiencePlace": {
            "title": "🎭 Experience place",
            "type": "string",
            "description": "Used by mode = experience_search. A city or place name, e.g. \"Amsterdam\" or \"Gouda, Netherlands\". This is what Airbnb's own Experiences search takes."
          },
          "currency": {
            "title": "💱 Currency",
            "pattern": "^[A-Z]{3}$",
            "type": "string",
            "description": "ISO currency code for price data. Examples: USD, EUR, GBP, JPY, MXN.",
            "default": "USD"
          },
          "language": {
            "title": "🌐 Language",
            "pattern": "^[a-z]{2}$",
            "type": "string",
            "description": "ISO 2-letter language code. Examples: en, es, fr, de, pt, ja, zh.",
            "default": "en"
          },
          "maxResults": {
            "title": "📊 Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap on listings returned (search modes) or reviews fetched per room (review mode). Searches page through every result page and split big areas into smaller map areas with the same filters until this many unique listings are found. Prevents billing surprises.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy",
            "type": "object",
            "description": "Proxy settings. Residential proxies recommended — Airbnb fingerprints datacenter IPs aggressively.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}