Airbnb Scraper - Host Leads, Emails, Phones & Revenue
Pricing
from $1.50 / 1,000 airbnb listings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
11 days ago
Last modified
Categories
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
- Open Input and leave Run mode → Auto detect.
- Under Locations, enter a city or neighborhood, for example
PragueorLisbon. - Set Listings per source to
3for a small first run. - Want contacts? Enable Include public emails, phones & social profiles. For guest feedback, also enable Include review texts and set the review limit.
- Click Start. Open Output while the run is working: completed listings appear as they are processed.
- 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 extrasAirbnb listing URLs ──→ Direct URLs ──→ Listing details + selected extras↓Results appear as each listing finishes
🎛️ Choose what to collect
| Run mode | JSON value | What you get |
|---|---|---|
| Auto detect | auto | Chooses Direct URLs for listing links, Full search when extras are enabled, otherwise Fast search. |
| Fast search | search-fast | Listing IDs, names, URLs, photos, displayed prices, ratings and available search-card fields. |
| Full search | search-full | Search results enriched with descriptions, amenities, house rules, safety information, public host-profile details and the extras you select. |
| Direct listing URLs | urls | The 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
| Field | Meaning |
|---|---|
email, emails | One email for a compact table cell and all distinct published emails found. |
phone, phoneNumbers | One phone for a compact table cell and all valid published numbers, normalized with international prefixes. |
instagramUrls, facebookUrls, linkedinUrls | Published social/business profiles. |
xUrls, youtubeUrls, tiktokUrls, pinterestUrls | Additional published profiles/channels. |
whatsappUrls, telegramUrls | Published messaging links. |
contactBusinessName, contactWebsite | The identified business and its verified website, when found. |
contactSourceUrls, contactMatchMethod | Evidence links and the method used to associate the website. |
contactStatus | found, not_publicly_found, or lookup_failed. |
contactsFoundCount, contactPagesChecked | Contact 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, orfailed.
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
| Setting | How to use it |
|---|---|
locationQueries | One or more cities or neighborhoods. |
startUrls | Direct listing URLs entered in the form. In API JSON use objects such as {"url":"https://www.airbnb.com/rooms/123456789"}. |
maxItemsPerQuery | 1–270 saved listings per location or direct-URL batch. Default: 10. Duplicate listings are not saved twice. |
checkIn, checkOut | Both dates in YYYY-MM-DD, today or later. Check-out must follow check-in. Omit both for undated searches. |
adults, children, infants, pets | Guest counts. Default: 2 adults, 0 for the other counts. |
minPrice, maxPrice | Optional search price range in the chosen currency. |
roomType | Any, Entire home/apt, Private room, Shared room, or Hotel room. |
minBedrooms, minBathrooms, minBeds | Optional search filters. |
includeContacts | Check for public business emails, phones and social profiles. Default: off. |
includeReviews | Collect review text and available reviewer, rating and host-response fields. Default: off. |
maxReviewsPerListing | 1–100 reviews per listing. Default: 50; applied only when reviews are enabled. |
includeCalendar | Request up to 12 months of public availability. Default: off. |
analyzeRevenue | Compute rental estimates; enables the calendar. See the pricing tab for the additional revenue event. |
currency | USD or EUR. |
locale | en, 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 table | Contents |
|---|---|
| Listings | ID, name, photo, location, price, rating, room type, capacity, available bedroom/bed/bathroom counts, URL and collection time. |
| Pricing | Displayed price, numeric nightly/total prices, currency and available price information. |
| Hosts & ratings / Hosts | Host 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 rules | Amenity groups, availability flags, house rules, safety information and listing highlights. |
| Public contacts | Emails, phones, social profiles, business website and contact status. |
| Contact sources | One contact/evidence row at a time, with its listing and source URL. |
| Reviews / Review summary | Review 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 metrics | Date coverage and 30/60/90/365-day availability and occupancy-estimate summaries. |
| Calendar days | One row per public calendar day: availability, check-in/check-out eligibility, bookable flag, minimum/maximum nights and price when Airbnb publishes one. |
| Revenue estimates | Estimated occupancy, ADR, RevPAR and projected monthly revenue. |
| Run summary | Saved 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.