# Airbnb Listing Price & Location Finder (`nimbryxo-studio/airbnb-listing-price-and-location-finder`) Actor

Search Airbnb by location and stay dates for listing price, rating, Superhost and verification status, GPS coordinates, and photos per property.

- **URL**: https://apify.com/nimbryxo-studio/airbnb-listing-price-and-location-finder.md
- **Developed by:** [Nimbryxo-studio](https://apify.com/nimbryxo-studio) (community)
- **Categories:** Travel, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Airbnb Listing Price & Location Finder

Search Airbnb for any city, neighborhood, or region and get back structured listing data — price, rating, host status, GPS coordinates, and photos — straight from the search results, with no need to open each listing one by one.

### What this actor does

- Searches Airbnb listings for a location by name and reads the first page of results (usually under 20 listings)
- Accepts check-in/check-out dates and guest count to return exact stay pricing instead of a generic nightly rate
- Reports whether each listing's host is a Superhost and/or identity-verified
- Returns GPS coordinates and up to 10 photo URLs per listing
- Every record keeps the same columns: missing text comes back as an empty string, missing coordinates as `0`, and a listing without photos gets an empty `photos` list; `originalPrice` and `hostPhoto` are the exception and are left out entirely when a listing has no discount or no visible host photo

### Output per listing

- `id` — Airbnb's unique listing ID
- `url` — direct link to the listing page
- `name` — the property's title
- `type` — property type and location, e.g. `Hotel in New York`
- `subtitle` — the short description snippet shown under the listing
- `price` — the current displayed price, e.g. `$150`
- `originalPrice` — the pre-discount price, present only when the listing is discounted
- `priceQualifier` — what the price covers, e.g. `per night` or `for 5 nights`
- `rating` — average rating with review count, e.g. `4.85 (312)`
- `isSuperhost` — whether the host has Superhost status
- `isVerified` — whether the host's identity is verified
- `hostPhoto` — URL of the host's profile photo, present only when one is visible on the search result
- `latitude`, `longitude` — GPS coordinates of the listing (`0` when Airbnb doesn't provide them)
- `photos` — up to 10 listing photo URLs (can be empty)
- `searchUrl` — the Airbnb search URL the listing was found on
- `scrapedAt` — when the actor fetched the search page (the same value on every record of a run)

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `location` | string | – | Location to search, e.g. `New York`, `Paris, France`, `Tokyo`. Required. |
| `checkIn` | string | – | Check-in date (`YYYY-MM-DD`). Leave empty for a general search without dates. |
| `checkOut` | string | – | Check-out date (`YYYY-MM-DD`). Leave empty for a general search without dates. |
| `adults` | integer | `1` | Number of adult guests (1–16); affects pricing and availability. |
| `maxItems` | integer | `20` | Maximum listings to return (1–100), capped by how many listings Airbnb's own search results page contains (typically under 20). |
| `proxy` | object | – | Proxy configuration, recommended for larger runs to avoid rate limiting. |

### Example: quick search, no dates

```json
{
  "location": "New York",
  "maxItems": 10
}
```

### Example: a specific stay for two guests

```json
{
  "location": "Paris, France",
  "checkIn": "2026-07-01",
  "checkOut": "2026-07-05",
  "adults": 2,
  "maxItems": 18
}
```

### Example: large family group

```json
{
  "location": "Orlando, FL",
  "adults": 6,
  "maxItems": 18
}
```

### Use cases

- **Travel planning** — pull the top search results for a destination into a spreadsheet to compare prices and ratings before booking
- **Market research** — compare nightly rates and property mix across neighborhoods or cities
- **Competitive analysis for hosts** — see how similarly positioned listings in your area are priced and rated
- **Price monitoring** — re-run the same search over time to track how rates move for a destination
- **Real estate research** — use listing GPS coordinates to map short-term rental density in an area

### FAQ

**How many listings can I get per search?**
Each run reads a single Airbnb search results page, so the listing count is capped by how many results that page contains (typically under 20) regardless of how high you set `maxItems`. If Airbnb blocks the request or the page has no listings, the run is marked as failed with an explanation instead of returning an empty dataset.

**Do I need to set check-in and check-out dates?**
No — without dates you get Airbnb's general displayed pricing. With dates set, `price` reflects the actual total for that specific stay.

**Why are some fields empty strings instead of missing?**
Not every listing has a subtitle, rating, or similar text field — rather than removing those fields, the actor returns an empty string so every record keeps the same shape. The two exceptions are `originalPrice` and `hostPhoto`, which are left out of the record entirely when a listing has no discount or no visible host photo.

**Do I need a proxy?**
Not strictly, but a residential proxy is recommended for larger or repeated runs to avoid being rate-limited by Airbnb.

**Does this require an Airbnb account?**
No. It reads Airbnb's public search results, which don't require logging in.

**What locations can I search?**
Anything Airbnb itself supports — cities, neighborhoods, regions, countries, or specific addresses worldwide.

**Is this affiliated with Airbnb?**
No. This is an independent, third-party actor that reads Airbnb's publicly accessible search pages; it is not affiliated with or endorsed by Airbnb.

# Actor input Schema

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

The location to search for Airbnb listings (e.g., 'New York', 'Paris, France', 'Tokyo').

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

Check-in date in YYYY-MM-DD format (e.g., '2025-06-01'). Leave empty for general search without dates.

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

Check-out date in YYYY-MM-DD format (e.g., '2025-06-05'). Leave empty for general search without dates.

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

Number of adult guests. Affects pricing and availability.

## `maxItems` (type: `integer`):

Maximum number of Airbnb listings to scrape. The scraper returns up to 18 results per search page.

## `proxy` (type: `object`):

Proxy settings for the scraper. Recommended for large-scale scraping to avoid rate limiting.

## Actor input object example

```json
{
  "location": "New York",
  "adults": 1,
  "maxItems": 5
}
```

# Actor output Schema

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

Dataset containing scraped Airbnb listings with property names, nightly prices, ratings, superhost status, GPS coordinates, and photo URLs.

# 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": "New York",
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("nimbryxo-studio/airbnb-listing-price-and-location-finder").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": "New York",
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("nimbryxo-studio/airbnb-listing-price-and-location-finder").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": "New York",
  "maxItems": 5
}' |
apify call nimbryxo-studio/airbnb-listing-price-and-location-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nimbryxo-studio/airbnb-listing-price-and-location-finder"
        }
    }
}
```

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/02gBCbgBRDoLpMoY5/builds/ZKoaitiacJr8FXZfn/openapi.json
