Airbnb Listings Finder avatar
Airbnb Listings Finder
Under maintenance

Pricing

$100.00 / 1,000 results

Go to Apify Store
Airbnb Listings Finder

Airbnb Listings Finder

Under maintenance

Developed by

Cubite Technologies

Cubite Technologies

Maintained by Community

A comprehensive Crawlee-based Apify actor that extracts detailed Airbnb listing data including property details, host information, amenities, reviews, and house rules.

0.0 (0)

Pricing

$100.00 / 1,000 results

1

1

1

Last modified

18 days ago

A Crawlee-based Apify actor that extracts Airbnb listing URLs based on a specified location.

Features

  • πŸ” Search Airbnb listings by location
  • πŸ“Š Extract specified number of listing URLs
  • πŸš€ Ready to deploy on Apify platform
  • πŸ”„ Handles pagination automatically
  • πŸ“ Returns structured data with listing URLs and IDs

Input Parameters

The actor accepts the following input parameters via API POST request:

{
"location": "Miami, FL",
"numberOfListings": 10
}

Parameters

  • location (required): The location to search for Airbnb listings (e.g., "Miami, FL", "New York, NY", "Paris, France")
  • numberOfListings (required): Maximum number of listing URLs to extract (1-100)

Output

The actor returns an array of detailed listing objects with the following structure:

[
{
"listingId": "12345678",
"listingUrl": "https://www.airbnb.com/rooms/12345678",
"location": "Miami, FL",
"title": "Beautiful Beachfront Apartment",
"description": "Full description of the property...",
"images": [
"https://a0.muscache.com/im/pictures/...",
"https://a0.muscache.com/im/pictures/..."
],
"hostProfileId": "123456",
"maxGuests": 4,
"bedrooms": 2,
"bathrooms": 1.5,
"isGuestFavorite": true,
"isSuperhost": true
}
]

Data Fields

  • listingId: Unique Airbnb listing identifier
  • listingUrl: Direct URL to the listing page
  • location: Search location provided as input
  • title: Property title/name
  • description: Full property description
  • images: Array of all property image URLs
  • hostProfileId: Host's Airbnb user ID
  • maxGuests: Maximum number of guests allowed
  • bedrooms: Number of bedrooms
  • bathrooms: Number of bathrooms
  • isGuestFavorite: Whether the listing is marked as "Guest Favorite"
  • isSuperhost: Whether the host is a Superhost

Local Development

Prerequisites

  • Node.js 18 or higher
  • npm

Installation

cd airbnb-listings-finder
npm install

Running Locally

Create a test input file input.json:

{
"location": "Miami, FL",
"numberOfListings": 5
}

Run the actor:

$npm start

The results will be stored in ./apify_storage/datasets/default/.

Deploying to Apify

Method 1: Using Apify CLI

  1. Install Apify CLI:
$npm install -g apify-cli
  1. Login to Apify:
$apify login
  1. Deploy the actor:
$apify push

Method 2: Manual Upload

  1. Create a new actor on Apify Console
  2. Upload the project files or connect your Git repository
  3. Build and publish the actor

Using the Actor via API

Once deployed on Apify, you can call the actor via POST request:

curl -X POST https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"location": "Miami, FL",
"numberOfListings": 10
}'

Get Run Results

curl https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs/LAST/dataset/items \
-H "Authorization: Bearer YOUR_API_TOKEN"

Project Structure

airbnb-listings-finder/
β”œβ”€β”€ .actor/
β”‚ β”œβ”€β”€ actor.json # Apify actor configuration
β”‚ β”œβ”€β”€ input_schema.json # Input schema definition
β”‚ └── Dockerfile # Docker configuration
β”œβ”€β”€ src/
β”‚ └── main.js # Main actor code
β”œβ”€β”€ package.json # Node.js dependencies
β”œβ”€β”€ .gitignore
└── README.md

How It Works

The actor operates in two phases:

Phase 1: Collect Listing URLs

  1. Actor receives location and numberOfListings parameters via API POST request
  2. Constructs Airbnb search URL based on the location
  3. Crawls search results pages using Crawlee's PlaywrightCrawler (handles JavaScript-rendered content)
  4. Waits for page to load and scrolls to trigger lazy-loaded content
  5. Extracts listing URLs matching the pattern /rooms/{id}
  6. Handles pagination automatically to collect the requested number of listings

Phase 2: Scrape Detailed Data

  1. Visits each listing page individually
  2. Waits for full page load (including dynamic content)
  3. Extracts comprehensive data:
    • Title and description
    • All property images
    • Host profile ID
    • Property details (guests, bedrooms, bathrooms)
    • Special badges (Guest Favorite, Superhost)
  4. Compiles all data and stores in Apify dataset

Notes

  • The actor respects Airbnb's website structure as of the implementation date
  • Website changes may require updates to the selectors
  • Consider adding delays between requests to avoid rate limiting
  • For production use, consider implementing proxy rotation

License

ISC