alliances
Airline alliance membership (Star Alliance, oneworld, SkyTeam) and cross-alliance booking relationships. Maps which loyalty…
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright. Often beats portals by 10-30%. Use when comparing hotel or ticket prices for a trip.
$ npx -y skills add borski/travel-hacking-toolkit --skill ticketsatwork --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ticketsatworkContext preview
The summary Claude sees to decide when to auto-load this skill.
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright. Often beats portals by 10-30%. Use when comparing hotel or ticket prices for a trip.
name: ticketsatwork description: Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright. Often beats portals by 10-30%. Use when comparing hotel or ticket prices for a trip. category: hotels summary: TicketsAtWork (EBG) corporate-perks portal. Hotels, theme park tickets, attractions, live events. Often beats portals by 10-30%. api_key: None (requires TaW account + Patchright) docker_image: ghcr.io/borski/ticketsatwork allowed-tools: Bash(docker *), Bash(python3 *)
Scrapes inventory from [ticketsatwork.com](https://www.ticketsatwork.com), a corporate employee perks platform operated by Entertainment Benefits Group (EBG). Members access negotiated rates through their employer's account.
**No public API.** Patchright (undetected Playwright fork) is required because TaW is behind bot protection that blocks `requests`, vanilla Playwright, and headless Chrome.
TaW aggregates inventory from EBG's negotiated wholesale pool (similar inventory feeds as Costco Travel, AAA, etc.). On the same property + dates, TaW often beats:
Discount badges are typically genuine: the "Save $X" amount is computed against the hotel's published rate at search time.
**Tradeoff:** No portal credits, no card-program elite benefits, no points earning on the stay. You earn TaW "Funlife" loyalty points usable at ~1 cpp on future TaW bookings only.
| Subcommand | What it does | Status | |------------|--------------|--------| | `hotels` | Hotel search by city + date range. Returns ~10-200+ properties with prices, savings vs strike rate, lat/lng, ratings, distance | Stable | | `cars` | Rental car search by pickup location + date/time range | **Experimental.** TaW resolves the autocomplete latlng but not always the airport code their car backend needs. Some valid-looking searches return "no cars at this location" even for major airports. See "Known limitations" below. | | `tickets` | Browse a category landing page (e.g. `disneyland`, `wdw`, `usf`) or keyword-search via Reflektion | Stable. Returns deal title, savings claim, description, image, detail URL. **Prices are not on the listing**, they appear on the detail page. |
Form-based email + password. The skill submits the login form via JavaScript directly. Each script run uses a fresh browser profile, so each run logs in fresh.
The visible "Sign in / Register" UI requires modal interactions that Patchright handles unreliably (cookie banner overlap, modal trigger visibility issues). The login form (`#member_login_form`) is in the DOM at all times, so we set values via JS and click the form's submit button.
docker pull ghcr.io/borski/ticketsatwork:latest # Hotels docker run --rm -e TAW_USER -e TAW_PASS \ ghcr.io/borski/ticketsatwork hotels \ --city "Carlsbad, CA" --checkin 2027-03-04 --checkout 2027-03-07 \ --rooms 1 --adults 2 --json # Tickets / attractions (category) docker run --rm -e TAW_USER -e TAW_PASS \ ghcr.io/borski/ticketsatwork tickets \ --category disneyland --json # Tickets / attractions (keyword) docker run --rm -e TAW_USER -e TAW_PASS \ ghcr.io/borski/ticketsatwork tickets \ --keyword "universal studios" --json # Live events in destination cities (concerts, theater, sports) docker run --rm -e TAW_USER -e TAW_PASS \ ghcr.io/borski/ticketsatwork tickets \ --section events --json # Rental cars (experimental) docker run --rm -e TAW_USER -e TAW_PASS \ ghcr.io/borski/ticketsatwork cars \ --pickup "San Diego Airport, CA" \ --pickup-date 2026-06-15 --pickup-time 12:00 \ --dropoff-date 2026-06-18 --dropoff-time 12:00 \ --age 30 --json
# Hotels TAW_USER=you@example.com TAW_PASS=yourpass \ python3 scripts/search_hotels.py --city "Carlsbad, CA" \ --checkin 2027-03-04 --checkout 2027-03-07 --json # Tickets TAW_USER=you@example.com TAW_PASS=yourpass \ python3 scripts/browse_tickets.py --category disneyland --json # Cars TAW_USER=you@example.com TAW_PASS=yourpass \ python3 scripts/search_cars.py \ --pickup "San Diego Airport, CA" \ --pickup-date 2026-06-15 --pickup-time 12:00 \ --dropoff-date 2026-06-18 --dropoff-time 12:00 --json
| Flag | Required | Default | Description | |------|----------|---------|-------------| | `--city` | yes | | City or address. Goes into the destination autocomplete. | | `--checkin` | yes | | Check-in date in `YYYY-MM-DD`. | | `--checkout` | yes | | Check-out date in `YYYY-MM-DD`. | | `--rooms` | no | 1 | Number of rooms. | | `--adults` | no | 2 | Adults per room. | | `--children` | no | 0 | Children per room. | | `--json` | no | off | Structured JSON instead of a human-readable table. | | `--debug` | no | off | Save screenshots + HTML at each step to `/output` (Docker) or `/tmp/taw_debug/` (local). | | `--raw-html-out` | no | | Write the raw results HTML to a file for offline analysis. |
{
"city": "Carlsbad, CA",
"checkin": "2027-03-04",
"checkout": "2027-03-07",
"rooms": 1,
"adults": 2,
"children": 0,
"display_pages": 14,
"listing_count": 134,
"listings": [
{
"id": "hotel_NNNNNN_x",
"name": "Property Display Name",
"name_normalized": "property display name",
"rating": 4.5,
"guest_rating": 9.0,
"priceAI-powered travel hacking with points, miles, and award flights. Drop-in skills and MCP servers for OpenCode, Claude Code, and Codex. Ask your AI to find you a 60,000-mile business class flight to Tokyo.
Airline alliance membership (Star Alliance, oneworld, SkyTeam) and cross-alliance booking relationships. Maps which loyalty…
Check American Airlines AAdvantage balance, elite status, and loyalty points via Patchright. Handles email 2FA with 6-box code…
Search Amex travel portal for cash prices, MR points pricing, IAP discounts, and FHR/THC hotel benefits via Patchright. Use when…
Search Atlas Obscura for weird, wonderful, and hidden gem places near any destination. Find the interesting stuff, not boring…
Find the cheapest award dates for a route over a date range. Searches seats.aero across all programs, groups by date, and shows a…
Per-program rules for placing award flights on hold before transferring points. Covers programs with holds (AA, Lufthansa, Flying…