Airbnb Listing Detail
Fetches complete Airbnb listing details for a given numeric listing ID via the internal GraphQL API, returning title, room type, description, amenities, photos, coordinates, city, …
browser-act skill
@browseract-cli
What This Skill Does
Fetches complete Airbnb listing details for a given numeric listing ID via the internal GraphQL API, returning title, room type, description, amenities, photos, coordinates, city, house rules, highlights, ratings, review count, bedroom configuration, and property overview. No login or specific page navigation required.
Replaces manually browsing Airbnb listing pages or building custom scrapers by providing structured property data through a single API call.
When to Use It
- Retrieve full property details for an Airbnb listing ID mentioned by a user
- Extract amenities, house rules, and bedroom configuration for a specific Airbnb room
- Get listing coordinates and city for location-based analysis or mapping
- Fetch rating and review count to evaluate listing quality or popularity
- Collect photo URLs and description text for content aggregation or comparison
Install
$ openclaw skills install @browseract-cli/airbnb-listing-detailAirbnb — Listing Detail
Listing ID → full property detail via internal GraphQL API (no login required)
Language
All process output to user (progress updates, process notifications) follows the user's language.
Objective
Fetch comprehensive listing data for an Airbnb property using the internal StaysPdpSections GraphQL API.
Prerequisites
- Browser is open (any page). The API call is made via
fetch()in the browser context — no specific page navigation required. - No login required — the API endpoint is publicly accessible
Pre-execution Checks
1. Tool Readiness
If browser-act has been confirmed available in the current session → skip this step.
Invoke browser-act via Skill tool to load usage. If installation or configuration issues arise, follow its guidance to resolve then retry.
Capability Components
This Skill's operational boundary = what the user can manually do in their browser. It only reads data already displayed to the user on the page, never bypassing authentication or access controls. JS code is encapsulated in Python files under the
scripts/directory, invoked viaeval "$(python scripts/xxx.py {params})".$(...)is bash syntax; it is recommended to use the bash tool for execution.
API: fetch listing detail
eval "$(python scripts/listing-detail.py '{listing_id}')"
Parameters:
listing_id: numeric Airbnb listing ID (e.g.,5476930). Extract from listing URL:airbnb.com/rooms/{listing_id}--checkin: check-in date in YYYY-MM-DD format, default: none (price info unavailable without dates)--checkout: check-out date in YYYY-MM-DD format, default: none--adults: number of adult guests, default:1--locale: response locale, default:en--currency: price currency code, default:USD
Output example:
{
"id": "5476930",
"url": "https://www.airbnb.com/rooms/5476930",
"title": "Bright Studio in Notting Hill",
"room_type": "ENTIRE_HOME",
"description": "<p>Welcome to this charming studio...</p>",
"photos": ["https://a0.muscache.com/im/pictures/...jpeg"],
"lat": 51.5101,
"lng": -0.1949,
"city": "London, England, United Kingdom",
"amenities": [
{"name": "Kitchen", "available": true},
{"name": "Wifi", "available": true}
],
"house_rules": ["Check-in after 3:00 PM", "Checkout before 11:00 AM", "1 guest maximum"],
"highlights": [
{"title": "Self check-in", "subtitle": "Check yourself in with the keypad."}
],
"rating_overall": 4.85,
"review_count": 142,
"ratings": [
{"category": "CLEANLINESS", "value": "4.9"},
{"category": "LOCATION", "value": "4.8"}
],
"bedrooms": [
{"title": "Bedroom 1", "subtitle": "1 king bed"}
]
}
Error handling: If error: true is returned with HTTP 4xx, verify the listing ID is valid by visiting https://www.airbnb.com/rooms/{listing_id} in the browser. If No data in response is returned, the listing may have been removed or the API schema may have changed — check the raw field for details.
Pagination
Not applicable — each call returns complete detail for one listing.
Success Criteria
title is not null AND amenities.length >= 1 AND photos.length >= 1
Known Limitations
rating_overallandreview_countare null for new listings with no reviewsbedroomsarray may be empty for studio or hotel-style rooms- Host personal details (bio, profile photo, response rate) are not available from this endpoint — they return as deferred sentinel sections
- Price per night is not included in the response without
--checkinand--checkoutdates - Calling this endpoint too rapidly may trigger rate limiting; add 1-2 second delays between batch requests
Execution Efficiency
- Batch orchestration: Write a bash script to loop through listing IDs serially with a 1-second delay between calls
- Test before batch execution: After writing a batch script, test with 1-2 listing IDs to verify output before running full batch
- Error resumption: Save results per listing ID; resume from the breakpoint on failure
Experience Notes
Path: {working-directory}/browser-act-skill-forge-memories/airbnb-scraper-airbnb-listing-detail.memory.md
Before execution: If the file exists, read it first — it records unexpected situations encountered during past executions (e.g., a strategy has become ineffective); adjust strategy order accordingly.
After execution: If an unexpected situation is encountered (strategy became ineffective, page redesigned, anti-scraping upgraded, better path discovered), append a line:
{YYYY-MM-DD}: {what happened} → {conclusion}
Normal execution does not write to the file. Do not record what listing IDs were fetched or how many results were returned — those are task outputs, not experience.
Top skills in this category
Screenshot
@ivangdavilaCapture, inspect, and compare screenshots of screens, windows, regions, web pages, simulators, and CI runs with the right tool, wait strategy, viewport, and...
Translate
@ivangdavilaTranslates and localizes text, software strings, documents, subtitles, and marketing copy between any language pair. Use when translating anything, when fixing a translation that reads machine-made, or when localizing a product: ICU plurals and gender, placeholders that must survive, string catalogs (JSON, XLIFF, .po, .strings, .xcstrings, ARB, RESX, YAML), locale codes and fallback chains, RTL and bidi breakage, CJK typography, mojibake, text expansion that overflows the UI, subtitle timing and reading speed, hreflang and multilingual SEO, glossaries, translation memory and fuzzy matches, and post-editing machine output. Use when choosing register (tu/vous, tú/usted, du/Sie, keigo), between es-ES and es-419 or zh-Hans and zh-Hant, or when a certified, legal, or medical translation carries liability. Not for writing original copy natively in one language (spanish, french, german, japanese, chinese) or generating captions from audio (video-captions).
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
Elite Longterm Memory
@nextfrontierbuildsUltimate AI agent memory system for Cursor, Claude, ChatGPT & Copilot. WAL protocol + vector search + git-notes + cloud backup. Never lose context again. Vibe-coding ready.