Airbnb Scraper — Listings & Reviews avatar

Airbnb Scraper — Listings & Reviews

Pricing

from $0.76 / 1,000 results

Go to Apify Store
Airbnb Scraper — Listings & Reviews

Airbnb Scraper — Listings & Reviews

Scrape Airbnb by city, search URL or listing URL. Prices, all six rating sub-scores, amenities, host portfolio size, reviews and 12-month availability calendars. Price-range splitting passes the 240-listing cap.

Pricing

from $0.76 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Airbnb Scraper

airbnb-scraper

Extract Airbnb listings anywhere in the world — prices, ratings and every sub-score, amenities, host portfolios, guest reviews and 12-month availability calendars. Give it a city, not a list of URLs. No browser, no API key, no login required.


Why this scraper?

🔎 You don't need listing URLs

Give it a city or a search URL. Price-range splitting walks past Airbnb's 240-listing cap and enumerates the full market.

⭐ Complete rating data

Overall rating, review count, and all six sub-scores — accuracy, cleanliness, communication, location, check-in, value.

🏢 Host portfolio intelligence

Total listings managed per host, host rating, response rate and time, co-hosts. Identify professional operators, not just private hosts. Included — not a separate charge.

📅 Availability calendars

Up to 12 months per listing: available, bookable, check-in/check-out eligibility, minimum and maximum nights.

💬 Guest reviews

Review text, rating, date, language, reviewer, and the host's response.

🔁 Incremental monitoring

Track a market over time. Listings seen in previous runs are skipped, with a 60-day memory.

🌍 92 languages and regions

Titles, descriptions, amenities, house rules and cancellation terms in the language you ask for — from de-AT to ja-JP to es-419.


Input parameters

ParameterTypeDefaultDescription
locationQueriesarray[]Cities or regions to search, e.g. ["Paris, France"]. Uses price-range splitting to pass the 240-listing cap.
startUrlsarray[]Airbnb search URLs. Apply filters in your browser first, then paste — all filters are preserved.
listingUrlsarray[]Individual listing URLs, e.g. https://www.airbnb.com/rooms/12345678.
checkIn / checkOutstring(empty)YYYY-MM-DD. Enables date-specific pricing in search and location mode.
adultsinteger2Number of adult guests. Affects pricing and availability.
currencystringUSDISO 4217 code, e.g. EUR, GBP, JPY.
localestringen-USLanguage and region for listing content — 92 options, from en-GB and de-AT to ja-JP, zh-TW and es-419.
priceMin / priceMaxinteger(empty)Nightly price bounds. Also seed the price-range splitting.
minBedrooms / minBeds / minBathroomsinteger(empty)Minimum room counts.
skipDetailPagesbooleanfalseFast mode — search-card data only. Much faster and cheaper for large-scale price monitoring.
includeReviewsbooleanfalseCollect guest reviews per listing.
maxReviewsPerListinginteger50Cap on reviews per listing.
includeHostProfilebooleanfalseAdd host portfolio size, location and bio. One request per host, cached across the run.
calendarMonthsinteger0Months of availability to fetch per listing (0–12).
monitoringModebooleanfalseOnly return listings not seen in previous runs.
maxResultsinteger0Maximum listings to return. 0 = unlimited.
useProxybooleanfalseResidential proxy, for country-specific pricing. Not needed in most cases.
concurrencyinteger2Price buckets scraped in parallel (1–5).

Output schema

Fields the source does not publish for a given listing are returned as null, never omitted.

Always present

FieldTypeDescription
idstringAirbnb listing ID.
urlstringCanonical listing URL.
titlestringListing title.
subtitlestringShort summary line.
room_typestringEntire home/apt, Private room, Shared room. Always in English, in every locale, so you can group and filter on it.
price_per_nightnumberNightly price. See Known limitations — search and location mode only.
price_per_night_originalnumberPrice before discount.
price_discountednumberDiscounted price, if the listing is on offer.
pricing_currencystringCurrency of all price fields.
pricing_qualifierstringWhat the price covers, e.g. for 5 nights.
pricing_totalnumberTotal for the selected date range.
bedrooms, beds, bathroomsnumberRoom counts. Half-baths count as 0.5.
latitude, longitudenumberGPS coordinates.
citystringCity the listing sits in.
overall_ratingnumberGuest rating out of 5 (null on new listings).
review_countnumberNumber of reviews (null on new listings).
is_guest_favoritebooleanAirbnb "Guest favourite" flag.
badgesarrayCard badges, e.g. Superhost.
thumbnail, main_image_urlstringPrimary image.
imagesarrayAll listing image URLs.
android_link, ios_linkstringDeep links into the Airbnb app.
source, scraped_at, content_hashstringProvenance and change-detection hash.

With detail pages (default — set skipDetailPages: false)

FieldTypeDescription
property_typestringe.g. Private room in rental unit.
guests, max_guestsnumberGuest capacity.
location_subtitlestringe.g. Nantes, Pays de la Loire, France.
neighborhood_descriptionstringAirbnb's neighbourhood write-up.
descriptionstringListing description, plain text.
descriptionHtmlstringSame, as HTML.
descriptionMarkdownstringSame, as Markdown.
review_accuracynumberSub-score out of 5.
review_cleanlinessnumberSub-score out of 5.
review_communicationnumberSub-score out of 5.
review_location_scorenumberSub-score out of 5.
review_checkin_scorenumberSub-score out of 5.
review_value_scorenumberSub-score out of 5.
host_id, host_name, host_url, host_profile_imagestringHost identity.
host_is_superhost, host_is_verifiedbooleanHost status.
host_rating_average, host_rating_countnumberHost's rating and total reviews across all listings.
host_response_rate, host_response_timestringe.g. 100%, within an hour.
host_years_hostingnumberYears active as a host.
host_aboutstringHost bio (null when the host left it blank).
host_highlightsarrayHost profile highlights.
co_hostsarrayCo-hosts: id, name, profile_image.
amenitiesarrayAll amenities offered.
amenity_wifiamenity_hair_dryerboolean16 flags for the most-filtered amenities.
house_rules, safety_itemsarrayRules and safety features.
pets_allowed, smoking_allowed, parties_allowed, self_check_inbooleanPolicy flags.
check_in_after, check_out_beforestringCheck-in and check-out times.
cancellation_policy, cancellation_policy_namestringe.g. firm / Firm.
home_tier, is_new_listingnumber / booleanListing tier and new-listing flag.

With includeHostProfile: true

FieldTypeDescription
host_listings_countnumberTotal listings the host manages. The signal that separates professional operators from private hosts.
host_listingsarrayEach managed listing: id, name, room_type, rating_average, review_count.
host_locationstringWhere the host is based.

With includeReviews: true / calendarMonths > 0

FieldTypeDescription
reviewsarrayid, text, rating, date, language, reviewer_name, reviewer_location, response.
calendar_dataarrayPer day: date, available, bookable, available_for_checkin, available_for_checkout, min_nights, max_nights.
min_nights, max_nightsnumberBooking rules, derived from the calendar.

Example record

{
"id": "668146487515150072",
"url": "https://www.airbnb.com/rooms/668146487515150072",
"title": "Centre Place Graslin – Private Room in La Cambronne",
"property_type": "Private room in rental unit",
"room_type": "Private room",
"price_per_night": 89.0,
"pricing_currency": "EUR",
"pricing_total": 356,
"guests": 1,
"bedrooms": 1,
"beds": 1,
"bathrooms": 1,
"latitude": 47.21274,
"longitude": -1.56042,
"city": "Nantes",
"location_subtitle": "Nantes, Pays de la Loire, France",
"overall_rating": 4.99,
"review_count": 78,
"review_accuracy": 4.96,
"review_cleanliness": 5,
"review_communication": 5,
"review_location_score": 4.97,
"review_checkin_score": 5,
"review_value_score": 4.94,
"host_id": "464257363",
"host_name": "Golwen",
"host_is_superhost": true,
"host_rating_average": 4.98,
"host_rating_count": 96,
"host_response_rate": "100%",
"host_response_time": "within a few hours",
"host_years_hosting": 4,
"host_listings_count": 2,
"host_location": "Nantes, France",
"co_hosts": [{ "id": "58026078", "name": "Dorothée", "profile_image": "https://a0.muscache.com/im/pictures/user/5ef5c40c.jpg" }],
"amenities": ["Hair dryer", "Shampoo", "Hot water", "Wifi", "Kitchen"],
"amenity_wifi": true,
"amenity_kitchen": true,
"cancellation_policy": "firm",
"cancellation_policy_name": "Firm",
"check_in_after": "6:00 PM",
"check_out_before": "10:00 AM",
"min_nights": 1,
"max_nights": 1125,
"is_guest_favorite": true,
"neighborhood_description": "All the shops of the city center nearby, all the public transportation.",
"images": ["https://a0.muscache.com/im/pictures/miso/Hosting-668146487515150072/original/8ff2a532.jpeg"],
"android_link": "airbnb://rooms/668146487515150072",
"source": "airbnb.com",
"scraped_at": "2026-07-13T17:04:48.554Z",
"content_hash": "9218775635a2cf5b"
}

Examples

Full market scan of a city:

{
"locationQueries": ["Nantes, France"],
"currency": "EUR",
"maxResults": 0
}

Price monitoring at scale (fast mode):

{
"locationQueries": ["Paris, France"],
"skipDetailPages": true,
"checkIn": "2026-09-10",
"checkOut": "2026-09-14",
"currency": "EUR",
"maxResults": 5000
}

Find the professional operators in a market:

{
"locationQueries": ["Amsterdam, Netherlands"],
"includeHostProfile": true,
"currency": "EUR",
"maxResults": 500
}

Occupancy analysis — specific listings, full calendar and reviews:

{
"listingUrls": [
{ "url": "https://www.airbnb.com/rooms/668146487515150072" }
],
"calendarMonths": 12,
"includeReviews": true,
"maxReviewsPerListing": 50
}

Listings in another language:

{
"locationQueries": ["Berlin, Germany"],
"locale": "de-DE",
"currency": "EUR",
"maxResults": 200
}

Titles, amenities, house rules and cancellation terms come back in German. Ratings, prices, coordinates and IDs are language-independent and unchanged.

Daily monitoring feed (new listings only):

{
"locationQueries": ["Barcelona, Spain"],
"monitoringMode": true,
"currency": "EUR"
}

💰 Pricing

$0.78 per 1,000 results — you only pay for listings actually returned. Failed retries are never charged.

ResultsCost
100~$0.08
1,000~$0.78
10,000~$7.80
100,000~$78.00

Flat-rate alternatives typically charge $50–$500/month regardless of usage.

Host profiles, guest reviews and availability calendars are included in the result price — there is no separate charge for enrichment. Subscription tiers lower the rate to $0.74 per 1,000. Use Max results to cap your spend exactly.


Performance

Run sizeTypical time
10 listingsunder 30 seconds
100 listings2–4 minutes
1,000 listings20–35 minutes

Fast mode (skipDetailPages: true) is roughly 5× quicker. Raise concurrency to 3 for large cities.


Known limitations

  • Prices in listing-URL mode. Airbnb no longer publishes nightly prices on the listing page itself — they are loaded behind a booking session. Prices are returned in search and location mode, where they come from the search results. If you need prices, search by location or search URL rather than by listing URL.
  • New listings have no rating. overall_rating and review_count are null until a listing has been reviewed. This is correct, not missing data.
  • Unresolvable locations return nothing. If a location query doesn't match a real place on Airbnb, the run returns zero results rather than unrelated listings from elsewhere.
  • Calendar depth is 12 months. Airbnb does not publish further ahead.

Technical details

  • Source: airbnb.com — worldwide listings
  • Coverage: any city or region, filterable by price, rooms, dates and guests
  • Languages: 92 locales, served from Airbnb's own language sites
  • Change detection: every record carries a content_hash; monitoring mode remembers listings for 60 days
  • Retry: automatic retry on network errors with exponential backoff

Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl