Airbnb Scraper | Enterprise Grade
Pricing
from $0.70 / 1,000 results
Airbnb Scraper | Enterprise Grade
Extract structured Airbnb listings at scale with unlimited coverage, full availability, detailed reviews and rich host insights. Built for enterprise-grade hospitality intelligence, market monitoring, and automated analytics pipelines.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Maintained by CommunityActor stats
1
Bookmarked
8
Total users
3
Monthly active users
8 days ago
Last modified
Categories
Share
Airbnb Scraper
Slug: fatihtahta/airbnb-scraper
Overview
Airbnb Scraper collects structured Airbnb stay listing data, including listing identity, URLs, titles, locations, prices, capacity, ratings, reviews context, amenities, photos, host details, booking context, and property rules when available. Airbnb is a global marketplace for short-term stays and long-term rentals, making its public listing data useful for market analysis, inventory tracking, pricing research, and hospitality intelligence. The actor turns repeatable location and filter inputs into consistent JSON records that are ready for analytics, enrichment, and operational reporting workflows. It is designed for dependable recurring data acquisition by keeping inputs explicit, outputs structured, and record identifiers stable enough for repeated syncs. As with any public web data source, visible records and optional attributes can vary by market, availability, and the information Airbnb exposes at run time.
Why Use This Actor
- Market research and analytics teams: build structured extraction workflows for pricing, supply, location, rating, and amenity analysis across target geographies.
- Product and content teams: collect normalized listing attributes, photos, descriptions, house rules, and review context for catalog research, content audits, and market intelligence.
- Developers and data engineering teams: feed predictable JSON records into downstream systems, ETL jobs, warehouses, search indexes, and monitoring workflows.
- Lead generation and enrichment teams: identify public listings and host-level attributes that can support enrichment pipelines, segmentation, and account research.
- Operations and strategy teams: monitor competitive inventory, pricing bands, booking options, guest capacity, and recurring market movement for operational reporting.
Common Use Cases
- Market intelligence: monitor supply, pricing, availability context, ratings, locations, guest capacity, and category movement across destination markets.
- Competitive monitoring: track changes in public stay listings, host status, amenities, price ranges, and guest-favorite positioning over time.
- Catalog and directory building: populate internal databases with structured public Airbnb listing records, media URLs, property details, and location metadata.
- Data enrichment: add current public listing, host, amenity, rating, and booking attributes to existing CRM, BI, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, trend analysis, and market coverage reports.
- Review and sentiment analysis: collect review-related fields and rating breakdowns when review collection or richer listing details are enabled.
Quick Start
- Add one or more destinations in
location, such as a city, neighborhood, resort area, or landmark, or add exact Airbnb listing URLs instart_url. - Choose either exact dates with
check_inandcheck_out, or flexible date settings withflexible_trip_length,flexible_trip_year, andflexible_trip_months. - Set a small
limit, such as25, for the first validation run. - Add filters only when they are required, such as guest counts, price range, room type, amenities, accessibility features, booking options, or host status.
- Run the actor in Apify Console and inspect the first dataset records to confirm the output shape matches your use case.
- Increase coverage, enable richer details or reviews if needed, and schedule recurring runs once the output is verified.
Input Parameters
Provide one or more location values for search discovery, or provide start_url values when you already have exact Airbnb listing URLs. When start_url is provided, the actor skips location query building and uses only those listing URL seeds. You can optionally set dates, listing filters, review collection, localization, and limits.
| Parameter | Type | Description | Default |
|---|---|---|---|
location | array of strings | Destinations, neighborhoods, landmarks, resort areas, or broad areas to search. Each item is a separate Airbnb search location. Leave empty when using start_url. | – |
start_url | array of strings | Exact Airbnb listing URLs to scrape directly, such as https://www.airbnb.com/rooms/1180676891252917286. When provided, these URLs override location query building. | – |
check_in | string | Exact arrival date in YYYY-MM-DD format. Use with check_out for a fixed stay search. | – |
check_out | string | Exact departure date in YYYY-MM-DD format. Use with check_in for a fixed stay search. | – |
date_tolerance | string | Date flexibility for exact date searches. Allowed values: 1_day, 2_days, 3_days, 7_days, 14_days. | – |
flexible_trip_length | string | Stay length for flexible date searches when exact dates are not provided. Allowed values: weekend, week, month. | week |
flexible_trip_year | string | Year used for flexible month searches. Allowed values: 2026, 2027. | 2026 |
flexible_trip_months | array of strings | Months included in flexible-date collection. Allowed values: january, february, march, april, may, june, july, august, september, october, november, december. | – |
adults | integer | Number of adult guests. Minimum: 1. | 1 |
children | integer | Number of child guests. Minimum: 0. | 0 |
infants | integer | Number of infant guests. Minimum: 0. | 0 |
pets | integer | Number of pets included in the stay search. Minimum: 0. | 0 |
min_price | integer | Minimum nightly price, using the selected currency. Minimum: 1. | – |
max_price | integer | Maximum nightly price, using the selected currency. Minimum: 1. | – |
room_types | string | Room type filter. Allowed values: private_room, entire_place. | – |
property_types | array of strings | Property category filters. Allowed values: house, apartment, guesthouse, hotel. | – |
amenities | array of strings | Required amenities. Allowed values: wifi, air_conditioning, dedicated_workspace, pool, dryer, iron, kitchen, washer, heating, tv, hair_dryer, hot_tub, free_parking, ev_charger, crib, king_bed, gym, bbq_grill, breakfast, indoor_fireplace, smoking_allowed, waterfront, smoke_alarm, carbon_monoxide_alarm. | – |
accessibility | array of strings | Required accessibility features. Allowed values: step_free_access, disabled_parking_spot, guest_entrance_wider_than_32_inches, step_free_bedroom_access, bedroom_entrance_wider_than_32_inches, step_free_bathroom_access, bathroom_entrance_wider_than_32_inches, toilet_grab_bar, shower_grab_bar, step_free_shower, shower_or_bath_chair, ceiling_or_mobile_hoist. | – |
booking_options | array of strings | Booking-related requirements. Allowed values: instant_booking, self_check_in, pets_allowed. | – |
host_language | array of strings | Host language filters. Allowed values: chinese_simplified, chinese_traditional, english, french, german, italian, japanese, korean, portuguese, russian, spanish, arabic, catalan, croatian, czech, danish, dutch, finnish, greek, hebrew, hindi, hungarian, icelandic, indonesian, malay, norwegian, polish, swedish, thai, turkish, afrikaans, albanian, armenian, azerbaijani, bengali, bosnian, bulgarian, burmese, estonian, filipino, galician, gujarati, haitian_creole, khmer, kyrgyz, lao, latvian, macedonian, maltese, persian, punjabi, romanian, serbian, slovakian, swahili, tagalog, tamil, telugu, ukrainian, urdu, vietnamese, xhosa, zulu, sign_language. | – |
superhost | boolean | When enabled, collect only listings matching Airbnb's Superhost filter. | false |
instant_book | boolean | When enabled, collect only listings matching Airbnb's Instant Book filter. | false |
free_cancellation | boolean | When enabled, collect only listings matching Airbnb's free cancellation filter. | false |
luxe | boolean | When enabled, collect only listings matching Airbnb's Luxe filter. | false |
guest_favorite | boolean | When enabled, collect only listings matching Airbnb's Guest Favorite filter. | false |
bedrooms | string | Minimum bedrooms. Allowed values: 1, 2, 3, 4, 5, 6, 7, 8, representing 1+ through 8+. | – |
beds | string | Minimum beds. Allowed values: 1, 2, 3, 4, 5, 6, 7, 8, representing 1+ through 8+. | – |
bathrooms | string | Minimum bathrooms. Allowed values: 1, 2, 3, 4, 5, 6, 7, 8, representing 1+ through 8+. | – |
get_reviews | boolean | Include reviews with each saved listing. Review collection can increase run time and dataset size. | false |
max_reviews | integer | Maximum number of reviews to collect per listing when get_reviews is enabled. Minimum: 1. Leave empty to collect all available reviews. | – |
get_availability | boolean | Include the next 12 months of property availability with each saved listing. Availability collection adds extra requests and can increase run time. | false |
enrich_data | boolean | Collect richer listing details such as descriptions, images, amenities, host details, house rules, location notes, and review breakdowns when available. | false |
maximize_coverage | boolean | Collect more matching listings for broad searches that may exceed Airbnb's visible-result limit. | true |
currency | string | Currency used for price filters and listing price context. Allowed values: USD, AUD, BRL, BGN, CAD, CLP, CNY, COP, CRC, CZK, DKK, EGP, AED, EUR, GHS, HKD, HUF, INR, IDR, ILS, JPY, KZT, KES, MYR, MXN, MAD, TWD, NZD, NOK, PEN, PHP, PLN, GBP, QAR, RON, SAR, SGD, ZAR, KRW, SEK, CHF, THB, TRY, UGX, UAH, UYU, VND. | USD |
locale | string | Language and regional format for results. Allowed values: en, az, id, bs, ca, cs, cnr, da, de, de-AT, de-CH, de-LU, et, en-AU, en-CA, en-GY, en-IN, en-IE, en-NZ, en-SG, en-AE, en-GB, es-AR, es-BZ, es-BO, es-CL, es-CO, es-CR, es-EC, es-SV, es, es-US, es-GT, es-HN, es-419, es-MX, es-NI, es-PA, es-PY, es-PE, es-VE, fr-BE, fr-CA, fr, fr-CH, fr-LU, ga, hr, xh, zu, is, it, it-CH, sw, lv, lt, hu, mt, ms, nl-BE, nl, no, pl, pt-BR, pt, ro, sq, sk, sl, sr, fi, sv, tl, vi, tr, el, bg, mk, ru, uk, ka, hy, he, ar, hi, kn, mr, th, ko, ja, zh-US, zh-Hant-US, zh-CN, zh-HK, zh-TW. | en |
limit | integer | Maximum number of listing records to save per location. Minimum: 1. | – |
Choosing Inputs
Use location as the primary scope control for discovery. Specific neighborhoods, landmarks, or resort areas produce more targeted datasets, while broader cities and regions are better for market sizing. Use start_url when you already have individual Airbnb listing pages and want the actor to collect only those listings. Exact dates with check_in and check_out are useful when price and availability context must match a fixed stay window; flexible date fields are better when the month or trip length matters more than a specific arrival date.
Filters such as guest counts, price range, room type, property type, amenities, accessibility, booking options, host language, Superhost, Instant Book, free cancellation, Luxe, Guest Favorite, bedrooms, beds, and bathrooms narrow the result set. Start with fewer filters when exploring a market, then add constraints gradually to understand how each field changes coverage. Use a small limit for validation, then increase it after confirming that the records contain the fields and level of detail your workflow needs.
Example Inputs
Broad Discovery With Flexible Dates
{"location": ["Bangkok"],"flexible_trip_length": "week","flexible_trip_year": "2026","flexible_trip_months": ["june", "july"],"currency": "USD","locale": "en","limit": 50}
Fixed-Date Market Check
{"location": ["Barcelona"],"check_in": "2026-08-10","check_out": "2026-08-17","adults": 2,"children": 1,"currency": "EUR","limit": 75}
Targeted Amenity And Host Segment
{"location": ["Austin, Texas"],"room_types": "entire_place","property_types": ["house", "apartment"],"amenities": ["wifi", "dedicated_workspace", "free_parking"],"superhost": true,"guest_favorite": true,"limit": 100}
Individual Listing URLs
{"start_url": ["https://www.airbnb.com/rooms/1180676891252917286","https://www.airbnb.com/rooms/1180676891252917286?adults=1&children=0&infants=0&pets=0&check_in=2026-05-27&check_out=2026-06-24"],"currency": "USD","locale": "en","limit": 2}
Output
Output Destination
The actor writes results to the default Apify dataset as normalized JSON records. Listing rows use grouped real estate buckets instead of a large flat field list, and review rows use a separate review contract when get_reviews is enabled.
Record Types And Stable Identifiers
Each record includes record_type and record_id.
property_listing: one Airbnb stay listing.record_idis the Airbnb listing ID when available.review: one guest review.record_idcombines the listing ID and review ID when both are available.
Recommended idempotency key: use record_id. For listing URLs, use source_context.source_url or entity.url. For review-to-listing joins, use relationships.listing.listing_id and relationships.listing.url.
Examples
Example: property listing (record_type = "property_listing")
[{"record_type": "property_listing","record_id": "1584169624064222613","source_context": {"source_name": "Airbnb","source_domain": "airbnb.com","source_url": "https://www.airbnb.com/rooms/1584169624064222613","listing_url": "https://www.airbnb.com/rooms/1584169624064222613","seed_type": "query","seed_value": "Bangkok","seed_id": "seed-1","page_index": 1,"search_context": {"total_count": 300},"external_ids": {"airbnb_listing_id": "1584169624064222613","encoded_listing_id": "U3RheUxpc3Rpbmc6MTU4NDE2OTYyNDA2NDIyMjYxMw=="}},"entity": {"id": "1584169624064222613","title": "Detailed listing title","summary": "Apartment in Huai Khwang","description": "Comfortable apartment near public transport and local dining.","url": "https://www.airbnb.com/rooms/1584169624064222613"},"listing": {"listing_id": "1584169624064222613","dates": "Jun 1 - 3","badges": [{"label": "Guest favorite","accessibility_label": "Guest favorite badge"}],"is_guest_favorite": true},"pricing": {"price_text": "$100","original_price_text": "$120","price_qualifier": "for 2 nights","price_accessibility_label": "$100 for 2 nights","price_display_style": "QUALIFIED_DISPLAY_PRICE","price_breakdown": {"title": "Price details","price_details": [{"title": "Nightly rate","price": "$100"}]}},"location": {"localized_location": "Huai Khwang","location_subtitle": "Huai Khwang, Bangkok, Thailand","address": "Huai Khwang, Bangkok","address_title": "Approximate location","latitude": 13.7529,"longitude": 100.5702,"coordinates": {"latitude": 13.7529,"longitude": 100.5702},"map_marker_type": "APPROX","map_marker_radius_meters": 150,"default_zoom_level": 14},"property": {"property_type": "Entire rental unit","person_capacity": 2,"details": ["1 bedroom","1 bed"],"amenities": ["Kitchen","Wifi"]},"availability": {"dates": "Jun 1 - 3","booking": {"available": true,"can_instant_book": true,"max_guest_capacity": 2},"calendar": {"months": [{"month": 5,"year": 2026,"days": [{"calendar_date": "2026-05-08","available": true,"bookable": true,"min_nights": 1,"max_nights": 365}]}]}},"media": {"main_image_url": "https://a0.example/search.jpeg","image_urls": ["https://a0.example/search.jpeg"],"photos": [{"id": "2501331165","url": "https://a0.example/img1.jpeg","caption": "Hero image"}]},"relationships": {"host": {"name": "Som","user_id": "host-1","is_superhost": true}},"metrics": {"overall_rating": 4.9,"star_rating": 5,"review_count": 12,"review_ratings": {"cleanliness": {"category": "Cleanliness","rating": "4.9","percentage": 0.98}}},"attributes": {"house_rules": ["Check-in after 3:00 PM"],"safety_and_property": ["Carbon monoxide alarm"],"source_specific": {"misc_stats": {"sample_count": {"label": "Sample records","value": "42"}}}}}]
Example: review (record_type = "review")
{"record_type": "review","record_id": "36650981:1529496854472434464","source_context": {"source_name": "Airbnb","source_domain": "airbnb.com","source_url": "https://www.airbnb.com/rooms/36650981","listing_url": "https://www.airbnb.com/rooms/36650981","listing_id": "36650981","seed_type": "query","seed_value": "Bangkok"},"entity": {"id": "1529496854472434464","url": "https://www.airbnb.com/rooms/36650981"},"review": {"review_id": "1529496854472434464","comments": "Great place. Would return.","language": "en","created_at": "2025-10-11T07:17:13Z","localized_date": "October 2025","localized_reviewer_location": "1 year on Airbnb","collection_tag": "LONG STAY"},"author": {"id": "693822850","first_name": "Shannon"},"ratings": {"rating": 5,"rating_accessibility_label": "Rating, 5 stars"},"relationships": {"listing": {"listing_id": "36650981","url": "https://www.airbnb.com/rooms/36650981"},"reviewee": {"id": "198732763","first_name": "David"}}}
Field Reference
Shared Envelope
record_type (string, required): property_listing or review.
record_id (string, required): Stable row identifier for upserts and deduplication.
Property Listing Groups
source_context (object): Source name, domain, listing URL, canonical/share URLs when available, seed context, search context, page index, and external Airbnb IDs.
entity (object): Listing identity and primary display fields: id, title, summary, description, and url.
listing (object): Listing-level context such as listing_id, displayed date text, badges, guest-favorite status, and highlights.
pricing (object): Display price fields including price_text, original_price_text, price_qualifier, price_accessibility_label, price_display_style, and price_breakdown.
location (object): Localized place labels, address text when available, coordinates, map-marker precision, zoom level, disclaimers, nearby places, and source location verification.
property (object): Physical stay details such as property type, guest capacity, detail chips, structured content, amenities, amenity groups, and sleeping arrangements.
availability (object): Displayed date text, booking context, and optional calendar payload collected when get_availability is enabled.
media (object): Main image URL, image URL list, and richer photo objects with IDs, captions, orientation, aspect ratio, and professional-photo flags when available.
relationships (object): Linked Airbnb entities, currently the embedded host profile and host metrics when listing detail enrichment exposes them.
metrics (object): Ratings, review counts, rating distributions, review category ratings, review tags, review summaries, review sort options, and guest-favorite review context.
attributes (object): Preserved Airbnb-specific details that do not fit a stronger group, including house rules, safety notes, listing expectations, business details, cancellation policy, SEO context, and source_specific extras.
Review Groups
source_context (object): Airbnb source metadata plus the listing URL and listing ID the review belongs to.
entity (object): Review entity identity and listing URL.
review (object): Review ID, comments, language, creation date, localized date, reviewer-location label, collection tag, host response, and review photo URLs when available.
author (object): Source-provided reviewer details.
ratings (object): Numeric review rating and source accessibility label.
relationships (object): Listing join fields and the reviewee/host object when available.
attributes (object): Reserved for additional source-specific review details.
Data Quality, Guarantees, And Handling
- Structured records: results are normalized into predictable JSON objects for downstream use.
- Best-effort extraction: fields may vary by region, session, availability, and Airbnb interface experiments.
- Optional fields: null-check optional fields in downstream code, especially for sparse listings or market-specific records.
- Deduplication: use
record_idas the strongest row-level key, withsource_context.source_urlorentity.urlas listing URL context when needed. - Freshness: results reflect the publicly available data at run time.
- Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, or search indexes.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one geography or segment per run when you need cleaner reporting and easier comparisons.
- Leave optional filters empty when the goal is broad discovery.
- Add filters gradually to understand how each field changes coverage.
- Use exact dates when price context must match a specific stay window.
- Enable
enrich_dataandget_reviewsonly when richer listing and review details are required. - Schedule recurring runs for monitoring workflows instead of relying on manual one-off jobs.
How To Run On Apify
- Open the Actor in Apify Console.
- Configure the available input fields for the target scope.
- Set the maximum number of outputs to collect with
limit. - Click Start and wait for the run to finish.
- Open the dataset and review the first records.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
Use Apify schedules to run the actor automatically and keep Airbnb listing datasets fresh for dashboards, monitoring, and recurring analysis. Scheduled runs are especially useful when tracking pricing, visible inventory, ratings, and listing details over time.
- Navigate to Schedules in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- BI dashboards: monitor pricing, ratings, availability context, guest capacity, and geographic coverage over time.
- Data warehouses: store recurring Airbnb listing snapshots for historical analysis and market intelligence.
- Webhooks: trigger validation, notification, or ingestion workflows after each completed run.
- Alerts: notify teams when targeted markets, price bands, or filtered listing segments change.
- Google Sheets or Airtable: review smaller location-specific datasets with operations, research, or content teams.
- ETL pipelines: enrich internal property, travel, hospitality, or competitive intelligence datasets with public listing attributes.
Export Formats And Downstream Use
Apify datasets can be exported from the Console or consumed by downstream systems through supported dataset access methods. Choose the format that matches your review, reporting, or ingestion workflow.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into internal systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
Estimated run times:
- Small runs (< 1,000 outputs): ~3–5 minutes
- Medium runs (1,000–5,000 outputs): ~5–15 minutes
- Large runs (5,000+ outputs): ~15–30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.
Limitations
- Availability depends on what https://www.airbnb.com publicly exposes at run time.
- Some optional fields may be missing on sparse listings, regions, or listing types.
- Very broad searches may take longer or require higher
limitvalues to collect enough records. - Target-side changes can affect field availability, labels, or naming.
- Regional, account, date, or availability differences may change visible results.
- Prices and availability context should be treated as run-time observations, not guaranteed future booking conditions.
Troubleshooting
- No results returned: check filter strictness, location spelling, date settings, and whether Airbnb has matching public listings for the target scope.
- Fewer results than expected: broaden filters, raise
limit, add more locations, or verify that the target market contains enough matching records. - Some fields are empty: optional fields depend on what each listing publicly provides and may vary by region, stay type, or available detail level.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller location or filter segments. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public Airbnb stay listing data, including listing IDs, URLs, titles, prices, locations, coordinates, photos, ratings, review context, amenities, host details, booking context, and rules when available.
Can I filter by location, date, price, or other criteria?
Yes. The schema supports location, exact or flexible dates, guest counts, price range, room type, property type, amenities, accessibility features, booking options, host language, Superhost, Instant Book, free cancellation, Luxe, Guest Favorite, bedrooms, beds, and bathrooms.
Why did I receive fewer results than my limit?
The limit is a maximum, not a guarantee. Airbnb may show fewer matching public records for the selected location, dates, filters, or availability context.
Can I schedule recurring runs?
Yes. Use Apify schedules to run the actor daily, weekly, or on a custom cron cadence for monitoring and recurring reporting workflows.
How do I avoid duplicates across runs?
Use record_id as the primary idempotency key. Use source_context.source_url or entity.url as secondary context when investigating duplicates or comparing repeated runs.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets support exports in JSON, CSV, Excel, and other supported formats.
Does this actor collect private data?
No. It is intended to collect publicly available Airbnb listing information that is visible at run time.
Should I enable review collection?
Enable get_reviews when review content or deeper guest feedback context is part of your workflow. Set max_reviews if you need to control dataset size and run time.
What should I include when reporting an issue?
Include the input used, redacted if needed, the run ID, expected versus actual behavior, and a small output sample when it helps illustrate the issue.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available Airbnb stay listing information from https://www.airbnb.com for legitimate business purposes, including:
- Hospitality and travel research and market analysis
- Competitive intelligence and recurring market monitoring
- Data enrichment for analytics, reporting, and operational workflows
Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, and platform terms. This section is informational and not legal advice.
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, including GDPR and CCPA
Support
For help, use the actor page or Issues section. Include the input used, redacted where appropriate, the run ID, expected versus actual behavior, and a small output sample if it helps clarify the problem. Avoid sharing secrets, private credentials, or unnecessary personal information in support requests.