본문으로 건너뛰기
cccskills
무료GitHub에 공개

vrbo

Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation. VRBO sits behind Akamai Bot Manager so plain HTTP and standard Playwright get a 429 bot wall. Use for whole-home or group stays, multi-bedroom rentals, and Airbnb-vs-VRBO comparisons. Trigger phrases include search VRBO, Vrbo rentals, vacation rental, cabin rental, whole house, condo for the group.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구DockerPlaywright
설치 방법 보기

포함된 파일(5)

  • SKILL.md6.8 KB
  • Dockerfile229 B
  • scripts/entrypoint.sh207 B
  • scripts/search_vrbo.py17.8 KB
  • tests/test_search_vrbo.py7.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

VRBO Search

Search VRBO vacation rentals via Patchright and return whole-home / condo / cabin listings with pricing and booking links. VRBO is the natural complement to the Airbnb MCP for group and family stays — many mountain-town and resort property managers cross-list on both, but VRBO carries professionally-managed condos and cabins that don't always appear on Airbnb.

Requires Patchright (undetected Playwright fork). VRBO sits behind Akamai Bot Manager — plain HTTP, standard Playwright, @playwright/mcp, and agent-browser all get a 429 Too Many Requests ("Provisioned request rate has been exceeded") bot wall. Patchright passes Akamai's sensor and earns the _abck cookie. This is the same wall — and the same fix — as the chase-travel / amex-travel / southwest skills.

Must run headed (headless=False). Akamai flags headless browsers. On macOS a Chrome window briefly appears. For background / unattended runs, use Docker (Xvfb provides the virtual display).

No login required. VRBO search results are public — unlike chase-travel / amex-travel, there are no credentials. The persistent profile only caches the Akamai cookie so repeat searches re-challenge less.

Prerequisites

pip install patchright && patchright install chromium

Or use Docker (no local install, headed via Xvfb):

docker build -t vrbo skills/vrbo/

When to Use

  • Group / family stays where you want a whole home, condo, or cabin
  • "Compare Airbnb vs VRBO in <place>"
  • Multi-bedroom rentals with separate rooms (the multi-person trip pattern)
  • Resort / mountain towns (Canmore, Banff-area, Whistler, Muskoka) where professional property managers list condos on VRBO that aren't on Airbnb

When NOT to Use

  • Completing a booking. This skill finds rentals and returns links only. Do not attempt to complete a purchase.
  • Hotels. Use compare-hotels / serpapi / liteapi / the portal skills.
  • Single rooms / shared rooms. VRBO is whole-property only; for private rooms in a shared home use the Airbnb MCP (private_room).

Usage

# Local (pops up a Chrome window on macOS)
python3 skills/vrbo/scripts/search_vrbo.py \
  --dest "Canmore, Alberta, Canada" \
  --checkin 2026-06-26 --checkout 2026-07-02 --adults 3 --json

# Whole homes with 3+ bedrooms
python3 skills/vrbo/scripts/search_vrbo.py \
  --dest "Canmore, Alberta" --checkin 2026-06-26 --checkout 2026-07-02 \
  --adults 3 --min-bedrooms 3 --json

# Docker (headless host, headed browser via Xvfb)
docker run --rm vrbo \
  --dest "Canmore, Alberta" --checkin 2026-06-26 --checkout 2026-07-02 \
  --adults 3 --json

Arguments

FlagDefaultNotes
--destrequiredDestination keyword, e.g. "Canmore, Alberta, Canada". VRBO resolves it to a regionId server-side.
--checkin / --checkoutrequiredISO YYYY-MM-DD. Must be today or later.
--adults2Traveler count.
--children0
--petsoffPet-friendly only.
--min-bedrooms0Client-side filter (VRBO's URL filter is unreliable).
--limit20Max listings returned.
--retries4Akamai retry attempts (homepage warm-up → SERP).
--jsonoffEmit JSON to stdout (use this for orchestration).

Output

JSON shape (with --json):

{
  "source": "vrbo",
  "extractor": "__PLUS_REDUX_STORE__ | dom:lodging-card | dom:anchors",
  "searchUrl": "https://www.vrbo.com/search?...",
  "count": 12,
  "listings": [
    {
      "id": "1234567",
      "name": "Mountain-View Condo Steps from Main St",
      "bedrooms": 3, "bathrooms": 2, "sleeps": 6,
      "rating": 4.9, "reviewCount": 84,
      "priceText": "The current price is CA $312 CA $312 CA $2,184 total includes taxes & fees",
      "pricePerNight": 312, "priceTotal": 2184, "priceIncludesTaxes": true,
      "lat": 51.08, "lng": -115.35,
      "url": "https://www.vrbo.com/en-ca/cottage-rental/p1234567?..."
    }
  ]
}

extractor tells you which layer produced the data. __PLUS_REDUX_STORE__ is richest (bedrooms, coords, review counts); dom:lodging-card is reliable but thinner (the common case — names, prices, URLs); dom:anchors is a last-ditch id+url scrape — if you see that, the page shape changed and selectors need a refresh (file a P2 task).

Prices: the SERP price string is parsed into pricePerNight and priceTotal. Verified against live data: VRBO's SERP total includes taxes & fees (priceIncludesTaxes: true) — priceTotal is the all-in for the whole stay, pricePerNight is the lead nightly rate. This satisfies the hotel-comparison standard's all-in requirement directly; still open the listing URL to confirm before booking, since a damage deposit or optional add-ons may not be in the SERP figure.

Tests

The pure logic (search-URL building, Akamai block/challenge detection, SERP price parsing, skeleton filtering, listing enrichment) is covered by stdlib unittest tests — no browser, network, or Patchright needed (the patchright import is lazy):

python3 -m unittest discover -s skills/vrbo/tests -v   # or: python3 -m pytest skills/vrbo/tests

17 tests, no third-party deps. The browser-driven path (Akamai bypass, DOM extraction) can't be unit-tested without a live residential connection — verify it manually with a real search (see Usage above). The repo smoke test (scripts/smoke-test.sh) separately validates this skill's frontmatter and structure.

Known fragility

  • Akamai is IP-rate-limited. Datacenter / CI / VPN IPs are frequently blocked even with Patchright. Run on a residential connection for best results. If every retry 429s, the script exits 1 with a clear message — that is an environment block, not a code bug. In practice a home/mobile/hotel-WiFi IP clears the wall, but rapid repeat searches from the same IP can start 429-ing — space searches a few minutes apart, and don't loop it in a tight batch.
  • DOM selectors drift. VRBO/Expedia revise their data-stid design system periodically. The extractor tries the embedded state blob first (most stable), then data-stid cards, then a generic anchor scrape. If extractor is dom:anchors, refresh the Layer-1/2 selectors.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

alliances

무료

Airline alliance membership (Star Alliance, oneworld, SkyTeam) and cross-alliance booking relationships. Maps which loyalty programs book which airlines, including bilateral partnerships outside alliances.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

Check American Airlines AAdvantage balance, elite status, and loyalty points via Patchright. Handles email 2FA with 6-box code entry. Uses persistent browser profiles to skip 2FA on subsequent runs.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

Search Amex travel portal for cash prices, MR points pricing, IAP discounts, and FHR/THC hotel benefits via Patchright. Use when comparing pay-with-points portal pricing to award alternatives.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

Search Atlas Obscura for weird, wonderful, and hidden gem places near any destination. Find the interesting stuff, not boring plaques. Search by coordinates, get full details with descriptions and images.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

Find the cheapest award dates for a route over a date range. Searches seats.aero across all programs, groups by date, and shows a calendar grid of the best deals. Use when dates are flexible and you want to find the sweet spot.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

Per-program rules for placing award flights on hold before transferring points. Covers programs with holds (AA, Lufthansa, Flying Blue, Cathay, Turkish, Virgin Atlantic, ANA, Emirates, EVA Air) and those without. Includes transfer-speed reference.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

borski/travel-hacking-toolkit7062026년 10월 19일 업데이트

borski의 스킬 모두 보기

이 스킬의 문제 신고