Airbnb hostí přes ve více než 220 zemích — a nenabízí žádný veřejný přístup k API pro tržní data. Pokud chcete cenovou inteligenci, srovnání s konkurencí nebo výzkumné datové sady, scraping je v praxi skoro jediná možnost.
Háček? Airbnb je jeden z nejtěžších webů na scrapování na dnešním webu. Běží na vlastním WAFu podporovaném Akamai Bot Managerem, vše renderuje na straně klienta pomocí Reactu a střídá názvy CSS tříd jako paranoidní zámečník, který pořád mění klíče. Strávil jsem spoustu času testováním různých přístupů ke scrapování Airbnb — od lehkých HTTP knihoven přes plnou automatizaci prohlížeče až po no-code AI nástroje — a realita je taková, že žádná jediná metoda nefunguje dokonale pro každý případ použití.
Tento průvodce vás provede všemi pěti proveditelnými přístupy, s reálným kódem, upřímnými kompromisy a praktickými tipy, jak neskončit s IP adresou zabanovanou do zapomnění. Ať jste Python vývojář, datový analytik, nebo realitní investor, který chce jen tabulku, je tu pro vás cesta.
Proč scrapovat Airbnb? Reálné případy použití
Nikdo nescrapuje Airbnb jen kvůli vzrušení z parsování vnořeného HTML. Lidé mají konkrétní projekty a obchodní cíle — tady je šest nejběžnějších:
| Případ použití | Co scrapujete | Kdo to používá |
|---|---|---|
| Strategie dynamického oceňování | Noční sazby konkurence v určitém okruhu | Hostitelé, správci nemovitostí |
| Investiční analýza | Proxy ukazatele obsazenosti (frekvence recenzí, dostupnost v kalendáři), ADR, RevPAR | Realitní investoři |
| Benchmarking poplatků za úklid | Poplatky za úklid napříč typy nemovitostí (průměrně se pohybují od $81–$335 ve velkých městech USA) | Hostitelé, cenoví konzultanti |
| Analýza sentimentu recenzí | Hodnocení hostů pro NLP/sentiment scoring | Datoví vědci, týmy v pohostinství |
| Akademický výzkum | Sady dat na úrovni trhu pro bytovou politiku, cestovní ruch, městskou ekonomiku | Výzkumníci (48,7 % z 1 021 akademických prací o Airbnb používalo scrapovaná data) |
| Sledování konkurence | Nové nabídky, změny cen, dostupnost v čase | Provozovatelé krátkodobých pronájmů, tržní analytici |
Pro průběžné use casy, jako je sledování cen nebo konkurence, je obzvlášť cenné plánované nebo automatizované scrapování — potřebujete čerstvá data, ne jednorázový snímek.
Trh s krátkodobými pronájmy roste rychleji než tradiční hotely: poptávka po STR , zatímco poptávka po hotelích klesla o 0,3 %. Pokud jste v tomto prostoru, data jsou vaše konkurenční výhoda.
Co dělá Airbnb při scrapování tak složitým
Než napíšete jediný řádek kódu, pomůže pochopit, proč má Airbnb hodnocení z hlediska obtížnosti scrapování. Na sebe se tu vrství tři problémy.
Ochrana Airbnb proti botům
Airbnb používá vlastní WAF v kombinaci s , což je podnikově nasazený systém detekce botů, který skóruje každý požadavek napříč více dimenzemi současně. Nejde jen o rate limiting — je to fingerprinting řízený AI.

Detekční stack, seřazený podle rizika:
- TLS fingerprinting (VYSOKÉ): Knihovna
requestsv Pythonu má jedinečný TLS handshake podpis, který neodpovídá žádnému skutečnému prohlížeči. Akamai analyzuje sady šifer, rozšíření a pořadí ALPN pomocí metod JA3/JA4. Standardnírequestsdosahuje na chráněných webech zhruba oproti 92 % u knihoven, které spoofují TLS fingerprint prohlížeče. - Provádění JavaScriptu (VYSOKÉ): Akamai nasazuje skripty na straně klienta, které sbírají „sensor data“ — vlastnosti zařízení, hardwarové možnosti, detaily OS. Z toho vzniká cookie
_abck. Bez spuštění tohoto JavaScriptu jsou požadavky blokovány. - Fingerprinting prohlížeče (VYSOKÉ): Canvas, WebGL a analýza fontů odhalují automatizační nástroje. Headless prohlížeče odhalují příznak
navigator.webdriver, chybějící pluginy a nekonzistentní hodnoty hardwaru. - Analýza HTTP hlaviček (VYSOKÉ): Chybějící hlavičky
Sec-Fetch-*jsou na Airbnb. - Reputace IP adresy (STŘEDNÍ): Datacentrové IP adresy jsou okamžitě blokovány. Ve velkém měřítku jsou nutné rezidenční proxy.
- Analýza chování (STŘEDNÍ): Dokonale pravidelné načasování, žádný pohyb myši, žádné scrollování — samá mrtvá prozrazení.
Když vás zablokují, uvidíte: 403 Forbidden (selhání fingerprintu), 429 Too Many Requests (omezení rychlosti), 503 Service Unavailable (challenge stránka Akamai) nebo stránku s CAPTCHA.
Dynamické stránky Airbnb s velkým množstvím JavaScriptu
Běžný requests.get() na Airbnb vrátí React shell s placeholder HTML — žádná skutečná data o nabídkách. Jak : „Pouhé HTTP požadavky prostě nefungují, a bez správných proxy a skutečného renderování JavaScriptu nescrapujete Airbnb, ale jen placeholdery.“
Skutečná data se načítají na straně klienta přes interní volání GraphQL API (/api/v3/StaysSearch pro výsledky vyhledávání, /api/v3/PdpPlatformSections pro detaily nabídky). To znamená, že pro většinu užitečných dat potřebujete buď plný prohlížeč, nebo zachytávání API.
DOM se neustále mění
Airbnb používá CSS-in-JS s hashovanými názvy tříd, které se mění při každém nasazení. Zdokumentované příklady zahrnují _tyxjp1, lxq01kf, atm_mk_h2mmj6, t1jojoys a _8s3ctt. Jak vysvětluje : „Tyto třídy nejsou navržené tak, aby byly stabilní, a mohou se kdykoli změnit, často bez jakýchkoli viditelných změn na stránce.“
Vývojářská komunita tenhle problém zdokumentovala velmi podrobně. , že „CSS třídy se pořád mění a spoléhat se na ně je rychlý způsob, jak si rozbít scraper.“ Jeden zkušený vývojář na DEV Community to vystihl dobře: „Scraper, který běží o 50 % pomaleji, ale nikdy se nerozbije, má nekonečně větší hodnotu než rychlý scraper, který každý týden umírá.“
Odhady z oboru naznačují, že kvůli posunům v DOM, aktualizacím fingerprintingu nebo omezování endpointů.
Vyberte si přístup: 5 způsobů, jak scrapovat Airbnb
Než se pustíme do kódu, tady je srovnání. Každý přístup má reálné kompromisy — neexistuje univerzálně „nejlepší“ metoda.
| Přístup | Náročnost nastavení | Rychlost | Odolnost proti botům | Údržba | Nejlepší pro |
|---|---|---|---|---|---|
Čisté HTTP (requests / pyairbnb) | Nízká | Rychlá | Střední (křehké vůči změnám API) | Střední | Rychlý průzkum, malé datové sady |
| Automatizace prohlížeče (Selenium) | Vysoká | Pomalá | Střední | Vysoká (rozbití DOM) | Dynamický obsah, cenotvorba závislá na datech |
| Automatizace prohlížeče (Playwright) | Střední | Střední | Středně vysoká | Střední | Moderní alternativa k Selenium |
| Scraping API (ScrapingBee, Bright Data) | Nízká | Rychlá | Vysoká (včetně vestavěné rotace proxy) | Nízká | Scraping ve velkém, produkční použití |
| No-code (Thunderbit) | Minimální | Rychlá | Vysoká (AI se přizpůsobuje změnám rozvržení) | Žádná | Necodující uživatelé, jednorázová analýza |
Zbytek článku vás krok za krokem provede přístupy v Pythonu a na konci najdete no-code sekci pro ty, kdo chtějí kód úplně přeskočit.
Krok za krokem: Scraping Airbnb v Pythonu pomocí Requests (HTTP-first přístup)
Toto je lehká a rychlá varianta pro start — nepotřebujete prohlížeč ani řešit chromedriver. Kompromis: funguje pro některá data, ale ne pro všechna.
Nastavení Python prostředí
Vytvořte složku projektu a nastavte virtuální prostředí:
1mkdir airbnb-scraper && cd airbnb-scraper
2python -m venv venv
3source venv/bin/activate # Windows: venv\Scripts\activate
4pip install requests beautifulsoup4 pandas pyairbnb
pyairbnb je lehká knihovna (, poslední vydání únor 2026), která zachytává interní GraphQL API StaysSearch od Airbnb. Nescrapuje HTML vůbec, takže je odolná vůči změnám CSS tříd. Model s jediným správcem je rizikový faktor, ale projekt je aktivně aktualizován.
Varianta A: Použití pyairbnb pro rychlé výsledky vyhledávání
Nejrychlejší cesta ke strukturovaným datům z Airbnb:
1import pyairbnb
2import pandas as pd
3# Hledání podle lokality a dat
4results = pyairbnb.search_all(
5 query="Austin, TX",
6 checkin="2025-08-01",
7 checkout="2025-08-03",
8 adults=2,
9 currency="USD"
10)
11# Převod na DataFrame
12df = pd.DataFrame(results)
13print(df[['name', 'price', 'rating', 'reviewsCount', 'url']].head())
14df.to_csv("airbnb_austin.csv", index=False)
pyairbnb také podporuje get_details(), get_price(), get_reviews(), get_calendar() a get_listings_from_user(). Všechny funkce přijímají parametr proxy URL pro rotaci.
Varianta B: Ruční HTTP požadavky s BeautifulSoup
Pokud nechcete spoléhat na knihovnu třetí strany, můžete posílat požadavky přímo. Upozornění: čisté requests se kvůli TLS fingerprintingu blokuje rychle. Použití curl_cffi (který spoofuje TLS fingerprint prohlížeče) výrazně zlepšuje úspěšnost.
1from curl_cffi import requests as cffi_requests
2from bs4 import BeautifulSoup
3import json
4url = "https://www.airbnb.com/s/Austin--TX/homes?checkin=2025-08-01&checkout=2025-08-03&adults=2"
5headers = {
6 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
7 "Accept-Language": "en-US,en;q=0.9",
8 "Sec-Fetch-Dest": "document",
9 "Sec-Fetch-Mode": "navigate",
10 "Sec-Fetch-Site": "none",
11 "Sec-Fetch-User": "?1",
12}
13response = cffi_requests.get(url, headers=headers, impersonate="chrome131")
14soup = BeautifulSoup(response.text, "html.parser")
Extrakce dat ze Schema.org microdat
Airbnb vkládá schema.org microdata přímo do HTML značek — a tyto sémantické značky jsou . Hledejte kontejnery itemprop="itemListElement":
1listings = soup.find_all("div", itemprop="itemListElement")
2data = []
3for listing in listings:
4 name_tag = listing.find("meta", itemprop="name")
5 url_tag = listing.find("meta", itemprop="url")
6 position_tag = listing.find("meta", itemprop="position")
7 data.append({
8 "name": name_tag["content"] if name_tag else None,
9 "url": url_tag["content"] if url_tag else None,
10 "position": position_tag["content"] if position_tag else None,
11 })
12df = pd.DataFrame(data)
13df.to_csv("airbnb_listings.csv", index=False)
Omezení: tagy schema.org vám dají názvy nabídek, URL a pozice — ale ne ceny, hodnocení ani vybavení. Pro bohatší data potřebujete automatizaci prohlížeče nebo zachytávání API.
Krok za krokem: Scraping Airbnb v Pythonu pomocí Selenium nebo Playwright
Když potřebujete dynamický obsah — ceny závislé na datech, vybavení schované za tlačítkem „Zobrazit více“, plný text recenzí — automatizace prohlížeče je správný nástroj.
Kdy použít automatizaci prohlížeče
- Stránky, které vyžadují výběr dat pro zobrazení skutečné ceny
- Vybavení a recenze skryté za interaktivními prvky
- Jakákoli data, která se načítají až po spuštění JavaScriptu
- Když potřebujete se stránkou interagovat (scrollování, klikání)
Selenium vs. Playwright: Playwright většinou vyhrál
Playwright předstihl Selenium jako preferovaný nástroj pro automatizaci prohlížeče. Je rychlejší, má vestavěnou podporu async, automaticky instaluje binárky prohlížeče a lépe zvládá moderní webové aplikace. Trvalý problém Selenium s — kdy ChromeDriver zaostává za aktualizacemi Chromu — zůstává konstantní bolestí.
Na druhou stranu má Selenium větší ekosystém návodů a odpovědí na StackOverflow — použijte tedy to, s čím se cítíte pohodlně.
Nastavení Playwrightu
1pip install playwright playwright-stealth
2playwright install chromium
Navigace na Airbnb a extrakce nabídek
1import asyncio
2from playwright.async_api import async_playwright
3from playwright_stealth import stealth_async
4import json
5async def scrape_airbnb():
6 async with async_playwright() as p:
7 browser = await p.chromium.launch(headless=False) # headless=True je rizikovější
8 context = await browser.new_context(
9 viewport={"width": 1920, "height": 1080},
10 user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
11 )
12 page = await context.new_page()
13 await stealth_async(page)
14 url = "https://www.airbnb.com/s/Austin--TX/homes?checkin=2025-08-01&checkout=2025-08-03&adults=2"
15 await page.goto(url, wait_until="networkidle")
16 # Počkejte na karty nabídek pomocí data-testid (stabilnější než třídy)
17 await page.wait_for_selector('[data-testid="card-container"]', timeout=15000)
18 # Extrakce dat nabídek
19 listings = await page.query_selector_all('[data-testid="card-container"]')
20 results = []
21 for listing in listings:
22 title_el = await listing.query_selector('[data-testid="listing-card-title"]')
23 subtitle_el = await listing.query_selector('[data-testid="listing-card-subtitle"]')
24 title = await title_el.inner_text() if title_el else None
25 subtitle = await subtitle_el.inner_text() if subtitle_el else None
26 results.append({"title": title, "subtitle": subtitle})
27 await browser.close()
28 return results
29data = asyncio.run(scrape_airbnb())
Zachytávání GraphQL API (nejspolehlivější DIY metoda)
Místo parsování DOM prvků, které se neustále rozbíjejí, můžete zachytávat interní API volání Airbnb. To vrací čisté, strukturované JSON:
1api_responses = []
2async def handle_response(response):
3 if "StaysSearch" in response.url:
4 try:
5 data = await response.json()
6 api_responses.append(data)
7 except:
8 pass
9page.on("response", handle_response)
10await page.goto(url, wait_until="networkidle")
11# Parsování API odpovědi
12if api_responses:
13 search_results = api_responses[0]["data"]["presentation"]["staysSearch"]["results"]["searchResults"]
14 for result in search_results:
15 listing = result.get("listing", {})
16 pricing = result.get("pricingQuote", {})
17 print(f"{listing.get('name')} — {pricing.get('price', {}).get('total')}")
Odpověď StaysSearch obsahuje id, name, roomTypeCategory, bedrooms, bathrooms, personCapacity, avgRating, reviewsCount, isSuperhost a kompletní cenové rozpadky. To jsou stejná data, která frontend Airbnb používá k vykreslení stránky.
Jak řešit stránkování
Airbnb zobrazuje přibližně 18 nabídek na stránku a používá URL parametr items_offset. Maximum je zhruba 17 stránek (~300 nabídek na jedno vyhledávání).
1import time
2import random
3base_url = "https://www.airbnb.com/s/Austin--TX/homes?checkin=2025-08-01&checkout=2025-08-03&adults=2"
4all_results = []
5for page_num in range(17): # Max ~17 stránek
6 offset = page_num * 18
7 paginated_url = f"{base_url}&items_offset={offset}"
8 # ... navigace a scraping jako výše ...
9 time.sleep(random.uniform(3, 7)) # Náhodná pauza mezi stránkami
Jak scrapovat ceny Airbnb v Pythonu (řešení problému cen závislých na datech)
Toto je část, kterou většina návodů přeskočí — a přitom je pro cenovou analýzu nejdůležitější.
Proč se ceny Airbnb nezobrazují bez dat
Zhruba 90 % času Airbnb vyžaduje datum příjezdu/odjezdu, než zobrazí skutečnou cenu. Bez dat dostanete jen vágní rozpětí „cena za noc“ (nebo někdy vůbec žádnou cenu). Jak : „Pokud nabídka cenu nezobrazuje (například když Airbnb chce, abyste upravili data nebo počet hostů), funkce jednoduše vrátí None.“
Dobrá zpráva: od dubna 2025 Airbnb pro všechny hosty po celém světě. Dříve byl k dispozici přepínač „Zobrazit celkovou cenu“ — používalo ho téměř 17 milionů hostů, než se stal výchozím.
Předávání dat přes URL parametry
Do vyhledávací URL vždy zahrňte checkin a checkout:
1https://www.airbnb.com/s/Austin--TX/homes?checkin=2025-08-01&checkout=2025-08-03&adults=2
Tím donutíte Airbnb vrátit skutečné ceny za noc i celkové ceny v odpovědích stránky a API.
Procházení rozsahů dat pro cenovou analýzu
Pro hostitele a investory, kteří potřebují cenová data napříč sezónami:
1from datetime import datetime, timedelta
2start_date = datetime(2025, 7, 1)
3end_date = datetime(2025, 12, 31)
4stay_length = 2 # noci
5current = start_date
6date_ranges = []
7while current + timedelta(days=stay_length) <= end_date:
8 checkin = current.strftime("%Y-%m-%d")
9 checkout = (current + timedelta(days=stay_length)).strftime("%Y-%m-%d")
10 date_ranges.append((checkin, checkout))
11 current += timedelta(days=7) # Týdenní intervaly
12for checkin, checkout in date_ranges:
13 url = f"https://www.airbnb.com/s/Austin--TX/homes?checkin={checkin}&checkout={checkout}&adults=2"
14 # ... scraping cenových dat ...
15 time.sleep(random.uniform(5, 10)) # Buďte ohleduplní k tempu
Při parsování cen z odpovědi GraphQL API hledejte objekt pricingQuote, který obsahuje price.total, price.priceItems (jednotlivé položky jako poplatek za úklid, servisní poplatek) a rate.amount (noční sazba).
Jak zajistit, aby váš Python scraper na Airbnb přežil redesign webu
To je ta údržbová část, kterou nikdo nechce psát — ale je to patrně nejdůležitější část jakéhokoli projektu scrapování Airbnb.
Křehké vs. odolné selektory
| Strategie selektoru | Riziko rozbití | Náročnost kódu | Příklad |
|---|---|---|---|
Názvy CSS tříd (např. .t1jojoys) | 🔴 Vysoké — mění se často | Nízká | soup.select('.t1jojoys') |
Atributy data-testid | 🟡 Střední — stabilnější | Nízká | soup.select('[data-testid="listing-card-title"]') |
| Schema.org microdata v HTML | 🟢 Nízké — strukturální standard | Střední | soup.find("meta", itemprop="name") |
| Zachytávání GraphQL API | 🟢 Nízké — strukturovaný JSON | Střední | response.json()["data"]["presentation"] |
| Extrakce pomocí AI (Thunderbit) | 🟢 Žádné — automaticky se přizpůsobí | Žádná | UI na 2 kliknutí, bez kódu |
Použití atributů data-testid
Aktuálně zdokumentované hodnoty data-testid na Airbnb zahrnují card-container, listing-card-title, listing-card-subtitle a listing-card-name. Tyto hodnoty jsou vázané na interní testovací framework Airbnb, ne na vizuální stylování, takže se mění méně často než CSS třídy. I tak se změnit mohou — jen méně často.
1# Odolnější než selektory založené na třídách
2title = await page.query_selector('[data-testid="listing-card-title"]')
Použití Schema.org microdat
Airbnb používá atributy itemprop přímo v HTML značkách. Ty vycházejí z webových standardů a mění se mnohem méně často než vizuální CSS třídy:
1# Extrakce všech položek nabídek pomocí schema.org markup
2listings = soup.find_all("div", itemprop="itemListElement")
3for listing in listings:
4 name = listing.find("meta", itemprop="name")["content"]
5 url = listing.find("meta", itemprop="url")["content"]
Zachytávání GraphQL API
Nejspolehlivější DIY přístup. Interní API Airbnb vrací čisté JSON, které je strukturované pro spotřebu frontendem. Formát odpovědi se mění méně často než DOM, protože na něm závisí i frontend tým.
Proč extrakce pomocí AI eliminuje údržbu úplně
I ty nejlepší strategie selektorů se nakonec rozbijí. Hodnoty data-testid se přejmenují. Struktury odpovědí API dostanou verzi. Jediný přístup, který skutečně eliminuje údržbu, je ten, který stránku při každém spuštění čte čerstvě pomocí AI — bez hardcodovaných selektorů. Více o tom níže v sekci o Thunderbit.
Jak se při scrapování Airbnb vyhnout blokaci
Praktické tipy z praxe a komunitního konsenzu.
Rotujte proxy (rezidenční jsou nutnost)
Datacentrové IP adresy Airbnb okamžitě blokuje. Pro jakékoli smysluplné měřítko jsou nutné rezidenční proxy. Nejlepší poskytovatelé podle výkonu a ceny:
| Poskytovatel | Cena (za GB) | Úspěšnost | Poznámky |
|---|---|---|---|
| Decodo (dříve Smartproxy) | ~2,20 USD/GB při 100 GB | 99,68 % | Nejrychleji měřený (odezva 0,54 s) |
| Bright Data | ~5,04 USD/GB při 100 GB | 99 %+ | Největší pool, nejvíc funkcí |
| Oxylabs | ~4 USD/GB při 100 GB | 99 %+ | Silné pro e-commerce |
Důležitý poznatek k rotaci od zkušeného vývojáře: „Rotace IP při každém požadavku je ve skutečnosti varovný signál. Skuteční uživatelé si během relace ponechávají stejnou IP.“ Doporučení je sticky sessions po dobu 5–10 minut a rotace každých 20–30 požadavků.
1proxies = {
2 "http": "http://user:pass@residential-proxy:port",
3 "https": "http://user:pass@residential-proxy:port",
4}
5response = cffi_requests.get(url, headers=headers, proxies=proxies, impersonate="chrome131")
Omezujte tempo požadavků
Konsenzus komunity ohledně bezpečných limitů:
- Max. stránek za hodinu: ≤100 (~1,6/min)
- Prodleva mezi požadavky: 3–10 sekund (náhodně, nejlépe s Gaussovým rozdělením)
- Přestávky v relaci: Každých 20 požadavků pauza 30–60 sekund
- Optimální okno scrapování: Mimo špičku (~2:00 ráno místního času)
- Při chybách 429: Exponenciální backoff s jitterem
1import random
2import time
3delay = random.gauss(5, 1.5) # Průměr 5 sekund, směrodatná odchylka 1,5
4delay = max(2, min(delay, 10)) # Omezit mezi 2–10 sekundami
5time.sleep(delay)
Používejte kompletní a konzistentní hlavičky
Chybějící hlavičky Sec-Fetch-* jsou . Každá hlavička musí být interně konzistentní — pokud váš User-Agent tvrdí, že jde o Chrome 131 na Windows, všechny ostatní hlavičky musí této identitě odpovídat.
1headers = {
2 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
3 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
4 "Accept-Language": "en-US,en;q=0.9",
5 "Accept-Encoding": "gzip, deflate, br",
6 "Sec-Fetch-Dest": "document",
7 "Sec-Fetch-Mode": "navigate",
8 "Sec-Fetch-Site": "none",
9 "Sec-Fetch-User": "?1",
10 "Sec-CH-UA": '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
11 "Sec-CH-UA-Platform": '"Windows"',
12}
S headless prohlížeči zacházejte opatrně
U Playwrightu balíček playwright-stealth opravuje zhruba 17 evazivních modulů (navigator.webdriver, plugins, languages, WebGL). Moderní anti-bot systémy ale kontrolují přes 40 vlastností oproti zhruba 12, které jsou patchované. Spuštění v non-headless režimu (headless=False) je bezpečnější, ale pomalejší.
U Selenium undetected-chromedriver patchuje binárku ChromeDriveru, aby odstranil indikátory automatizace, ale headless režim zůstává nestabilní.
Zvažte pro škálování scraping API
Pokud scrapujete tisíce stránek, scraping API za vás vyřeší rotaci proxy, CAPTCHA i renderování JavaScriptu. V dosáhl Bright Data úspěšnosti 99 % při 48 polích na nabídku. Kompromis je cena — stealth proxy režim ScrapingBee stojí , takže plán za 49 USD měsíčně dá jen asi ~3 333 stealth požadavků.
Scraping Airbnb bez Pythonu: no-code alternativa s Thunderbit
Ne každý, kdo scrapuje Airbnb, je vývojář. Hostitelé chtějí cenová srovnání. Investoři chtějí tržní data. Analytici chtějí tabulku. Pokud jste prošli sekce o Pythonu a pomysleli si „tohle je víc údržby, než jsem chtěl“, tahle část je pro vás.
Jak Thunderbit scrapuje Airbnb na pár kliknutí
je AI web scraper, který běží jako . Postup je následující:
- Nainstalujte rozšíření z Chrome Web Store
- Otevřete stránku s výsledky vyhledávání na Airbnb — pro přesné ceny zahrňte do URL data (např.
?checkin=2025-08-01&checkout=2025-08-03) - Klikněte na „AI navrhnout pole“ — Thunderbit projde stránku a automaticky rozpozná sloupce jako název nabídky, cena, hodnocení, lokalita a URL
- Klikněte na „Scrapovat“ — data se vyplní do strukturované tabulky
- Použijte „Scrapovat podstránky“ pro návštěvu detailní stránky každé nabídky a stažení vybavení, recenzí, informací o hostiteli a kompletního cenového rozpisu — bez jakékoli další konfigurace
- Exportujte do Google Sheets, Excelu, Airtable nebo Notion
Funkce scrapování podstránek je tady zásadní. U Python přístupů znamená scrapování detailních stránek psát oddělenou parsovací logiku, řešit stránkování v recenzích a spravovat paralelní požadavky. S Thunderbit je to na jedno kliknutí.
Proč Thunderbit řeší tři největší problémy scrapování Airbnb
Tři problémy, které jsem popsal výše — ochrana proti botům, renderování JavaScriptu a rozbíjení DOM — jsou přesně to, co dělá z Python scraperů náročné nástroje na údržbu. Thunderbit řeší všechny tři:
- Žádné obavy z blokace IP: Cloud Scraping režim Thunderbitu interně řeší rotaci proxy
- Žádné rozbíjení selektorů: AI čte stránku při každém spuštění čerstvě — žádné CSS selektory k údržbě, žádný kód k aktualizaci při redesignu Airbnb
- Žádné starosti s nastavením: Žádné ovladače Selenium, žádné Python prostředí, žádné konflikty závislostí
- Plánované scrapování: Popište časový interval v přirozeném jazyce pro průběžné sledování cen — skvělé pro případy dynamického oceňování a sledování konkurence
Kdy použít Python a kdy Thunderbit
Není to buď/anebo — záleží na tom, co potřebujete:
| Potřeba | Python | Thunderbit |
|---|---|---|
| Plná kontrola nad logikou scrapování | ✅ Ano | ❌ Ne |
| Funguje bez programátorských dovedností | ❌ Ne | ✅ Ano |
| Automaticky zvládá změny DOM | ❌ Ne | ✅ Ano (na bázi AI) |
| Scrapování podstránek (detailní stránky) | Složitá konfigurace | 1 kliknutí |
| Plánované/opakované scrapování | Vlastní cron job | Vestavěný plánovač |
| Export do Sheets/Excel/Airtable | Ruční kód | Vestavěný |
| Integrace do datových pipeline | ✅ Ano | Omezené |
| Náklady ve velkém měřítku (10K+ stránek) | Náklady na server + proxy | Ceník Thunderbitu |
Pokud potřebujete kontrolu na úrovni kódu, vlastní logiku nebo integraci do existující datové pipeline, použijte Python. Pokud potřebujete data rychle a bez údržby, Thunderbit je pragmatická volba.
Právní a etické tipy pro scrapování Airbnb
Stručně a prakticky — nejsem právník a tohle není právní poradenství.
Co říká zákon (obecně):
- Rozhodnutí stanovilo, že scrapování veřejně dostupných dat z webů, které nevyžadují autentizaci, neporušuje CFAA
- (leden 2024): soudce rozhodl, že podmínky použití nezavazují scrapers, kteří nejsou přihlášeni
- Případ (2025) zavádí novou teorii, že obcházení CAPTCHA a rate limitů může porušovat ustanovení DMCA proti obcházení ochrany — zatím neotestované, ale stojí za sledování
Co říká Airbnb: Jejich výslovně zakazují automatizovaný sběr dat. Airbnb však nikdy veřejně nezažalovalo scraper. funguje už více než 11 let bez právní výzvy, přestože ho Airbnb nazývá „odpad“.
Praktické zásady:
- Scrapujte jen veřejně dostupná data (neobcházejte přihlašovací brány)
- Respektujte doporučení
robots.txt - Nepřetěžujte servery agresivní rychlostí požadavků
- Zacházejte s osobními údaji opatrně podle GDPR/CCPA
- Pro komerční použití se poraďte s právníkem
Závěr a klíčové poznatky
Scrapování Airbnb sahá od „rychle a na krev“ až po „produkční kvalitu“. Hlavní poznatky:
- Do URL vždy předávejte data (parametry
checkinacheckout) — bez nich jsou cenová data k ničemu - Nespoléhejte na názvy CSS tříd. Místo toho používejte atributy
data-testid, schema.org microdata nebo zachytávání GraphQL API - Rezidenční proxy jsou ve velkém měřítku nutnost. Datacentrové IP adresy jsou blokovány okamžitě
- Omezujte tempo požadavků — náhodné prodlevy 3–10 sekund, sticky sessions a exponenciální backoff při chybách
- Pro scrapování bez údržby eliminují nástroje založené na AI, jako je , rozbíjení selektorů úplně — přesně ten problém, kvůli kterému je Python scraper drahý na údržbu
- Přizpůsobte nástroj projektu. Rychlý výzkum?
pyairbnb. Analýza dynamického oceňování? Playwright se zachytáváním API. Průběžné sledování bez kódu? Thunderbit. Produkční měřítko? Scraping API.
Chcete-li vyzkoušet no-code cestu, — můžete si ho otestovat na několika stránkách s výsledky Airbnb za zhruba dvě minuty. U Python přístupu jsou všechny vzory kódu v tomto článku připravené k úpravě podle vašeho konkrétního případu použití.
Pro více informací o přístupech a nástrojích pro web scraping se podívejte na naše průvodce , a . Můžete se také podívat na tutoriály na .
Často kladené otázky
Může vás Airbnb za scraping zablokovat?
Ano. Airbnb používá Akamai Bot Manager s TLS fingerprintingem, JavaScriptovými výzvami, fingerprintingem prohlížeče a skórováním reputace IP. Pokud vás odhalí, dostanete odpověď 403, 429 nebo CAPTCHA. Rotace proxy, realistické hlavičky a omezení rychlosti požadavků riziko snižují, ale při vysokých objemech neexistuje zaručený způsob, jak se detekci vyhnout.
Je scraping Airbnb legální?
Scraping veřejně dostupných dat je obecně povolen podle judikatury v USA (hiQ v. LinkedIn, Meta v. Bright Data), ale podmínky použití Airbnb to výslovně zakazují. Právní situace se liší podle jurisdikce a nově se objevující teorie DMCA proti obcházení ochrany (Reddit v. Perplexity) může ovlivnit scrapery, které obcházejí anti-bot opatření. Pro komerční použití se poraďte s právníkem.
Jaká data můžete z Airbnb scrapovat?
Z výsledků vyhledávání: název nabídky, cenu (s daty), hodnocení, počet recenzí, lokalitu, typ nemovitosti a URL. Z detailních stránek: plný popis, vybavení, informace o hostiteli, všechny recenze, fotografie, dostupnost v kalendáři, poplatky za úklid a cenové rozpisy. Hloubka závisí na tom, zda scrapujete jen stránky s výsledky, nebo i jednotlivé detailní stránky nabídek.
Potřebuji pro scrapování Airbnb v Pythonu proxy?
Pro pár stránek se možná obejdete bez proxy. Pro cokoli nad 20–30 požadavků se důrazně doporučuje rotace rezidenčních proxy. Datacentrové IP adresy jsou okamžitě blokovány. Komunitní konsenzus doporučuje maximum zhruba 100 stránek za hodinu z jedné IP s náhodnými prodlevami 3–10 sekund mezi požadavky.
Jaký je nejjednodušší způsob scrapování Airbnb bez kódování?
vám umožní scrapovat výsledky vyhledávání i detailní stránky nabídek Airbnb s detekcí polí poháněnou AI — žádné nastavování selektorů, žádný kód. Zvládá scrapování podstránek (pro vybavení, recenze a informace o hostiteli), export do Google Sheets, Excelu, Airtable nebo Notion a nabízí plánované scrapování pro průběžné sledování cen.
Zjistit více
