{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Listings Scraper - Search by City, Nightly Prices",
    "description": "Get Airbnb listings by city with dates and guests: price per night, total price, rating, beds and URL - or paste listing URLs / room IDs. An Airbnb reviews scraper too: review text, rating, date and host reply for any listing, lowest rated first for complaints. No API key, no login.",
    "version": "0.1",
    "x-build-id": "RAktLFguY0xkhomCh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/flash_scraper~airbnb-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-flash_scraper-airbnb-listings-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/flash_scraper~airbnb-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-flash_scraper-airbnb-listings-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/flash_scraper~airbnb-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-flash_scraper-airbnb-listings-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 to search",
            "type": "array",
            "description": "City, region or address as you would type it on Airbnb, e.g. \"Lisbon, Portugal\" or \"Brooklyn, New York\". Add the country to avoid ambiguity. Leave empty (or keep the sample \"Lisbon, Portugal\") and give listing URLs / room IDs below to use detail mode instead.",
            "default": [
              "Lisbon, Portugal"
            ],
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD. Give both dates for a real quote. Leave both empty and Airbnb picks the dates itself (a different short stay per listing) - the run's status message says which."
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "YYYY-MM-DD, after the check-in date."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adults the quote is for.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Children (2-12).",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Infants (under 2).",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Pets travelling with you.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "ISO currency code for the prices, e.g. USD, EUR, GBP. The row also carries the symbol Airbnb printed, so a quote is always interpretable.",
            "default": "USD"
          },
          "listingUrls": {
            "title": "Airbnb listing URLs",
            "type": "array",
            "description": "Full listing URLs, e.g. https://www.airbnb.com/rooms/20669368. Extra query parameters are fine and are ignored.",
            "default": [
              "https://www.airbnb.com/rooms/20669368",
              "https://www.airbnb.com/rooms/10990361",
              "https://www.airbnb.com/rooms/1030960"
            ],
            "items": {
              "type": "string"
            }
          },
          "roomIds": {
            "title": "Room IDs",
            "type": "array",
            "description": "Bare numeric Airbnb room IDs, e.g. 20669368 — the number at the end of a listing URL.",
            "items": {
              "type": "string"
            }
          },
          "enrichDetails": {
            "title": "Add room-page details to search rows",
            "type": "boolean",
            "description": "Search mode only: after the search, open each listing's page and merge description, property/room type, guest capacity, the sub-ratings, host name and locality into the row. One extra page fetch plus a 1.2 s pause per listing (a 200-listing run adds several minutes).",
            "default": false
          },
          "includeImages": {
            "title": "Include all image URLs",
            "type": "boolean",
            "description": "Add an 'images' array with every photo URL found. Off = only the main photo plus a count.",
            "default": false
          },
          "locale": {
            "title": "Language",
            "type": "string",
            "description": "Preferred content language for the listing pages read in detail mode and by enrichDetails, e.g. en, fr, es, de. Search pages are always requested in English: the prices, nights and ratings are parsed from the English rendering.",
            "default": "en"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of listings to deliver in this run, across all locations (a later location gets the remaining budget).",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Route requests through Apify Proxy. The search surface answered from Apify datacenter IPs without a proxy on 2026-09-30; enable residential proxies if a run reports being blocked.",
            "default": {
              "useApifyProxy": false
            }
          },
          "reviews": {
            "title": "Guest reviews",
            "enum": [
              "off",
              "with_listings",
              "only"
            ],
            "type": "string",
            "description": "off = listing rows only (as before). with_listings = each listing row followed by its review rows. only = review rows only: the listings are still read to know which rooms, but their rows are not delivered or billed. Every delivered review row is billed like a listing row (one result event).",
            "default": "off"
          },
          "maxReviewsPerListing": {
            "title": "Max reviews per listing",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Review rows delivered per listing, counted after the rating / date filters below. Airbnb serves 24 reviews per page; a listing with fewer reviews delivers what it has.",
            "default": 50
          },
          "reviewsSort": {
            "title": "Review order",
            "enum": [
              "MOST_RECENT",
              "MOST_RELEVANT",
              "LOWEST_RATED",
              "HIGHEST_RATED"
            ],
            "type": "string",
            "description": "Review order, as Airbnb's own sort menu offers it (each order measured 2026-10-02). Lowest rated first + reviewsMaxRating 3 reads the complaints and stops as soon as higher ratings begin.",
            "default": "MOST_RECENT"
          },
          "reviewsMaxRating": {
            "title": "Only reviews rated at most",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews with this many stars or fewer, e.g. 3 = the complaints. Filtered before billing: a skipped review is never delivered or charged. 5 = every review.",
            "default": 5
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional YYYY-MM-DD: keep reviews written on or after this date. With the most-recent order the run stops paging a listing as soon as a whole page is older."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}