{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Reviews & Guest Sentiment Miner",
    "description": "Collect every Airbnb review for any listing: full text, 1-5 star rating, exact date, language, reviewer and the host's reply. Each listing also gets its published rating breakdown, star histogram, topic tags, reply rate, monthly review volume and language mix. No account needed.",
    "version": "0.0",
    "x-build-id": "vJhxy4ZkgilcXzq5v"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~airbnb-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-airbnb-reviews-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/apt_marble~airbnb-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-airbnb-reviews-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/apt_marble~airbnb-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-airbnb-reviews-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": {
          "listingUrls": {
            "title": "Listing links",
            "maxItems": 500,
            "type": "array",
            "description": "The Airbnb listings to collect reviews for. Paste room links exactly as they appear in the address bar, for example \"https://www.airbnb.com/rooms/5398166\". Up to 500 listings per run.",
            "items": {
              "type": "string"
            }
          },
          "listingIds": {
            "title": "Listing ids",
            "maxItems": 500,
            "type": "array",
            "description": "The same thing as the links above, but as bare numeric ids — handy when the ids come out of a spreadsheet or an earlier run.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Market",
            "type": "string",
            "description": "A place to collect listings from when you have not supplied any links — type it exactly as you would in Airbnb's own search box, for example \"Paris, France\" or \"Austin, Texas\". Also required whenever you use a map area below.",
            "default": ""
          },
          "bbox": {
            "title": "Map area",
            "type": "object",
            "description": "Restrict the market above to a rectangle on the map, as {\"neLat\": 48.9, \"neLng\": 2.45, \"swLat\": 48.8, \"swLng\": 2.25} with the north-east corner first. Leave empty for the whole market. A map area must always be paired with a market name."
          },
          "maxListings": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many listings to work through in one run.",
            "default": 50
          },
          "maxReviewsPerListing": {
            "title": "Maximum reviews per listing",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Upper bound on reviews collected for each listing. Reviews arrive newest first, so a smaller number gives you the most recent ones. Set it to 0 to collect only the per-listing summary row with the rating breakdown, histogram and topic tags.",
            "default": 200
          },
          "sinceDate": {
            "title": "Only reviews from",
            "type": "string",
            "description": "Keep only reviews written on or after this date, as YYYY-MM-DD. Because reviews arrive newest first, the actor stops a listing as soon as it reaches older reviews — which makes scheduled runs cheap.",
            "default": ""
          },
          "minRating": {
            "title": "Minimum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews rated at least this many stars. Leave empty for all of them."
          },
          "maxRating": {
            "title": "Maximum star rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Keep only reviews rated at most this many stars — set it to 3 to read just the critical ones."
          },
          "languages": {
            "title": "Review languages",
            "maxItems": 20,
            "type": "array",
            "description": "Keep only reviews written in these languages, as short codes such as \"en\", \"fr\", \"es\". Leave empty to keep every language. A review's language is not the reviewer's nationality.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeListingSummary": {
            "title": "Add the listing's rating breakdown",
            "type": "boolean",
            "description": "Reads each listing's own page for the published overall rating and review count, the six category ratings, the 1-5 star histogram, Airbnb's topic tags, the property type, guest capacity and bedroom/bed/bathroom counts, and attaches them to that listing's summary row. This is what the per-summary charge covers. Every listing gets a summary row either way — switched off, those rows carry only the figures derived from the reviews collected.",
            "default": true
          },
          "includeTranslations": {
            "title": "Add machine translations",
            "type": "boolean",
            "description": "Adds Airbnb's own translation of a review when it publishes one, alongside the original text. Roughly half of non-English reviews carry one.",
            "default": false
          },
          "maxRequests": {
            "title": "Maximum reads per run",
            "minimum": 1,
            "maximum": 15000,
            "type": "integer",
            "description": "A hard ceiling on how much work one run may do. The projected cost is written to the log before any collecting starts, and the run finishes cleanly with whatever it has once the ceiling is reached.",
            "default": 1500
          },
          "maxConcurrency": {
            "title": "Listings in parallel",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many listings to work on at the same time. 4 is a good balance; lower it if you see failures.",
            "default": 4
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "JPY",
              "CNY",
              "INR",
              "BRL",
              "MXN",
              "ZAR",
              "AED",
              "SGD",
              "HKD",
              "NZD",
              "TRY",
              "MAD"
            ],
            "type": "string",
            "description": "Currency used for any money Airbnb shows alongside a listing. Always set it explicitly so results stay comparable between runs.",
            "default": "USD"
          },
          "locale": {
            "title": "Language",
            "enum": [
              "en",
              "fr",
              "de",
              "es",
              "it",
              "pt",
              "nl",
              "pl",
              "tr",
              "ru",
              "ja",
              "ko",
              "zh"
            ],
            "type": "string",
            "description": "Language for listing titles, category labels and topic tags. Only English is verified end to end; other languages are best-effort.",
            "default": "en"
          },
          "proxyCountry": {
            "title": "Country to appear to browse from",
            "enum": [
              "",
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "nl",
              "se",
              "pl",
              "pt",
              "ie",
              "ch",
              "at",
              "be",
              "gr",
              "tr",
              "in",
              "sg",
              "jp",
              "br",
              "mx",
              "za",
              "ae",
              "nz"
            ],
            "type": "string",
            "description": "Which country the run should look like it is browsing from. It does not change which reviews you get; leave it on the default unless you have a reason to change it.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}