{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Scraper: Whole-City Listings, Prices, Hosts & Reviews",
    "description": "Get every Airbnb listing in a city or from listing links: price per night, rating, reviews, guests, bedrooms, host and Superhost status. Add details, availability calendar and reviews.",
    "version": "1.0",
    "x-build-id": "WMz7RICRlVfzmMm0R"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stratumics~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stratumics-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/stratumics~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-stratumics-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/stratumics~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-stratumics-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Cities, regions or neighborhoods to search, one per line, written as you would on Airbnb: \"Austin, TX\", \"Lisbon\", \"Brooklyn, NY\". The scraper splits the map until the whole place is read, so a city search returns all its listings, not just the first few hundred.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "listingUrls": {
            "title": "Listing links",
            "type": "array",
            "description": "Airbnb listing links (https://www.airbnb.com/rooms/23860926, any country domain) or listing ids, one per line. Use instead of or together with locations.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxListings": {
            "title": "Max listings per location",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "How many listings to save for each location. You pay per listing saved, so this also caps the cost. Set a high number (for example 100000) to save every listing in the place.",
            "default": 1000
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Trip start (YYYY-MM-DD). With dates you get only listings free for those dates and the total price of the stay; without dates you get every listing and its nightly price for dates Airbnb picks.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Trip end (YYYY-MM-DD). Give both dates or neither.",
            "default": ""
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adults; listings for fewer guests are left out.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Number of children (ages 2 to 12).",
            "default": 0
          },
          "priceMin": {
            "title": "Minimum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Leave out listings cheaper than this per night, in the currency below. 0 for no minimum.",
            "default": 0
          },
          "priceMax": {
            "title": "Maximum price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Leave out listings more expensive than this per night, in the currency below. 0 for no maximum.",
            "default": 0
          },
          "roomType": {
            "title": "Type of place",
            "enum": [
              "any",
              "entire",
              "private",
              "shared"
            ],
            "type": "string",
            "description": "Entire homes, private rooms, shared rooms, or any type.",
            "default": "any"
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Leave out listings with fewer bedrooms. 0 for no minimum.",
            "default": 0
          },
          "minBeds": {
            "title": "Minimum beds",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Leave out listings with fewer beds. 0 for no minimum.",
            "default": 0
          },
          "minBathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Leave out listings with fewer bathrooms. 0 for no minimum.",
            "default": 0
          },
          "insideBoundaryOnly": {
            "title": "Only listings inside the place's boundary",
            "type": "boolean",
            "description": "Keep only listings inside the outline Airbnb draws for the location (the city limits). Turn off to keep every listing in the rectangle around it, for example to include the suburbs.",
            "default": true
          },
          "includeDetails": {
            "title": "Add listing details",
            "type": "boolean",
            "description": "Read each listing page for the description, amenities, house rules, check-in and check-out times, cancellation policy (with trip dates), sleeping arrangements, rating breakdown and host details such as response rate. Charged as an extra event per listing.",
            "default": false
          },
          "includeCalendar": {
            "title": "Add availability calendar",
            "type": "boolean",
            "description": "Add each listing's calendar for this month and the next 11: which days are free and the minimum and maximum nights. Charged as an extra event per listing.",
            "default": false
          },
          "maxReviewsPerListing": {
            "title": "Reviews per listing",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many reviews to add to each listing (0 for none). Each review is charged as a review event.",
            "default": 0
          },
          "reviewsSort": {
            "title": "Reviews order",
            "enum": [
              "newest",
              "relevant"
            ],
            "type": "string",
            "description": "Newest reviews first, or Airbnb's most relevant first.",
            "default": "newest"
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter code of the currency for prices: USD, EUR, GBP, CAD, AUD, MXN and so on.",
            "default": "USD"
          },
          "locale": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "pt-BR",
              "nl",
              "pl",
              "sv",
              "da",
              "no",
              "fi",
              "cs",
              "ro",
              "hu",
              "el",
              "tr",
              "ru",
              "uk",
              "ja",
              "ko",
              "zh",
              "zh-TW",
              "id",
              "th",
              "vi",
              "he",
              "ar"
            ],
            "type": "string",
            "description": "Language of Airbnb's labels in the results (titles written by hosts stay as written).",
            "default": "en"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify's datacenter proxy works with Airbnb and is used by default. If Airbnb keeps refusing it, the scraper switches to a direct connection on its own.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}