{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Scraper: All Listings in a City, Prices & Hosts",
    "description": "Scrape every Airbnb listing in a city, past the 300-result limit. Prices for your dates (total, nightly, fees), ratings, host details, registration numbers, amenities and photos. Paste search or room URLs. $0.50 per 1,000 listings, no login. Export to CSV, Excel or API.",
    "version": "0.1",
    "x-build-id": "mBpXgNMrRsSs7mB3x"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epicscrapers~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epicscrapers-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/epicscrapers~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-epicscrapers-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/epicscrapers~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-epicscrapers-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",
        "properties": {
          "locationQueries": {
            "title": "Locations",
            "type": "array",
            "description": "Places to search, one per line, as you would type them on Airbnb: a city, neighborhood, region or address. Large places are split into map areas automatically, so you can collect far more than Airbnb's limit of about 300 listings per search.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Airbnb URLs",
            "type": "array",
            "description": "Room URLs (`https://www.airbnb.com/rooms/12937`) or Airbnb search URLs from any Airbnb domain. A search URL keeps every filter you set on airbnb.com, including a map area you zoomed to.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxResultsPerSearch": {
            "title": "Max listings per search",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listings saved per location or search URL. `0` means no limit: big cities have tens of thousands of listings, so set a maximum cost per run as well.",
            "default": 300
          },
          "maxResults": {
            "title": "Max listings in total",
            "minimum": 0,
            "type": "integer",
            "description": "Optional cap on listings saved in the whole run, across all searches and URLs."
          },
          "includeDetails": {
            "title": "Include listing details",
            "type": "boolean",
            "description": "Adds the full listing page: description, host, amenities, house rules, cancellation policy, rating categories, registration number and photos. One extra request per listing. Turn off for fast price and availability runs from search data only. The price per listing is the same either way.",
            "default": true
          },
          "checkIn": {
            "title": "Check-in",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "YYYY-MM-DD. With check-in and check-out set, Airbnb returns only listings available for the stay, and prices are for those exact nights. Without dates, Airbnb picks a stay itself; the row's `checkIn` and `checkOut` show which."
          },
          "checkOut": {
            "title": "Check-out",
            "pattern": "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "YYYY-MM-DD, after check-in."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "type": "integer",
            "description": "Number of adult guests.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "type": "integer",
            "description": "Children aged 2–12.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "type": "integer",
            "description": "Infants under 2.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "type": "integer",
            "description": "Number of pets. Only pet-friendly listings are returned.",
            "default": 0
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum total price of the stay, including fees, in the selected currency."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum total price of the stay, including fees, in the selected currency."
          },
          "roomType": {
            "title": "Type of place",
            "enum": [
              "any",
              "entire",
              "private",
              "hotel",
              "shared"
            ],
            "type": "string",
            "description": "Limit results to one type of place.",
            "default": "any"
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many bedrooms."
          },
          "minBeds": {
            "title": "Minimum beds",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many beds."
          },
          "minBathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this many bathrooms."
          },
          "locale": {
            "title": "Locale",
            "enum": [
              "en-US",
              "de-DE",
              "fr-FR",
              "es-ES",
              "it-IT",
              "pt-BR",
              "ja-JP",
              "ko-KR",
              "zh-CN",
              "ru-RU",
              "ar-XX"
            ],
            "type": "string",
            "description": "Language of titles, descriptions and labels. Listing text is machine-translated by Airbnb when the host wrote it in another language.",
            "default": "en-US"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD",
              "CAD",
              "CHF",
              "CNY",
              "SEK",
              "NOK",
              "DKK",
              "INR",
              "BRL",
              "MXN",
              "HKD",
              "SGD",
              "NZD",
              "KRW",
              "TRY",
              "ZAR",
              "PLN",
              "CZK",
              "HUF",
              "ILS",
              "AED",
              "THB",
              "VND"
            ],
            "type": "string",
            "description": "Currency of all prices.",
            "default": "USD"
          },
          "dedupeAcrossSearches": {
            "title": "Save each listing once per run",
            "type": "boolean",
            "description": "A listing found by several searches is saved once. Turn off to keep each search's full result list, for example to track ranks per location.",
            "default": true
          },
          "concurrency": {
            "title": "Parallel detail requests",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many listing details are fetched at the same time.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxies work well. Requests that fail are retried on a new IP.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}