Airbnb Listings Scraper | Prices, Ratings, Map Coordinates avatar

Airbnb Listings Scraper | Prices, Ratings, Map Coordinates

Pricing

from $2.10 / 1,000 listings

Go to Apify Store
Airbnb Listings Scraper | Prices, Ratings, Map Coordinates

Airbnb Listings Scraper | Prices, Ratings, Map Coordinates

Scrape Airbnb search results for any city or region: listing name, type, nightly and total price for your dates, rating, reviews, bedrooms, beds, baths, coordinates, badges and photos. Goes past Airbnb's 270-result limit by splitting the search into price ranges. No host personal data.

Pricing

from $2.10 / 1,000 listings

Rating

0.0

(0)

Developer

Akatra

Akatra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Share

Airbnb Listings Scraper: prices, ratings and coordinates for any location

Collect Airbnb listings for any city, neighbourhood or region. For each listing you get the name and type, the nightly and total price for your dates, any discount, rating and review count, bedrooms, beds and baths, map coordinates, badges such as Superhost and Guest favorite, and photos.

Airbnb shows about 270 listings per search. Ask for more and the scraper splits the search into price ranges and merges the results, so you can cover a whole market.

Pay per result · No login, no API key · Public data only · Tested daily · LLM-ready JSON for AI agents (MCP)

🛠️ What does Airbnb Listings Scraper do?

  • 🗺️ Whole markets, not just one results page. Airbnb shows about 270 listings per search; the scraper splits the search into price ranges and merges the results.
  • 💵 Nightly and total price for your dates, including discounts.
  • 📍 Map coordinates, rating and review count, bedrooms, beds and baths, badges and photos for every listing.
  • 🛡️ Built to get through blocking. Requests go out with a real browser fingerprint through rotating proxies, and a blocked request is retried from a fresh IP. A result that could not be completed is never charged.

What people use it for

  • Short-term rental market research. Compare prices, ratings and supply across neighbourhoods and cities.
  • Pricing your own listing. See what similar places charge for your dates.
  • Investment analysis. Map listings and prices before buying a property.
  • Travel products and dashboards. Feed fresh listing data into your own app, sheet or BI tool.
  • Tracking prices over time. Run it on a schedule for the same dates and watch the market move.

📊 What data can you extract?

Every result is one JSON object (one row in CSV or Excel) with these fields:

FieldMeaning
listingId, urlAirbnb's ID for the listing and a link to it with your dates
name, titleThe listing's name and Airbnb's short title ("Apartment in Santa Maria Maior")
latitude, longitudeMap position as Airbnb shows it in search results (approximate)
bedrooms, beds, bathsRoom counts. A studio has 0 bedrooms
rating, reviewCount, isNewAverage guest rating and number of reviews. New listings have no rating yet
badgesAirbnb's badges, such as "Superhost" and "Guest favorite"
priceTotal, priceOriginal, nights, pricePerNight, priceText, currencyPrice for the stay as shown in search, the price before discount when there is one, and the price per night
checkIn, checkOutThe dates the price is for: your dates, or the sample dates Airbnb chose when you gave none
propertyType, areaFilled when Airbnb's title has the form "Apartment in Alfama"; hotels and branded places use their own name as title
imagesUp to 10 photo links
searchLocation, resolvedLocationThe location you entered and the place Airbnb matched it to

🚀 How to use Airbnb Listings Scraper

  1. Create a free Apify account and open this Actor.
  2. Add one or more locations, written the way you would type them into Airbnb's search box: Lisbon, Portugal, Brooklyn, NY.
  3. Set check-in and check-out to get the exact price for your stay. Leave them empty for a general scan.
  4. Set guests and, if you like, the type of place, minimum bedrooms and a price range.
  5. Choose the currency and how many listings you want per location.
  6. Run it and download the results as JSON, CSV or Excel, or connect them through the API.

📥 Input example (JSON)

{
"locations": ["Lisbon, Portugal", "Porto, Portugal"],
"checkIn": "2026-11-10",
"checkOut": "2026-11-13",
"adults": 2,
"roomType": "entire",
"minBedrooms": 1,
"currency": "EUR",
"maxItemsPerLocation": 500
}

📤 Sample output (JSON)

Sample output table of Airbnb Listings Scraper

{
"listingId": "52911113",
"url": "https://www.airbnb.com/rooms/52911113?check_in=2026-11-10&check_out=2026-11-13&adults=2",
"name": "Alfama Renovated Studio with River View",
"title": "Apartment in Santa Maria Maior",
"propertyType": "Apartment",
"area": "Santa Maria Maior",
"latitude": 38.713,
"longitude": -9.1255,
"bedrooms": 1,
"beds": 1,
"baths": 1,
"rating": 4.55,
"reviewCount": 179,
"isNew": false,
"badges": ["Superhost"],
"priceTotal": 274,
"priceOriginal": 367,
"nights": 3,
"pricePerNight": 91.33,
"priceText": "$274 for 3 nights, originally $367",
"currency": "USD",
"checkIn": "2026-11-10",
"checkOut": "2026-11-13",
"adults": 2,
"images": ["https://a0.muscache.com/im/pictures/miso/Hosting-52911113/original/539662b5.jpeg"],
"searchLocation": "Lisbon, Portugal",
"resolvedLocation": "Lisbon, Portugal",
"scrapedAt": "2026-10-02T00:49:26+00:00"
}

🤖 Use it with AI agents, MCP and the API

The output is clean JSON with stable field names, ready for LLM pipelines, RAG and agent tools without extra parsing.

  • AI agents and MCP (Claude, ChatGPT, Cursor and others). Add the Apify MCP server with this Actor as a tool: https://mcp.apify.com?tools=akatra/airbnb-listings-scraper. The agent can then run it and read the results by itself.
  • API. Start a run and get the results in a single call:
curl -X POST "https://api.apify.com/v2/acts/akatra~airbnb-listings-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locations": ["Lisbon, Portugal", "Porto, Portugal"], "checkIn": "2026-11-10", "checkOut": "2026-11-13", "adults": 2, "roomType": "entire", "minBedrooms": 1, "currency": "EUR", "maxItemsPerLocation": 500}'
  • No-code tools and SDKs. Works with Make, n8n, Zapier and LangChain through Apify's integrations, and with the Apify clients for Python and JavaScript. Schedule it and send the results to a webhook, Google Sheets or your own database.

💰 Pricing: pay per result

You pay per listing, nothing for empty runs beyond a tiny start fee. See the price on the Pricing tab. There is no subscription or rental fee. New to Apify? The free plan includes $5 of platform credit every month, enough for about 1,600 listings with this Actor, and no credit card is needed.

🚦 Run status and error messages

Every run ends with a plain status message, so automated workflows (API, Make, n8n, AI agents) can tell what happened without reading the log:

SituationWhat you get
Finished normallySaved N listings.
Nothing matchedThe run succeeds with No listings saved. Check the location name, or widen the dates and filters. You pay only the start fee.
Airbnb does not recognize a locationAirbnb did not recognize N location(s): … Nothing is charged for that location.
A price range holds more listings than Airbnb showsN price range(s) hold more listings than Airbnb shows; narrow the area or the price range to reach the rest.
Missing or unsupported inputThe run fails at once and the log names the field to fix. Nothing is scraped.
The site kept blocking some pagesSome pages stayed blocked, so the results are incomplete; run again to get the rest.
Your maximum charge is reachedStops cleanly with Stopped at your maximum charge limit. Everything saved so far stays in the dataset.

ℹ️ Good to know

  • Prices are the ones shown in Airbnb's search results. With dates they are the total for your stay. Without dates Airbnb picks sample dates for each listing; checkIn, checkOut and nights then tell you which dates the price is for.
  • A location Airbnb does not recognize returns nothing and costs nothing; the run log tells you which one. If a name with accents is not recognized, the scraper also tries it without accents ("Kadıköy" as "Kadikoy").
  • One search shows about 270 listings. Above that the scraper uses the prices it has seen to split the search into price ranges, and splits a range again when it is still full. If a range still holds more listings than Airbnb shows, the run log and status message say so; narrow the area or the price range to reach the rest.
  • A listing is delivered once per run, even when it appears for several of your locations. If you set a maximum charge for a run, the scraper stops as soon as that limit is reached.
  • The scraper reads search results only. It does not collect host names, host profiles or guest reviews.

📝 Changelog

  • 2026-10-02 Searches without dates now say which sample dates and how many nights the price belongs to. README restructured: data table, API and MCP examples, run status messages.
  • 2026-10-02 Full price ranges are split again and the part that cannot be reached is reported, after an independent audit.
  • 2026-10-02 First release: listings with prices, ratings and coordinates; price-range splitting beyond 270 listings.

This scraper is an independent tool and is not affiliated with, endorsed by, or sponsored by Airbnb. "Airbnb" is a trademark of its owner and is used here only to show which website the tool works with. It reads only pages that are public without logging in. Use the data in line with the laws that apply to you and the source site's terms.

The source site's name and logo are trademarks of their owner and appear here only to identify the website this tool works with. The Actor reads only pages that are public without logging in. How you store and use the data is your responsibility: follow the laws that apply to you, such as GDPR and CCPA.

🔗 More scrapers from Akatra

💬 Support

Found a bug or need a field that is missing? Open an issue on the Issues tab and we usually reply within a day.