---
title: "Short-term rental data"
description: "Short-term rental data from Airbnb, Vrbo and Booking.com: nightly rates, cleaning fees, calendars, reviews and amenities for investors and hosts."
canonical: https://www.zenrows.com/use-cases/short-term-rental-data
updated: 2026-10-18
---

# Short-term rental data

Short-term rental data is the listing-level record of vacation rentals on Airbnb, Vrbo and Booking.com: nightly rate, fees, calendar availability, reviews and amenities. Zenrows collects it from the listing and search pages, including the calendar data behind them, and returns JSON you can turn into occupancy estimates, pricing comps and market reports.

## Sample output: one rental listing with calendar

```json
{
  "platform": "airbnb",
  "listing_id": "000000000",
  "title": "Two-bedroom flat near the old town",
  "market": "Lisbon, Portugal",
  "property_type": "entire_home",
  "bedrooms": 2,
  "beds": 3,
  "max_guests": 5,
  "nightly_rate": 142.0,
  "cleaning_fee": 55.0,
  "currency": "EUR",
  "minimum_nights": 3,
  "rating": 4.87,
  "review_count": 213,
  "host_is_superhost": true,
  "amenities": ["wifi", "kitchen", "washer", "air_conditioning", "self_check_in"],
  "calendar_next_90_days": { "available": 31, "blocked": 59 },
  "calendar_sample": [
    { "date": "2026-11-14", "available": false },
    { "date": "2026-11-15", "available": false },
    { "date": "2026-11-16", "available": true, "price": 128.0 }
  ],
  "scraped_at": "2026-10-17T03:00:00Z"
}
```

An illustrative listing with its next 90 days summarised. Blocked nights include both bookings and owner blocks, so treat them as an occupancy proxy, not a booking count.

## What short-term rental teams collect

Airbnb data and other vacation rental data answer one question from different sides: what a property earns in a given market. Investors look before they buy, hosts and property managers look every week.

| Job | Data you collect | Typical sources |
|---|---|---|
| Market sizing | Active listings, property types, bedroom mix per neighbourhood | Airbnb and Vrbo search results by area |
| Occupancy estimates | Calendar availability per night, tracked over weeks | Airbnb and Vrbo listing calendars |
| Dynamic pricing comps | Nightly rate by date, weekend premium, minimum stay, cleaning fee | Comparable listings on Airbnb, Vrbo, Booking.com apartments |
| Acquisition underwriting | Rate and availability history for listings near a target property | Listings within a radius of the address |
| Review and quality benchmarking | Rating, sub-scores, review count, review text, superhost status | Listing review sections |
| Regulation and supply tracking | New listings, delisted units, licence numbers shown on listings | Search pages refreshed weekly, city licence registries |

## Why Airbnb data scraping breaks

Rental platforms render almost everything in the browser and price by date. A listing URL without dates has no price, and the calendar arrives from a separate background call.

| What breaks | What it looks like | How Zenrows handles it |
|---|---|---|
| JavaScript-only pages | The raw HTML has no rate, amenities or reviews | Adaptive Stealth Mode escalates to browser rendering and returns the page after it has rendered |
| Calendar in a background call | Availability is not in the visible HTML at all | Fetch captures the page's background network calls (XHR), calendar included |
| Bot protection at volume | CAPTCHA pages and empty results after a few hundred listings | Zenrows' stealth gets through the platforms' bot protection at volume |
| Prices depend on dates and guests | The same listing shows a different total for every stay | Put check-in, check-out and guests in the URL and price a grid of dates |
| Search caps per page | A city search shows a limited number of results however many exist | Split the market into smaller map areas or price bands and search each one |

## How to collect short-term rental data with Zenrows

1. **List the market.** Run search pages for each neighbourhood or map area and collect listing IDs and URLs.
2. **Fetch each listing.** Send the listing URL with dates and guests in the query, with a full browser render that captures the page's background calendar and pricing calls.
3. **Keep a calendar history.** Store availability per night each run. A night that turns from available to blocked between runs is your strongest booking signal.
4. **Refresh the whole market.** Put every listing URL in a JSONL file and run it as a Batch job weekly, or daily for markets you price actively.

```python Python
# pip install requests
import requests

params = {
    "apikey": "YOUR_ZENROWS_API_KEY",
    # listing URL with stay dates, e.g. ...?check_in=2026-11-16&check_out=2026-11-19&adults=2
    "url": LISTING_URL,
    "js_render": "true",
    "premium_proxy": "true",
    "proxy_country": "pt",
    "json_response": "true",
}
data = requests.get("https://api.zenrows.com/v1/", params=params).json()

# The calendar and pricing responses arrive as captured network calls
for call in data.get("xhr", []):
    if "calendar" in call.get("url", "").lower():
        print(call["url"])
```

```bash CLI
npx -y @zenrows/cli init
# One listing as structured JSON
zenrows extract "LISTING_URL" --autoparse
# listings.jsonl: one {"url": "LISTING_URL", "extract": "auto"} per line
zenrows batch create listings.jsonl --wait
zenrows batch results JOB_ID --out listings-results.jsonl
```

```text Claude Code (MCP)
# Connect once
claude mcp add zenrows -e ZENROWS_API_KEY=YOUR_ZENROWS_API_KEY -- npx -y @zenrows/mcp

# Then ask:
Use Zenrows to open these 10 Airbnb listings in Lisbon for 16 to 19 November 2026, 2 adults. Return a table with nightly rate, cleaning fee, minimum nights, rating, review count and bedrooms, sorted by total stay price.
```

## Which Zenrows product fits

| If you need to | Use | Why |
|---|---|---|
| Read one listing with its calendar | [Fetch](/products/fetch) | Renders the listing and captures its background calendar calls |
| Get listing fields without writing selectors | [Extract](/products/extract) | Automatic structured extraction returns rate, amenities and reviews as JSON |
| Refresh every listing in a market | [Batch](/products/batch) | Thousands of listing URLs as one job, results by webhook |
| Run market refreshes from scripts or cron | [CLI](/cli) | One command submits a JSONL file of listings and waits for results |
| Ask for comps in plain English | [MCP Server](/mcp) | An analyst asks Claude or Cursor and Zenrows fetches the listings |

## What success looks like

| Measure | What good looks like | How to check it |
|---|---|---|
| Market coverage | Your listing count per area is close to what the platform shows across all its search slices | Compare unique listing IDs with the sum of search result counts |
| Calendar continuity | Every tracked listing has a calendar snapshot for every run | Count listings with gaps in their snapshot history |
| Rate completeness | Nightly rate, cleaning fee and minimum stay are present for each priced date | Report empty fields per platform per run |
| Delisting detection | Removed listings are flagged within one refresh | Track 404 and 410 responses per run |
| Market refresh time | A full market refresh finishes before your pricing or reporting run starts | Log start and end time of each Batch job per market |

## Short-term rental data FAQ

### What is short-term rental data?

Short-term rental data is listing-level information about vacation rentals: nightly rates, fees, minimum stay, availability calendars, reviews, amenities and host details, collected from platforms such as Airbnb, Vrbo and Booking.com. Investors, property managers and city planners use it to estimate revenue, set prices and track supply in a market.

### How do I scrape Airbnb data?

Collect listing URLs from search pages for each area, then fetch each listing with Adaptive Stealth Mode. Add stay dates and guests to the URL so a price appears, and capture the page's background network calls to get the calendar and pricing responses. Run the full list through Batch to refresh a market.

### Can I estimate occupancy from Airbnb calendars?

Calendars give you an occupancy proxy. A blocked night can be a booking or an owner block, so a single snapshot overstates occupancy. Scrape calendars regularly and count nights that switch from available to blocked between runs; that change is much closer to a booking. Validate the method against a few properties whose real bookings you know.

### Is there a short-term rental data API?

The platforms' own APIs are built for hosts and channel partners managing their own listings, not for market-wide listing and calendar data. Zenrows works as the short-term rental data API: you send listing or search URLs, it returns rendered pages, captured calendar responses or JSON from Extract, and you own the dataset and the occupancy method.

### Is it legal to scrape Airbnb?

Listing prices, availability and amenities are public, and collecting them for market research is common. Host names, photos and review text can carry personal data or copyright, so collect only what your analysis needs and do not republish it. Check the platform's terms and ask your legal team about your use.

### How often should I refresh vacation rental data?

Match the refresh to the decision. For dynamic pricing in a market you operate in, refresh calendars and rates daily, since nights book and prices move every day. For investment analysis or city supply reports, a weekly snapshot is usually enough. Refresh listing details such as amenities and bedrooms monthly, and flag delistings on every run.

### Can I get Vrbo and Booking.com rentals too?

Yes. Vrbo listings and Booking.com apartments work the same way: dates and guests in the URL, Adaptive Stealth Mode for the request, and Extract or your own CSS selectors for the fields. Keep a platform field in your schema, because the same property is often listed on more than one site.

## Related use cases

- [Real estate web scraping](https://www.zenrows.com/use-cases/real-estate-web-scraping.md): Listings, prices, agents and price history from property portals, kept current at portfolio scale.
- [Hotel data scraping](https://www.zenrows.com/use-cases/hotel-data-scraping.md): Nightly rates, room types and parity gaps from Booking.com, Expedia, Google Hotels and brand sites.
- [Travel data scraping](https://www.zenrows.com/use-cases/travel-data-scraping.md): Fares, room rates, car hire quotes, tour prices and reviews from airlines, OTAs and travel marketplaces.
- [Review scraping](https://www.zenrows.com/use-cases/review-scraping.md): Review text, ratings, dates and replies from Amazon, Google, Yelp, Trustpilot and G2, every page.
- [Dynamic pricing data](https://www.zenrows.com/use-cases/dynamic-pricing.md): Live competitor price, stock and demand inputs for a repricing engine, on demand or on a schedule.
- [Alternative data for investors](https://www.zenrows.com/use-cases/alternative-data.md): Hiring, pricing, app ranks, reviews and store counts per ticker, collected weekly as point-in-time series.

Start free: https://app.zenrows.com/register. Docs: https://docs.zenrows.com
