{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Real-Time Data — Listings & Host Portfolios",
    "description": "Fresh Airbnb data for any market: listings with nightly prices, ratings, reviews, photos, plus host portfolios with listing counts and superhost status. Streams to your dataset, webhook-ready — built for market research and lead generation. Free plan gets a sample; paid plans unlock everything.",
    "version": "0.0",
    "x-build-id": "KIWc2FNgvYiWWxqPg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~Airbnb-Real-Time-Data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-Airbnb-Real-Time-Data",
        "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/b2b_leads~Airbnb-Real-Time-Data/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-Airbnb-Real-Time-Data",
        "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/b2b_leads~Airbnb-Real-Time-Data/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-Airbnb-Real-Time-Data",
        "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": {
          "collectListings": {
            "title": "Collect listings for markets",
            "type": "boolean",
            "description": "Discover Airbnb listings for one or more markets. Switch this off if you only want host portfolios or to enrich links you already have.",
            "default": true
          },
          "locations": {
            "title": "Markets",
            "type": "array",
            "description": "One market per row, e.g. \"Austin, TX\", \"Lisbon, Portugal\", \"Bali, Indonesia\". Add several to cover multiple markets in one run. Prices and availability are shown for the stay window below.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxListingsPerMarket": {
            "title": "Max listings per market",
            "minimum": 1,
            "type": "integer",
            "description": "How many listings to take from each market. The starting value is just an example — raise it for deep coverage of a single market. NOTE: on the Apify free plan the sample is capped to a small number of results per run; paid plans get the full value you set here.",
            "default": 100
          },
          "maxListings": {
            "title": "Max listings in total",
            "minimum": 1,
            "type": "integer",
            "description": "Total listing rows to keep across all markets in this section. The highest-rated, most-reviewed stays are kept first. The starting value is just an example — raise it as high as you need. NOTE: the Apify free plan caps this to a small sample; upgrade to a paid plan for the full value you set here.",
            "default": 500
          },
          "includeHostDetails": {
            "title": "Include host details on listing rows",
            "type": "boolean",
            "description": "Attach the owner's name, profile link, and superhost status to each listing row. Adds a little extra time per listing. Always on for the Host & portfolio view.",
            "default": false
          },
          "collectHosts": {
            "title": "Build host & portfolio view",
            "type": "boolean",
            "description": "Group the collected listings by owner to find professional operators and multi-property managers. Switch this on to also export one row per host.",
            "default": false
          },
          "hostLocations": {
            "title": "Markets to build portfolios from",
            "type": "array",
            "description": "One market per row, e.g. \"Austin, TX\". Leave empty to reuse the markets from the Listings section. Markets shared with the Listings section are only collected once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxHosts": {
            "title": "Max hosts",
            "minimum": 1,
            "type": "integer",
            "description": "How many host rows to keep. Hosts with the most listings are kept first. The starting value is just an example — raise it as high as you need. NOTE: the Apify free plan caps this to a small sample; upgrade to a paid plan for the full value you set here.",
            "default": 100
          },
          "enrichListings": {
            "title": "Enrich listing URLs",
            "type": "boolean",
            "description": "Have a list of Airbnb listing links already? Switch this on to turn each link into a full, clean row with pricing, capacity, ratings, and owner attribution.",
            "default": false
          },
          "listingUrls": {
            "title": "Listing URLs",
            "type": "array",
            "description": "One listing link per row, for example https://www.airbnb.com/rooms/12345678. Each link returns one listing row with owner attribution and extra details.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxListingsFromUrls": {
            "title": "Max listings from URLs",
            "minimum": 1,
            "type": "integer",
            "description": "How many of the supplied links to process in this run. The starting value is just an example — raise it as high as you need. NOTE: the Apify free plan caps this to a small sample; upgrade to a paid plan for the full value you set here.",
            "default": 200
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Optional. YYYY-MM-DD. Leave empty to use a sensible upcoming stay window automatically. Prices reflect the selected stay window.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Optional. YYYY-MM-DD. Must be after the check-in date.",
            "default": ""
          },
          "adults": {
            "title": "Guests (adults)",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests for the stay window. Affects which stays qualify and the displayed price.",
            "default": 2
          },
          "roomTypes": {
            "title": "Room types",
            "type": "array",
            "description": "Optional. Restrict the market search to specific room types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "entire_home",
                "private_room",
                "shared_room"
              ],
              "enumTitles": [
                "Entire home / apt",
                "Private room",
                "Shared room"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max rows (all sections)",
            "minimum": 1,
            "type": "integer",
            "description": "Overall ceiling on the number of rows saved in this run, across listings, hosts, and enriched links. The starting value is just an example — raise it as high as you need. NOTE: on the Apify free plan the run is capped to a small sample; paid plans get the full value you set here.",
            "default": 1000
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to retry an item when the market is temporarily busy or rate limited.",
            "default": 3
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every row is always saved to the run's dataset — this webhook is an ADDITIONAL real-time push. When set, each new row is also POSTed to this URL (CRM, Slack incoming webhook, Zapier, Make, Google Sheets, n8n).",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "json = the full row object. slack = a Slack-friendly message payload.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Apify residential proxy (US) is enabled by default for reliable market data at scale. Change this only if you need a different country or your own connection.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}