# Airbnb STR Market Intelligence (`azharmushtaq/airbnb-str-intelligence`) Actor

Scrape Airbnb listings by city or neighborhood and get short-term rental market intelligence: median nightly rates, occupancy estimates, revenue potential by bedroom tier, and competitor benchmarks.

- **URL**: https://apify.com/azharmushtaq/airbnb-str-intelligence.md
- **Developed by:** [Azhar Mushtaq](https://apify.com/azharmushtaq) (community)
- **Categories:** Real estate, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Airbnb STR Market Intelligence Scraper

Extract Airbnb listings by city or neighborhood and generate **short-term rental (STR) market intelligence**: median nightly rates, occupancy estimates, revenue projections by bedroom tier, and competitive benchmarks — all in one run.

Used by real estate investors, STR operators, Airbnb hosts, and market researchers to answer:

> *"Is buying a property in \[city] profitable as a short-term rental?"*

***

### What you get

#### Per-listing data

- Listing ID, name, URL, room type, bedrooms, beds, bathrooms
- Nightly rate and currency
- Rating, review count, superhost status
- GPS coordinates (lat/lng)
- **Occupancy rate** (0–100%) — inferred from the actual availability calendar
- **Estimated monthly revenue** = `nightly_rate × occupancy × 30`

#### Market summary (1 record, type: `MARKET_SUMMARY`)

- **Overall market**: median/avg nightly rate, P25/P75 rate, avg rating, superhost %
- **By bedroom count**: separate metrics for studios, 1BR, 2BR, 3BR, 4BR+
- **Superhost premium**: how much more superhosts charge vs regular hosts
- **Top 10 listings** by estimated monthly revenue
- If calendar scraping enabled: avg/median occupancy %, monthly revenue estimates

***

### How to use

#### Basic market scan (listings + rates only)

```json
{
  "location": "Miami Beach, FL",
  "maxListings": 200,
  "roomType": "entire_home",
  "currency": "USD"
}
```

#### Deep STR investment analysis (includes occupancy)

```json
{
  "location": "Nashville, TN",
  "maxListings": 150,
  "roomType": "entire_home",
  "scrapeCalendar": true,
  "calendarMonths": 3,
  "currency": "USD"
}
```

#### Filter by bedroom count

```json
{
  "location": "Austin, TX",
  "maxListings": 100,
  "minBedrooms": 2,
  "maxBedrooms": 3,
  "scrapeCalendar": true
}
```

***

### Pricing

| Mode | Cost estimate |
|---|---|
| Listing scrape (no calendar) | ~$0.002 / listing |
| Calendar scraping | +$0.001 / listing |
| 200 listings, no calendar | ~$0.40 |
| 200 listings + calendar | ~$0.60 |
| Full market scan (500 listings + calendar) | ~$1.50 |

> Prices include residential proxy costs. See Apify's [pricing calculator](https://apify.com/pricing) for details.

***

### Output format

Two record types in the dataset:

#### `LISTING`

```json
{
  "type": "LISTING",
  "id": "12345678",
  "name": "Beachfront Studio with Ocean View",
  "url": "https://www.airbnb.com/rooms/12345678",
  "roomType": "entire_home",
  "bedrooms": 1,
  "bathrooms": 1,
  "nightly_rate": 149,
  "currency": "USD",
  "rating": 4.92,
  "reviews_count": 247,
  "is_superhost": true,
  "lat": 25.7617,
  "lng": -80.1918,
  "city": "Miami Beach",
  "occupancy_rate": 78,
  "estimated_monthly_revenue": 3479,
  "scrapedAt": "2026-08-23T14:30:00Z"
}
```

#### `MARKET_SUMMARY`

```json
{
  "type": "MARKET_SUMMARY",
  "location": "Miami Beach",
  "scraped_at": "2026-08-23T14:32:00Z",
  "listings_analyzed": 198,
  "listings_with_occupancy": 198,
  "overall": {
    "listing_count": 198,
    "median_nightly_rate": 149,
    "avg_nightly_rate": 187,
    "p25_nightly_rate": 95,
    "p75_nightly_rate": 249,
    "avg_rating": 4.74,
    "superhost_pct": 38,
    "avg_reviews": 89,
    "avg_occupancy_pct": 72,
    "median_occupancy_pct": 74,
    "estimated_monthly_revenue": 3206
  },
  "by_bedrooms": {
    "1br": { "count": 67, "median_nightly_rate": 115, "avg_occupancy_pct": 78, "estimated_monthly_revenue": 2686 },
    "2br": { "count": 54, "median_nightly_rate": 189, "avg_occupancy_pct": 71, "estimated_monthly_revenue": 4028 },
    "3br": { "count": 31, "median_nightly_rate": 289, "avg_occupancy_pct": 64, "estimated_monthly_revenue": 5553 }
  }
}
```

***

### Tips for accurate results

- **Use residential proxies** (enabled by default) — Airbnb blocks datacenter IPs
- For investment analysis, **enable calendar scraping** — occupancy rates are the most valuable metric
- Scrape **100+ listings** for statistically reliable market data
- Run during **weekdays** for typical availability (avoid holiday dates)
- For seasonal markets, run in **peak season AND off-season** and compare

***

### Competitor comparison

| Tool | Price / 1K results | Occupancy data | Market summary | Auto-pagination |
|---|---|---|---|---|
| **This actor** | ~$2 | ✅ (calendar) | ✅ (generated) | ✅ |
| AirDNA | $40–500/month | ✅ | ✅ | N/A |
| Most Apify Airbnb actors | $5–16 | ❌ | ❌ | Partial |

***

### Limitations

- Airbnb shows max ~300 listings per search (their frontend limit). For larger markets, use multiple searches (by neighborhood, price range, etc.)
- Calendar occupancy is an estimate based on public availability data, not actual booking records
- Prices may not reflect cleaning fees or taxes
- Airbnb may block aggressive scrapers — residential proxies are required

***

### Maintained

This actor is actively maintained. If Airbnb updates their site structure and the actor breaks, file an issue or contact the developer — updates are typically released within 48 hours.

# Actor input Schema

## `location` (type: `string`):

City, neighborhood, or area to analyze (e.g. 'Miami Beach, FL', 'Nashville, TN', 'Lisbon, Portugal').

## `checkIn` (type: `string`):

Check-in date for nightly rate pricing (YYYY-MM-DD). Leave blank for average pricing across dates.

## `checkOut` (type: `string`):

Check-out date (YYYY-MM-DD). Must be used together with Check-in date.

## `maxListings` (type: `integer`):

Maximum number of individual listings to collect. More = better market analysis accuracy.

## `scrapeCalendar` (type: `boolean`):

Fetch availability calendar per listing to estimate real occupancy rate. Each calendar scrape costs extra — recommended for deep market analysis.

## `calendarMonths` (type: `integer`):

How many months ahead to check availability calendar (1–6). Higher = more accurate occupancy estimate. Only applies when 'Scrape calendar' is enabled.

## `minBedrooms` (type: `integer`):

Minimum bedrooms to include. Set 0 to include studios.

## `maxBedrooms` (type: `integer`):

Maximum bedrooms. Set 0 to include all sizes.

## `roomType` (type: `string`):

Filter by room type. 'entire\_home' is the default for STR investment analysis.

## `currency` (type: `string`):

Currency code for price data (e.g. USD, EUR, GBP).

## `proxyConfiguration` (type: `object`):

Residential proxies strongly recommended for Airbnb to avoid blocks.

## Actor input object example

```json
{
  "location": "Miami Beach, FL",
  "maxListings": 10,
  "scrapeCalendar": false,
  "calendarMonths": 3,
  "minBedrooms": 0,
  "maxBedrooms": 0,
  "roomType": "entire_home",
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "Miami Beach, FL",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("azharmushtaq/airbnb-str-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "Miami Beach, FL",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("azharmushtaq/airbnb-str-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "Miami Beach, FL",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call azharmushtaq/airbnb-str-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,azharmushtaq/airbnb-str-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ERMah2TXvqmAmj5lE/builds/5s28OB9wf5o14BMea/openapi.json
