ssh.autos

Catalog / Travel

TRAVEL

Airbnb: Listings, Prices & Availability

Airbnb scraper for any city and dates: nightly price, stay total, discounts, the fees and taxes Airbnb states, rating, reviews, beds, baths, photos, coordinates and URL.

PER CALL · X402 / MPP From $0.02 per call 1 endpoint at api.ssh.autos. Pay in USDC, no account. See the endpoint
APIFY STORE Public actor Run it with your Apify account: bulk runs, schedules and exports. Open on Apify

About this data

Airbnb scraper for any city and dates: nightly price, stay total, discounts, the fees and taxes Airbnb states, rating, reviews, beds, baths, photos, coordinates and URL.

From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.

Buy per call over x402

One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.

POST /v1/airbnb/stays

Up to three lodging cards from one location's first search page: listing ID/link, name, room type, location, source-stated nightly/stay price, source stay dates, fees, aggregate rating/count, coordinates and photos.

PRICE$0.02 per call, in USDC
RESULTUp to 3 per call
PAYMENTx402 or MPP · no account

Optional dates support stays up to 14 nights; without dates, inspect each row's source-selected stay.

Location matching and row price normalization use the actor core.

Host profiles, contacts and detail expansion are excluded.

Input

Send a JSON body to POST https://api.ssh.autos/v1/airbnb/stays.

FieldTypeRequiredNotes
locationstringrequired2–120 characters
checkInstringoptionalpattern ^\d{4}-\d{2}-\d{2}$
checkOutstringoptionalpattern ^\d{4}-\d{2}-\d{2}$
adultsintegeroptional1–4; default 2
currencystringoptionalpattern ^[A-Z]{3}$; default "USD"
maxResultsintegeroptional1–3; default 3

Returned fields

The answer is JSON: records, a list of up to 3, and summary, the run status and counts. Each record has these 37 fields; a field the source does not publish comes back null.

37 fields per record
FieldTypeNotes
listingIdstringAirbnb listing id (stable, numeric).
urlstringPublic listing URL.
bookingUrlstringListing URL with this row's check-in, check-out and adult count set, so it opens priced for the reported stay.
namestringListing name shown on the search result.
roomTypestringRoom/place type, e.g. Apartment, Home, Room, Guest suite, Hotel.
locationstringNeighbourhood/area shown with the listing.
taglinestringShort secondary title from the search result.
propertyTypestringStructured property type from the listing page (full-detail mode).
spaceTypestringStructured space type from the listing page (full-detail mode).
pricePerNightnumberEffective nightly price in the returned currency: the discounted rate after any Airbnb discount, never the pre-discount rate. Null on a discounted listing when the stay length or the discount amount…
pricePerNightEffectivenumberTotal price divided by the reported stay nights, rounded to 2 decimals. Lets a 28-night and a 31-night (or monthly) total be compared on the same nightly basis; for multi-month windows the total is t…
originalPricePerNightnumberPre-discount nightly rate stated in Airbnb's nightly price explanation when Airbnb states a discount; null when there is no discount. The headline original total is not used because it can include ta…
discountAmountnumberDiscount amount Airbnb states (positive): a discount explanation line or the headline original/discounted price pair; null when Airbnb states no discount. A negative fee or tax credit (for example a…
totalPricenumberDisplayed total for the stay (or the headline price when no dates were given). For a stay longer than one month that Airbnb prices per month (28+ nights), this is pricePerMonth times the months in th…
pricePerMonthnumberAirbnb's displayed average monthly price, after discounts, when Airbnb prices the stay per month (stays of 28+ nights, including monthly and month-long flexible searches); null otherwise. For a windo…
stayCheckInstringCheck-in date (YYYY-MM-DD) this row is priced for: the listing's own window in a flexible-date or monthly search, otherwise the requested check-in.
stayCheckOutstringCheck-out date (YYYY-MM-DD) this row is priced for.
stayNightsintegerNumber of nights between stayCheckIn and stayCheckOut.
currencystringISO currency code for the price fields.
feeBreakdownarray of objectsItemized fees and taxes shown with the price, each with a label and amount.
ratingnumberAverage guest rating (0-5).
reviewCountintegerNumber of guest reviews.
bedroomsintegerNumber of bedrooms.
bedsintegerNumber of beds.
bathroomsnumberNumber of bathrooms (halves preserved).
maxGuestsintegerMaximum guests allowed (full-detail mode).
latitudenumberListing latitude.
longitudenumberListing longitude.
imagesarray of stringsListing photo URLs.
amenitiesarray of stringsAvailable amenities (full-detail mode).
houseRulesarray of objectsHouse rules (full-detail mode), each with its group, type, rule text and optional detail.
resolvedLocationstringPlace Airbnb resolved for this search query.
locationVerifiedbooleanTrue when results were scoped to the resolved place boundary.
querystringThe place/search this listing was found under.
modestringsearch or full.
sourcestringAlways 'airbnb'.
scrapedAtstringUTC ISO-8601 collection timestamp.

Example call

TERMINAL · $0.02 PER RUN
npx agentcash@latest fetch https://api.ssh.autos/v1/airbnb/stays -m POST -b '{"location": "Lisbon, Portugal", "maxResults": 2}'

The example values come from the API spec or the actor’s own sample input. Running it is a paid call.

What is and isn’t charged

Free

  • Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
  • Invalid input and source failures are not charged.

Prefer a subscription? Run it on Apify

This data source is a public actor on the Apify Store: Airbnb Scraper: Listings, Prices & Availability. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.

Open on Apify

How x402 payment works

  1. Your client sends the request. The API answers 402 Payment Required with the price and where to pay.
  2. The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
  3. The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.

The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.

Machine-readable: openapi.json · llms.txt

Some links to Apify are affiliate links. We may earn a commission if you sign up and become a paying customer.