Property & travel · Live on Apify

Airbnb Scraper: Listings, Prices and Calendars

Enter a city or an Airbnb link and get listings in a table. Each row has the nightly price, the total price and the rating. You can also read calendars and reviews. No login is needed.

About $2.70 for 1,000 results$0.0027 per result + $0 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

recordTypelisting
listingId1770178382370231943
urlhttps://www.airbnb.com/rooms/1770178382370231943

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: search in Mode. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Enter a city, an Airbnb search link or a room link, and get listings with nightly and total stay prices, discounts, ratings, calendars and reviews from Airbnb. You get a table for CSV, Excel or API use, plus an area price summary. You do not need a login or an API key. A run with 10 listings takes about 35 seconds and costs about $0.03.

  • Search listings: find listings by city, area, map box or Airbnb search link.
  • Listing details: get full data for room links you already have.
  • Calendar: get open days and minimum stay, one row per day. Daily prices are optional.
  • Reviews: get review text, rating, date and language, one row per review.
  • Track changes: compare a search with your last run and mark each listing as new, changed, unchanged, missing or removed.

Good for

  • You compare stay prices for the same dates in a city or area.
  • You check open days and minimum stay for a set of listings.
  • You read reviews to learn what guests like or dislike.
  • You track new listings and price changes on a schedule.

Who uses it

Travel and rental analysts

Compare stay prices for the same dates in a city or area.

Property owners

Check open days and minimum stay of nearby listings.

Guest feedback researchers

Read review text to see what guests like or dislike.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Listing$0.0027 (from $0.00189 on paid Apify plans)One delivered listing.
Search page$0.0016 (from $0.00112 on paid Apify plans)One public search page, including pages with no matches.
Additional listing URL$0.0002 (from $0.00014 on paid Apify plans)Each direct listing URL checked after the first URL in the same run.
Review page$0.0005 (from $0.00035 on paid Apify plans)One page of reviews, including pages excluded by a date filter.
Review$0.0027 (from $0.00189 on paid Apify plans)One delivered review without guest identity.
Calendar month$0.0018 (from $0.00126 on paid Apify plans)One requested month of calendar availability for a listing.
Calendar day$0.0027 (from $0.00189 on paid Apify plans)One delivered calendar date.
Daily price quote$0.0027 (from $0.00189 on paid Apify plans)One successful stay quote for an available calendar check-in date.
Listing check$0.0012 (from $0.00084 on paid Apify plans)One unchanged or missing listing check.
Input validation$0.0016 (from $0.00112 on paid Apify plans)One invalid input checked by the Actor. No data requests are made.
First listing URL$0.0018 (from $0.00126 on paid Apify plans)The first direct listing URL checked in a run, including its public detail and price sections.

Examples

  • One result: about $0.0027.
  • 1,000 results: about $2.70.
  • Every day 100 results, for 30 days: about $8.10 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 1,800 results.

Prices checked on 8 November 2026. See the current price on Apify.

Questions

Do I need an Airbnb account?

No. You do not need a login, cookies or an API key.

Can I get host emails or phone numbers?

No. The Actor has no contact or profile fields.

Is the total price the final price?

It is the price Airbnb shows for your dates and guests. Airbnb can change it at checkout.

Details

Step by step on Apify
  1. Open the Input tab and keep Mode on Search listings (box 1).
  2. Keep Pattaya in Location, or type your city (box 2).
  3. Keep Maximum listings at 10 (box 3).
  4. Click Start.
  5. When the run ends, open the Output tab (box 5).
  6. Check pricePerNight, totalPrice, currency, rating and reviewsCount (box 6).
Use cases
TaskInputYou getKey fieldsNext step
Compare prices in an areasearch, location, checkIn, checkOutListing rows, area summarypricePerNight, totalPrice, originalPrice, ratingCSV or Excel for price analysis
Compare one area on several datessearch, location, dateRangesOne row per listing and date range, summary per periodcheckIn, checkOut, totalPriceGoogle Sheets through API
Check open days for a listingcalendar, listingUrls, calendarMonthsDay rowsdate, available, minNights, pricePerNightYour pricing sheet
Learn from guest reviewsreviews, listingUrls, maxReviewsReview rowstext, rating, createdAt, languageA text analysis tool
Track an area over timemonitor, location, snapshotName, onlyChangesChanged listing rowschangeStatus, pricePerNight, fetchedAtApify Schedule with Slack or Notion summary
Tips for better results
  • Set check-in and check-out dates. Without dates, the Actor uses 3 nights, 30 days from today.
  • Turn off full listing details for a fast search. It is much quicker for large lists.
  • Use track changes mode on a schedule to see new and changed listings.
Limits and good to know
  • Prices: a price is a quote for your dates and guests at the time of the run. It is not a booking guarantee
  • Fees: cleaning, service and tax values stay empty when Airbnb does not show them. They were empty in all 341 listings we tested. Discounts appear in priceBreakdown and originalPrice when Airbnb shows them
  • Taxes: priceIncludesTaxes is often empty
  • Occupancy: unavailableShare is the share of closed days. A host can block days, so it does not prove bookings
  • Language: fast search and part of the listing text stay in English. Price breakdowns are in English
  • Time: speed changes from run to run. At the default timeout of 300 seconds, 100 full listings finished in about 4 minutes, and 1000-listing fast runs finished in 3.5 to 4.5 minutes. One run on an early build stopped at 931 rows after 286 seconds. With a timeout of 600 seconds, the same fast search finished 1000 rows in 3.5 to 4 minutes. A 240-listing run with full details took about 9 minutes, with a timeout of 900 seconds. Raise the timeout for runs above about 100 full listings or 900 fast listings
  • Size: 12 MiB per response, 512 MiB and 100000 requests per run. The Actor makes about 1 request per second and up to 3 attempts per request. A failed search page stops the run with the rows already saved. A listing that cannot be read is skipped without a charge for its row, and the run goes on; 3 failures in a row, or a block, stop the run
  • Tracking: run one monitor at a time per snapshotName. The saved history holds up to 512 KiB, and old entries are dropped first, so a listing can show as new again. A listing is missing_from_search only after a search with complete coverage, and removed only after its page returns 404 or 410

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "recordType": "listing",
  "listingId": "1770178382370231943",
  "url": "https://www.airbnb.com/rooms/1770178382370231943",
  "title": "Deluxe Room Edge Condo Pattaya Infinity Pool 31F",
  "roomType": "Entire home/apt",
  "propertyType": "Entire rental unit",
  "personCapacity": 2,
  "bedrooms": 1,
  "beds": 1,
  "bathrooms": 1,
  "pricePerNight": 59.24,
  "averageTotalPerNight": 59.24,
  "totalPrice": 177.73,
  "originalPrice": null,
  "priceLabel": "$178 for 3 nights",
  "priceIncludesTaxes": null,
  "fees": { "cleaning": null, "service": null, "taxes": null },
  "priceBreakdown": [{ "label": "3 nights x $59.24", "amount": 177.73 }],
  "currency": "USD",
  "checkIn": "2026-12-04",
  "checkOut": "2026-12-07",
  "rating": 5,
  "reviewsCount": 5,
  "lat": 12.9311,
  "lng": 100.8823,
  "hostIsSuperhost": false,
  "amenities": [
    {
      "group": "Bathroom",
      "title": "Hair dryer",
      "available": true,
      "description": null
    }
  ],
  "houseRules": [{ "title": "Up to 2 overnight guests", "description": null }],
  "categoryRatings": [{ "category": "cleanliness", "rating": 5 }],
  "cancellationPolicy": "Free cancellation for 24 hours. Cancel before November 27 for a partial refund. Review this host's full policy for details.",
  "calendar": null,
  "occupancy": null,
  "reviewSummary": null,
  "available": true,
  "changeStatus": null,
  "source": "Airbnb",
  "fetchedAt": "2026-11-04T03:19:56.515Z"
}

Use it from code

Actor ID: cliqtomedia/airbnb-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/airbnb-scraper").call(run_input={
    "mode": "search",
    "location": "Pattaya"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~airbnb-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "search", "location": "Pattaya"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/airbnb-scraper")
result = tool.invoke({"run_input": {"mode": "search", "location": "Pattaya"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldTypeMeaning
recordTypestringlisting, calendar, or review.
listingIdstringNumeric Airbnb listing ID.
urlstringPublic listing link.
titlestringListing title.
roomTypestringAirbnb room type.
propertyTypestringProperty type.
descriptionstringPublic listing description with direct contact strings removed.
personCapacitynumberMaximum guests.
bedroomsnumberNumber of bedrooms.
bedsnumberNumber of beds.
bathroomsnumberNumber of bathrooms.
pricePerNightnumberBase accommodation price per night from the source nights breakdown. Excludes separately shown fees and discounts; null if not shown.
totalPricenumberDisplayed total for the selected stay. May exclude taxes; see priceIncludesTaxes.
originalPricenumberDisplayed total before a discount, when present.
priceLabelstringOriginal displayed price explanation.
priceIncludesTaxesbooleanTrue only when the source explicitly identifies a tax-inclusive total. Null means not stated.
feesobject/array/stringCleaning, service and tax amounts if separately shown; unknown amounts are null.
priceBreakdownobject/array/stringSource price labels and numeric amounts, including discounts.
currencystringRequested currency code.
checkInstringCheck-in date for this quote.
checkOutstringCheck-out date for this quote.
ratingnumberOverall rating.
reviewsCountnumberPublished review count.
latnumberPublic listing latitude; may be approximate.
lngnumberPublic listing longitude; may be approximate.
hostIsSuperhostbooleanPublic Superhost status.
photosobject/array/stringPublic listing photo URLs.
amenitiesobject/array/stringAmenities with group, title, availability and description.
houseRulesobject/array/stringPublic house rules with direct contact strings removed.
categoryRatingsobject/array/stringRatings for cleanliness, accuracy, check-in, communication, location and value.
ratingDistributionobject/array/stringShare of reviews at each star rating.
cancellationPolicystringDisplayed cancellation policy text.
calendarobject/array/stringCalendar dates and availability when requested.
occupancyobject/array/stringUnavailable-days estimate. Closed days do not prove bookings.
reviewSummaryobject/array/stringCollected review count and repeated words; not a sentiment score.
availablebooleanWhether the selected stay is available.
changeStatusstringnew, changed, unchanged, missing_from_search, reappeared or removed. Missing requires complete search coverage; removed requires a direct 404.
sourcestringData source.
fetchedAtstringCollection time in UTC.
statusstringnot_found for a direct 404; partial when requested extra data could not finish.
Input settings (25)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Modemodestring"search"
Locationlocationstring"Pattaya"
Maximum listingsmaxItemsinteger10
More locationslocationQueriesarray
Airbnb search or room linksstartUrlsarray
Listing linkslistingUrlsarray
Include full listing detailsincludeDetailsbooleantrue
Check-in datecheckInstring
Check-out datecheckOutstring
Multiple date rangesdateRangesarray
Adultsadultsinteger2
Childrenchildreninteger0
Infantsinfantsinteger0
Petspetsinteger0
Currencycurrencystring"USD"
Languagelocalestring"en"
Minimum nightly pricepriceMinnumber
Maximum nightly pricepriceMaxnumber
Minimum bedsminBedsinteger
Minimum bedroomsminBedroomsinteger
Minimum bathroomsminBathroomsnumber
Room typesroomTypesarray
Amenity IDsamenitiesarray
Instant Book onlyinstantBookboolean
Superhosts onlysuperhostboolean

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure