# Vacation Rental Revenue Estimator & Competitor Intelligence (`scrapemint/airbnb-market-intelligence`) Actor

For short term rental investors and property managers. Scans Airbnb markets, benchmarks comparable properties, and returns pricing, ratings, and occupancy signals. Stop guessing and start pricing like a data driven operator.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Vacation Rental Revenue Estimator and Airbnb Competitor Intelligence

The fastest way to run an Airbnb market scan for short term rental revenue research. This Apify actor returns a clean dataset of nightly rates, total prices, bedrooms, beds, ratings, review counts, coordinates, and badges for every listing in any market you point it at. Built for short term rental investors, property managers, and STR analysts who need live Airbnb market data without paying for a monthly subscription dashboard.

**Use it to**
* Benchmark your nightly rate against the real competitive set
* Research a new short term rental market before you buy
* Track seasonal pricing moves across a portfolio
* Feed live Airbnb data into a BI tool, spreadsheet, or internal API
* Build automated client reports for vacation rental consulting

---

### How the Airbnb market scan works

```mermaid
flowchart LR
    A[Input<br/>location or search URL] --> B[Fetch Airbnb<br/>search pages]
    B --> C[Parse embedded<br/>JSON listing data]
    C --> D[Normalize fields<br/>price, rating, beds, coords]
    D --> E[(Apify dataset<br/>JSON, CSV, Excel)]
    E --> F[Spreadsheet,<br/>BI tool, or API]
````

The actor reads Airbnb search result pages, parses the JSON payload the page ships with, and returns one structured record per property. One call gives you every field a vacation rental analyst actually uses. No Airbnb account, no CAPTCHA wrangling, no stale monthly snapshots.

***

### Sample output

One record per listing. Currency is pinned to USD so benchmarks stay consistent regardless of where the actor runs.

```json
{
  "id": "1618298236649214789",
  "name": "Reflections By Homestead Modern",
  "title": "Home in Joshua Tree",
  "url": "https://www.airbnb.com/rooms/1618298236649214789",
  "latitude": 34.178,
  "longitude": -116.353,
  "bedrooms": 3,
  "beds": 3,
  "rating": 4.7,
  "reviewsCount": 10,
  "priceLabel": "$2,279 for 5 nights",
  "priceTotalLabel": "$2,278.90",
  "priceBreakdownDescription": "5 nights x $455.78",
  "badges": ["Luxe"],
  "pictureUrl": "https://a0.muscache.com/im/pictures/..."
}
```

***

### Quick start

Pass a location and get a market scan:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapemint~airbnb-market-intelligence/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "location": "Austin, TX",
    "checkIn": "2026-05-15",
    "checkOut": "2026-05-18",
    "adults": 4,
    "maxProperties": 100
  }'
```

Or pass Airbnb search URLs directly:

```json
{
  "startUrls": [
    { "url": "https://www.airbnb.com/s/Joshua-Tree--CA/homes" },
    { "url": "https://www.airbnb.com/s/Big-Bear-Lake--CA/homes" }
  ],
  "maxProperties": 250
}
```

***

### Inputs

| Field | Type | Default | Purpose |
|---|---|---|---|
| `startUrls` | array | `[]` | Airbnb search URLs. Pagination followed automatically. |
| `location` | string | `null` | Used when no URLs given. Example: `Nashville, TN`. |
| `checkIn` | `"YYYY-MM-DD"` | `null` | Optional. Affects nightly price. |
| `checkOut` | `"YYYY-MM-DD"` | `null` | Optional. |
| `adults` | integer | `2` | Guest count for pricing. |
| `maxProperties` | integer | `50` | Hard cap to prevent runaway charges. |

***

### Pricing

Pay per property. Every run has a free tier so you can test the output before you spend.

| Tier | Price | Best for |
|---|---|---|
| Free | 20 properties per run | Trying the output |
| Standard | $0.01 per property | City scans, listing benchmarks |
| Pipeline bundle | $0.05 per enriched property | Investor due diligence reports |

***

### Why it beats the alternatives

| Option | Cost for 500 properties | Freshness | Setup |
|---|---|---|---|
| Manual spreadsheet research | 8 to 12 analyst hours | Stale in 48 hours | Ongoing |
| AirDNA monthly subscription | $40 to $100 per city per month | Daily snapshot | Account signup |
| **This actor** | **$5 once** | Live at query time | Seconds |

***

### Related products in the STR data suite

Chain this actor with three companions to build a full investor report per listing.

```mermaid
flowchart LR
    A[Airbnb Market<br/>Intelligence] --> B[Airbnb Review<br/>Intelligence]
    B --> C[Vacation Rental Host<br/>Profile Enrichment]
    C --> D[STR Revenue<br/>Projector]
    D --> E[(Investor report<br/>$0.05 per property)]
```

- **Airbnb Review Intelligence**: sentiment and keyword breakdown per listing
- **Vacation Rental Host Profile Enrichment**: super host signals, portfolio size, response rate
- **Short Term Rental Revenue Projector**: seasonal occupancy model on top of the competitive set

***

### Frequently asked questions

**What is a vacation rental revenue estimator?**
It is a tool that pulls live competitive data from platforms like Airbnb so you can see what similar properties charge, how well they rate, and how to price your own listing. This actor gives you the raw competitive dataset you feed into that calculation.

**How is this different from AirDNA or Transparent?**
Those services sell monthly market subscriptions that start at $40 per city. This actor charges per property scanned, so you only pay for the markets you actually research. Data comes straight from Airbnb at query time, not from a modeled projection.

**Can I use it for Airbnb competitor analysis?**
Yes, that is the primary use case. Filter the dataset by bedroom count, guest capacity, and neighborhood to benchmark your listing against the real competitive set in any city.

**Does it work for international markets?**
Any city Airbnb indexes. Currency is pinned to USD regardless of where the actor runs, so your benchmarks stay consistent.

**How fresh is the pricing data?**
Live at query time. Every run hits Airbnb directly. No cached dashboards, no stale monthly snapshots.

**What fields are in the dataset?**
Property ID, name, title, URL, latitude, longitude, bedrooms, beds, rating, review count, full price label, total price, nightly breakdown, badges, and hero picture URL.

***

### Limits

- Public search pages only. No private host data or authenticated scraping.
- If Airbnb rotates the page shape, a DOM fallback keeps the actor working while the JSON parser gets patched. Tests run before every deploy.
- Datacenter proxies handle most markets. Residential fallback available for high intensity scans.
- Same input returns the same records within a 60 minute window.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Airbnb search result URLs. Example: https://www.airbnb.com/s/Austin--TX/homes

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

City, neighborhood, or region. Used only if startUrls is empty. Example: Austin, TX

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

YYYY-MM-DD. Optional.

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

YYYY-MM-DD. Optional.

## `adults` (type: `integer`):

Used for nightly price estimation.

## `maxProperties` (type: `integer`):

Hard cap on billable properties. Prevents runaway charges on large markets.

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

Apify proxy settings. Defaults to BUYPROXIES94952 US datacenter.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.airbnb.com/s/Austin--TX/homes"
    }
  ],
  "adults": 2,
  "maxProperties": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.airbnb.com/s/Austin--TX/homes"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "BUYPROXIES94952"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/airbnb-market-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 = {
    "startUrls": [{ "url": "https://www.airbnb.com/s/Austin--TX/homes" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["BUYPROXIES94952"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.airbnb.com/s/Austin--TX/homes"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "BUYPROXIES94952"
    ]
  }
}' |
apify call scrapemint/airbnb-market-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapemint/airbnb-market-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vacation Rental Revenue Estimator & Competitor Intelligence",
        "description": "For short term rental investors and property managers. Scans Airbnb markets, benchmarks comparable properties, and returns pricing, ratings, and occupancy signals. Stop guessing and start pricing like a data driven operator.",
        "version": "0.3",
        "x-build-id": "vSljDY3G9NTVW9vUs"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapemint~airbnb-market-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapemint-airbnb-market-intelligence",
                "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/scrapemint~airbnb-market-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-scrapemint-airbnb-market-intelligence",
                "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/scrapemint~airbnb-market-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-scrapemint-airbnb-market-intelligence",
                "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": {
                    "startUrls": {
                        "title": "Airbnb search URLs",
                        "type": "array",
                        "description": "Paste one or more Airbnb search result URLs. Example: https://www.airbnb.com/s/Austin--TX/homes",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "location": {
                        "title": "Location (alternative to URLs)",
                        "type": "string",
                        "description": "City, neighborhood, or region. Used only if startUrls is empty. Example: Austin, TX"
                    },
                    "checkIn": {
                        "title": "Check in date",
                        "type": "string",
                        "description": "YYYY-MM-DD. Optional."
                    },
                    "checkOut": {
                        "title": "Check out date",
                        "type": "string",
                        "description": "YYYY-MM-DD. Optional."
                    },
                    "adults": {
                        "title": "Number of guests",
                        "minimum": 1,
                        "maximum": 16,
                        "type": "integer",
                        "description": "Used for nightly price estimation.",
                        "default": 2
                    },
                    "maxProperties": {
                        "title": "Maximum properties to extract",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on billable properties. Prevents runaway charges on large markets.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy settings. Defaults to BUYPROXIES94952 US datacenter."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
