Airbnb Scraper - Host Leads, Emails, Phones & Revenue avatar

Airbnb Scraper - Host Leads, Emails, Phones & Revenue

Pricing

from $1.50 / 1,000 airbnb listings

Go to Apify Store
Airbnb Scraper - Host Leads, Emails, Phones & Revenue

Airbnb Scraper - Host Leads, Emails, Phones & Revenue

Turn Airbnb listings into prospecting-ready host leads. Search any city or paste listing URLs to extract prices, reviews, amenities, rich host profiles and daily availability. Find public business emails, phone numbers and social profiles with source links, plus occupancy and revenue estimates.

Pricing

from $1.50 / 1,000 airbnb listings

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

11 days ago

Last modified

Share

Airbnb Scraper — Listings, Reviews & Public Contacts

Turn a city search or a list of Airbnb URLs into useful rental data: prices, photos, amenities, rich public host profiles, guest reviews and day-by-day availability. Add public business emails, phones and social profiles, each with a source you can check.

🚀 Your first run

  1. Open Input and leave Run mode → Auto detect.
  2. Under Locations, enter a city or neighborhood, for example Prague or Lisbon.
  3. Set Listings per source to 3 for a small first run.
  4. Want contacts? Enable Include public emails, phones & social profiles. For guest feedback, also enable Include review texts and set the review limit.
  5. Click Start. Open Output while the run is working: completed listings appear as they are processed.
  6. Choose a table, then Export to download JSON, CSV or Excel.

Already have listing URLs? Clear Locations, paste the URLs into Airbnb listing URLs, and leave Auto detect selected. Use locations or direct URLs in one run.

City / neighborhood ──→ Fast search ──→ Listing cards and prices
└─→ Full search ──→ Listing details + selected extras
Airbnb listing URLs ──→ Direct URLs ──→ Listing details + selected extras
Results appear as each listing finishes

🎛️ Choose what to collect

Run modeJSON valueWhat you get
Auto detectautoChooses Direct URLs for listing links, Full search when extras are enabled, otherwise Fast search.
Fast searchsearch-fastListing IDs, names, URLs, photos, displayed prices, ratings and available search-card fields.
Full searchsearch-fullSearch results enriched with descriptions, amenities, house rules, safety information, public host-profile details and the extras you select.
Direct listing URLsurlsThe same detail collection for specific Airbnb listings.

Optional extras: public contacts, review text, availability calendars and revenue estimates. Contacts, reviews and calendars require Full search or Direct URLs. Auto detect handles that choice for you.

Presets are shortcuts: Quick test, Market scan, Review intelligence, Public contacts, Revenue, Full audit, or Custom. Full audit enables contacts, reviews, calendars and revenue estimates. Use Custom when you want to choose every extra yourself. The result limit remains the value you enter.

📬 Emails, phones and social profiles

Enable includeContacts to check the listing's own public text and matching official property/operator websites. The Actor checks business identity and location before accepting a discovered website. It does not guess an email address or turn an unrelated company into the listing's owner.

Public listing / host text
Published contacts or identity-matched official business website
Email · phone · social profiles → contact value + source URL
FieldMeaning
email, emailsOne email for a compact table cell and all distinct published emails found.
phone, phoneNumbersOne phone for a compact table cell and all valid published numbers, normalized with international prefixes.
instagramUrls, facebookUrls, linkedinUrlsPublished social/business profiles.
xUrls, youtubeUrls, tiktokUrls, pinterestUrlsAdditional published profiles/channels.
whatsappUrls, telegramUrlsPublished messaging links.
contactBusinessName, contactWebsiteThe identified business and its verified website, when found.
contactSourceUrls, contactMatchMethodEvidence links and the method used to associate the website.
contactStatusfound, not_publicly_found, or lookup_failed.
contactsFoundCount, contactPagesCheckedContact and checked-website-page counts for that listing.

These are public contacts, often for a professional operator—not necessarily a private host's personal details. Airbnb's booking-only email/phone details are not included. A social-network homepage or sharing button is not treated as a profile. A missing contact stays empty; it is not fabricated. Country-less local telephone numbers may be omitted rather than assigned an invented country code.

If you know an official website, you can supply an optional contactWebsites mapping of listing ID to website. The website must still match the business and location or link to that exact listing. This is a hint, not permission to attach arbitrary contacts.

👤 Public host-profile fields

Full search and Direct URLs also read the public host profile linked to each listing. The listing row and the separate Hosts table can include:

  • Host ID and profile URL, name, photo and published location.
  • Superhost and identity/verification badges, verification types and “verified since” text.
  • Hosting tenure, Airbnb-user tenure, past-trip count and received-review counts.
  • Public work, languages, “lives in” value, profile prompts and selected interests.
  • Public managed-listing count and listing summaries, including beds, bedrooms, bathrooms and Instant Book where published.
  • hostProfileStatus: available, unavailable, or failed.

These fields are conditional. Some listings expose a host card but no public profile ID; those rows keep their listing data and report hostProfileStatus: unavailable rather than inventing profile values.

▶️ Ready-to-use inputs

Find listings quickly

{
"mode": "search-fast",
"locationQueries": ["Lisbon"],
"maxItemsPerQuery": 10,
"currency": "EUR",
"locale": "en"
}

Full details, contacts and guest reviews

{
"mode": "auto",
"locationQueries": ["Prague"],
"maxItemsPerQuery": 10,
"includeContacts": true,
"includeReviews": true,
"maxReviewsPerListing": 10
}

Inspect specific listings

Replace the illustrative listing ID with a real URL from Airbnb.

{
"mode": "urls",
"startUrls": [{"url": "https://www.airbnb.com/rooms/123456789"}],
"maxItemsPerQuery": 10,
"includeContacts": true,
"includeCalendar": true
}

Estimate rental-market metrics

{
"researchPreset": "revenue",
"locationQueries": ["Barcelona"],
"maxItemsPerQuery": 10,
"currency": "EUR"
}

📥 Useful input settings

SettingHow to use it
locationQueriesOne or more cities or neighborhoods.
startUrlsDirect listing URLs entered in the form. In API JSON use objects such as {"url":"https://www.airbnb.com/rooms/123456789"}.
maxItemsPerQuery1–270 saved listings per location or direct-URL batch. Default: 10. Duplicate listings are not saved twice.
checkIn, checkOutBoth dates in YYYY-MM-DD, today or later. Check-out must follow check-in. Omit both for undated searches.
adults, children, infants, petsGuest counts. Default: 2 adults, 0 for the other counts.
minPrice, maxPriceOptional search price range in the chosen currency.
roomTypeAny, Entire home/apt, Private room, Shared room, or Hotel room.
minBedrooms, minBathrooms, minBedsOptional search filters.
includeContactsCheck for public business emails, phones and social profiles. Default: off.
includeReviewsCollect review text and available reviewer, rating and host-response fields. Default: off.
maxReviewsPerListing1–100 reviews per listing. Default: 50; applied only when reviews are enabled.
includeCalendarRequest up to 12 months of public availability. Default: off.
analyzeRevenueCompute rental estimates; enables the calendar. See the pricing tab for the additional revenue event.
currencyUSD or EUR.
localeen, de, fr, es, it, pt, nl, pl, ru. Text is localized when the source supplies a translation.

Legacy queries and dateRange inputs are normalized by the Actor. For the mode, use the exact values above: search-fast, search-full, urls, or auto.

📦 Where to find your data

The default dataset has one row per listing. Existing structured details remain in JSON; the tables organize them without removing fields.

Output tableContents
ListingsID, name, photo, location, price, rating, room type, capacity, available bedroom/bed/bathroom counts, URL and collection time.
PricingDisplayed price, numeric nightly/total prices, currency and available price information.
Hosts & ratings / HostsHost profile URL, verification types, published location/work/languages, hosting and user tenure, trip/review counts, interests, managed listings, response information and co-host data.
Amenities / House rulesAmenity groups, availability flags, house rules, safety information and listing highlights.
Public contactsEmails, phones, social profiles, business website and contact status.
Contact sourcesOne contact/evidence row at a time, with its listing and source URL.
Reviews / Review summaryReview text, localized date/text, reviewer and host profile links, public reviewer tenure/location, highlights, media, ratings, available host replies and summaries of the fetched sample.
Calendar metricsDate coverage and 30/60/90/365-day availability and occupancy-estimate summaries.
Calendar daysOne row per public calendar day: availability, check-in/check-out eligibility, bookable flag, minimum/maximum nights and price when Airbnb publishes one.
Revenue estimatesEstimated occupancy, ADR, RevPAR and projected monthly revenue.
Run summarySaved counts, contact coverage, partial results and any correction needed.

Review summaries describe only the reviews collected in that run. They are not a replacement for every review ever published.

Example listing

This abbreviated example is fictional. Its ID, business, phone and email are placeholders—not real contact data.

{
"recordType": "listing",
"id": "123456789",
"name": "Demo Rentals | Riverside apartment",
"detailStatus": "complete",
"bedrooms": 1,
"beds": 2,
"bathrooms": 1,
"instantBookEnabled": true,
"isGuestFavorite": true,
"registrationNumber": "DEMO-REG-123",
"displayLocation": "Demo District",
"displayPrice": "$145 per night",
"pricePerNight": 145,
"email": "hello@example.com",
"emails": ["hello@example.com"],
"phone": "+442079460018",
"phoneNumbers": ["+442079460018"],
"contactWebsite": "https://example.com/",
"contactSourceUrls": ["https://example.com/contact"],
"contactStatus": "found",
"hostProfileStatus": "available",
"hostUrl": "https://www.airbnb.com/users/show/12345",
"hostManagedListingsTotalCount": 3,
"hostLanguages": "English and Spanish",
"url": "https://www.airbnb.com/rooms/123456789"
}

💰 Read revenue estimates correctly

Revenue analysis adds a revenue block with 30/60/365-day occupancy windows, counted/available/blocked nights, adr, adrSource, revPar, estimatedMonthlyRevenue, minNightsTypical and monthly seasonality, where the underlying data permits them. The most useful values are also exposed as flat estimated... and ...Next60 fields for CSV and table exports.

Unavailable does not mean confirmed booked. Hosts can block their calendars. These are forward-looking estimates, not verified occupancy, sales or income. Short calendar samples do not receive an occupancy projection. Missing price data does not receive a made-up ADR or revenue value.

The separate revenue dataset and REVENUE_SUMMARY record contain sample medians. Per-listing market comparisons require at least five analyzed listings. They describe your collected sample, not the entire city.

❓ Practical questions

Why is a field empty? A listing may not publish it, an optional extra may be off, or the source may be temporarily unavailable. Check detailStatus, hostProfileStatus, reviewsStatus, calendarStatus and contactStatus. detailStatus: partial means only the search-card fields were available.

What does a price represent? Dates and guest counts can change the price. pricePerNight is the source's nightly rate, which may precede a stay discount. priceTotal uses the exact total when published; priceEffectivePerNight divides that total by the known priceNightCount. These can differ from the rounded display price. A price.priceSource of search_baseline is an undated search price, not a quote for your chosen stay.

Do contacts cost a separate event? No. Public contact enrichment is optional and included in the listing result. Revenue analysis retains its separate event when a projection is produced. The current Pricing tab is authoritative.

What happens with bad input or a small budget? Incorrect input ends without source collection and explains the correction in Run summary. The Actor stops when the remaining maximum charge cannot cover another listing with the selected options. Previously saved results remain available.

Do I need an Airbnb account? No login is required for the public data described here.

🔌 API access

Send the same input JSON to the Actor. Use your own token and do not publish it.

curl -X POST "https://api.apify.com/v2/acts/trakk~airbnb-scraper-v2/runs" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"auto","locationQueries":["Prague"],"maxItemsPerQuery":3,"includeContacts":true}'

Use the returned run's default dataset for listing rows. JSON retains structured details; CSV and Excel are convenient for the focused output tables.