Airbnb Scraper API & MCP for AI Agents | FetchLayer
Unofficial Third-party API
5 endpoints live

Airbnb data.
Without guessing what you missed.

Reviews, ratings, dates & host replies Full price breakdown Hosts & category ratings 12 months of availability MCP ready

Listings, structured prices, guest reviews and a night-by-night availability calendar as clean JSON via REST or MCP — with every review response saying how many of the listing's total it actually returned.

Free tier included No credit card No scraper maintenance

Trusted by developers shipping real products.

246,870 served today

POST /airbnb/listing-reviews
200 OK

Request

$ curl -X POST \
  https://api.fetchlayer.dev/airbnb/listing-reviews \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"listing":"1695539435866678513","limit":10}'

Response

{
  "totalReviewCount": 52, "reviewCount": 10,
  "hasMore": true,
  "notes": ["These are 10 of the 52 reviews
    the source reports for this listing.", …],
  "reviews": [{
    "rating": 4, "language": "en",
    "text": "The hotel room was lovely and…",
    "createdAt": "2026-09-03T08:21:19Z",
    "hostResponse": null
  }], "pagesFetched": 1
}

Used by developers at

Individual developers or teams — not official partnerships

Built for feedback workflows

Fetch the public signal. Use it wherever your team works.

Guest reviews with ratings, dates, languages and host replies

Every review a listing has published: the score the guest gave, what they wrote, when, the language they wrote it in, their public first name and photo, and the host's reply where there is one. One Lisbon listing returned 465 reviews across ten languages. Ask for all of them or the most recent ten.

Full price breakdown — total, per night, taxes and fees, in one call

Not a display string to unpick. The stay total, the per-night figure, how many nights it covers, taxes and fees broken out separately, and the pre-discount total where the host is running one — $940.47 against $1,083.09 on one measured stay. Every figure arrives as a number in its own currency, ready to sum and compare.

Availability for the next twelve months, in one call

Which nights a listing is open and which are taken, out to a year ahead, with the shortest and longest stay the host will take for each. One call, one credit, whether you ask for one month or twelve — enough to spot a gap, track how fast a property fills, or find a week that suits.

Ratings split six ways, and what reviewers keep mentioning

A listing's score broken into accuracy, cleanliness, check-in, location, communication and value — so a 4.9 that is weak on cleanliness does not look like a 4.9 that is weak on value. Alongside it, a tally of the subjects reviewers actually raised, which characterises 465 reviews without reading them.

Reviews in the words the guest actually used

The original text, in the language it was written, with the language marked — plus the published translation where Airbnb itself offers one. Across 100 reviews on one Lisbon listing, 86 were English and the rest spanned nine other languages. Nothing is machine-translated over what the guest wrote.

Price the dates you care about, or the ones the market is quoting

Name a check-in and check-out and every result is priced for exactly that stay, for the guests you specify. Give no dates and a search still comes back priced — for the window Airbnb itself is quoting, named in the response, so a like-for-like comparison across a city is one request.

The host, not just the property

Name, photo, Superhost and verified status, their rating and how many reviews it rests on, years and months hosting, response rate and response time — so a listing can be ranked by who is running it, not only by what it looks like.

FetchLayer Research Chat

Ask what guests actually say—then export it.

Prefer not to write code? Describe the listing or the city in FetchLayer Research Chat and get a table back, with any rating built on a sample of the reviews marked as such rather than presented as the listing's score.

  • Ask questions in plain English
  • Analyze themes, sentiment, and pain points
  • Download the structured results as CSV or JSON
Read Airbnb reviews in Chat

No code or setup required · Uses your FetchLayer credits

Airbnb research

Pull the guest reviews for this Lisbon listing and tell me what people complain about most, with the rating and date for each review. Say whether you read all of them.

Y

All 52 reviews, not a sample — the response reports 52 of 52. Average 4.6. The recurring complaint is the pool being smaller than the photos suggest (7 reviews); cleanliness and staff are praised in 14 each. Two reviews have host replies, and six are not in English, so I read the originals rather than a translation.

airbnb-reviews.csv

52 reviews · 10 columns · ready to download

CSV

From raw feedback to action

One request is the start of the workflow.

Store the structured response, run it on a schedule, pass it to an LLM, or feed it into the system your team already uses. FetchLayer handles retrieval so you can focus on the outcome.

  1. 01

    Find the listings

    Send a place name. Each result comes back with a structured price, a rating, its badges, coordinates and photos — and, if you gave no dates, the stay window the prices are for.

  2. 02

    Read the reviews, and check the count

    Send a listing id for its guest reviews. Compare reviewCount to totalReviewCount: equal means you have all of them, lower means you are holding a slice and nextCursor gets the rest.

  3. 03

    Go deep on the ones that matter

    Pull one listing in full for its amenities, photos, per-category ratings and host profile. Add check-in and check-out to price a specific stay; leave them off and price comes back null by design.

  4. 04

    See when it is free

    Send the listing id and get its availability out to a year ahead in one call — which nights are open, which are taken, and the shortest and longest stay the host will take for each. Enough to find a gap, or to watch how fast a property fills.

MCP & agents

Live

Your AI already knows how to use this.

Use the Airbnb endpoint directly from your MCP-compatible agent. Ask it to retrieve public feedback, identify patterns, and turn the result into a useful brief without writing integration glue.

1
Pick your editor
2
Agent discovers 5 tools
3
Query any platform instantly
connect your agent ~30s

Pick your editor and we hand you the config with your key already in it — no JSON to hand-edit, no wrapper code.

Get your free API key

Free tier · no credit card · any MCP host

New chat fetchlayer connected

Is this Lisbon listing as good as its rating suggests?

Used fetchlayer.airbnb_listing_reviews

All 52 reviews, not a sample — the response reports 52 of 52, so this average is the real one. It rates 4.6, a little under the 4.79 headline. The recurring complaint is the pool being smaller than the photos suggest (7 reviews). Six reviews are not in English, and I read the originals rather than a translation.

Ask a follow-up…

Works with every MCP-compatible tool

Cursor
Claude
VS Code
Windsurf
Cline
Hermes
OpenClaw
Kiro
No wrapper code
All 5 endpoints exposed as tools
Official & maintained
Free to install

Use cases

What teams build on short-let supply and guest sentiment.

Listings, prices and reviews as rows you can sum. Here is what that is for.

01

Guest sentiment analysis

Pull a listing’s reviews and know whether your figure is built on all of them or the first page — the response says which. An average over a sample presented as a rating is the mistake this prevents.

researchreportinghospitality
02

Short-let price benchmarking

Prices arrive as objects with total, per-night, nights and taxes broken out, so a city’s supply sums into a real distribution instead of a pile of "$1,245" to regex.

pricingdatasetsresearch
03

Competitive set tracking

Run the same search on a schedule and watch what comparable listings charge, how their ratings move, and which ones pick up a Guest favorite badge.

trendscronpricing
04

Multilingual review mining

Reviews keep the language the guest wrote them in, with a language code beside each one and only the source’s own translations attached. What an Italian guest actually said is not rewritten before you read it.

airesearchnlp
05

Property and host due diligence

One call returns the amenities, the photos, the rating split by accuracy, cleanliness, check-in, location, communication and value, and who is running the listing — Superhost status, years hosting, response rate.

diligenceinvestingops
06

Travel products and market maps

Coordinates, badges and structured prices on every row, so a neighbourhood map or a "where is it cheap in November" product is rows you can join rather than pages you have to read.

productsdatasetstravel

Compare approaches

Spend time on the insight, not the collection layer.

What you needFetchLayerOfficial APIBuild it yourself
Reviews say how complete they aren/aYou would not know
Prices returned as numbersn/aYou parse the string
Original review language keptn/aYour problem
Night-by-night availability calendarn/aYou probe dates one at a time
No Airbnb account requiredn/aYou keep one warm
Ready for AI and MCP workflowsn/aYour integration

FetchLayer provides access to publicly available data. It is not affiliated with, endorsed by, or sponsored by the platform.

Pricing

Start free. Scale when ready.

Pay per request with no commitment, or lock in a flat monthly rate with built-in savings.

Free plan — 30 requests

Verify responses, inspect the API, no credit card required.

Try free

Pay as you go

$1.99

per 1,000 requests

$0.00199 per request · credits never expire

How credits work — no multipliers

One credit = one API call, on every endpoint and platform. No matter how many results come back, you pay for the call, not the output size. Most scraping APIs charge multipliers of 5x, 25x, even 75x per call depending on the target — here it's always 1.

  • No multipliers — 1 request = 1 credit
  • No monthly commitment
  • Credits never expire
  • Same API & MCP access as subscribers
  • ∞ req/min, ∞ API keys
Get API key

Expiry

Credits stay until you use them. No monthly reset, no pressure to hit a quota.

0

Commitments

No subscription, no contract, no minimums. Start, pause, or scale whenever.

100%

Access

Every endpoint and MCP included. Not a limited tier — same data as any subscriber.

API reference

Every parameter, documented.

All requests are POST with a JSON body and Bearer auth header.

POST /airbnb/listing-reviews

Guest reviews for one listing, in the language they were written in, with host replies and the source's own topic tally. Every response reports the listing's full review count next to how many came back, so a partial page is never mistaken for a complete one.

listing* string A listing URL or its numeric id.
limit number Reviews in total, up to 1000. -1 for the maximum.
pages number Pages to walk, up to 20, 1 credit each. -1 for the maximum.
cursor string Continue from a previous response's nextCursor.
POST /airbnb/search-listings

Listings for a place, each with a structured price, rating, badges, coordinates and photos. Always prices — with no dates it uses the source's own default stay window and reports that window back on the response.

location* string A place name, e.g. "Lisbon, Portugal".
checkIn / checkOut string YYYY-MM-DD, given together. Optional.
adults / children / infants / pets number Guest counts, each up to 50.
pages / cursor string Up to 15 pages of 18 listings, 1 credit per page.
POST /airbnb/listing-detail

One listing in full: description, property and room type, capacity, amenities, photos, the rating broken down by category, and the host's public profile. With no dates, price is null by design and a note says so.

listing* string A listing URL or its numeric id.
checkIn / checkOut string Given together, to price that stay.
adults number Guests to price the stay for.
POST /airbnb/listing-availability

One listing's calendar, night by night: open, closed, whether a stay can start or end on it, and the minimum and maximum stay length the host enforces for that night. Up to twelve months per call. No per-night pricing — listing detail with dates prices a stay.

listing* string A listing URL or its numeric id.
from string Any date inside the first month you want, YYYY-MM-DD. Defaults to the current month.
months number Months of calendar, up to 12. -1 for the maximum. Defaults to 3.
POST /airbnb/resolve-url

Sort a pile of pasted Airbnb links into listings and searches, and get the listing id with a canonical URL stripped of tracking and date parameters. Free — it reports pagesFetched: 0.

url* string Any Airbnb listing or search link.

Fields marked * are required. Full API reference →

FAQ

Common questions.

What is the Airbnb API?

A REST endpoint and MCP tool that returns public Airbnb data as structured JSON. You send a place name or a listing link with a Bearer token; you get back listings with structured prices, one listing in full with its host and per-category ratings, a listing's guest reviews, or its availability calendar night by night. No Airbnb account, no HTML to parse.

Do I need an Airbnb account?

No. Everything returned is what Airbnb publishes publicly — the same listings, prices and reviews anyone can read without signing in. There is no login, no OAuth, and nothing to keep warm.

How do I know whether I got all the reviews?

The response tells you. Every reviews response carries totalReviewCount — the listing's full review count as the source reports it — next to reviewCount, which is how many came back, plus hasMore and a note in plain words: "These are 10 of the 52 reviews the source reports for this listing." Pull the whole set and the same note reads "These are 52 of the 52 reviews". You never have to make a second call to find out which one you are holding, and an average over a sample is never mistaken for an average over everything.

Are reviews translated?

Not by us. Each review's text is what the guest actually wrote, with a language code beside it, and translatedText carries the source's own translation only where one is published. The original is never replaced. Across 100 reviews measured on one Lisbon listing, 86 were English and the rest spanned nine other languages; 14 carried a published translation and 2 carried a host reply.

Are the prices usable as numbers?

Yes. price is a structured object, not a display string: {total, perNight, nights, taxesAndFees, originalTotal, qualifier, note}, where each money value is {amount, currency, formatted}. A measured example returned a total of $940.47 against an originalTotal of $1,083.09 over 4 nights, with $36.70 of taxes and fees broken out rather than folded in. An originalTotal above total means a discount is applied; null means there is none to report.

Do I have to pass dates?

No, and the two routes deliberately behave differently without them. Search always prices — it uses the source's own default stay window and reports that window straight back on the response, so a price is never silently for dates you did not ask about. Listing detail does the opposite: with no dates it returns price: null and a note saying to pass check-in and check-out to price a stay. A search has to price to be a search; a single-listing read will not invent a stay you did not ask about.

Can I get an availability calendar?

Yes. /airbnb/listing-availability returns the calendar night by night: every night in the range with available, bookable, availableForCheckin, availableForCheckout, and the minimum and maximum stay length the host enforces for a stay starting on that night. Up to twelve months in a single call — the source's own ceiling per request — and one credit whether you ask for one month or twelve. There is no per-night pricing on it; use listing detail with check-in and check-out for a priced stay.

Why does the calendar show months of closed nights at the end?

Because that is usually the edge of the host's booking window, not a fully booked listing. Every availability response carries the note verbatim: "Dates beyond the host's own booking window come back marked unavailable rather than omitted — a long unbroken run of closed nights near the end of this window usually means the window, not a closure." The source answers every night you ask for, so a host who has opened four months still returns months five through twelve when you ask for twelve, marked unavailable and indistinguishable from a booked night. A solid block running all the way to the last night you asked for is the window. Scattered closed nights in the middle of an open range are real closures.

How do I tell where a booking ends?

A closed night that still allows checkout is the far end of a booked stay. available: false with availableForCheckout: true and availableForCheckin: false means you cannot start a stay on that night, but a stay could end on it — it is somebody else's last night. Walk the nights and every place availableForCheckout flips true inside a closed run marks a departure. A 365-night pull on one measured listing had 19 of them.

What happens if I send a listing id that does not exist?

A 404 with a message: {"error":"no listing was found for id \"1\""}. Not a 503 and not an empty 200 — a wrong id is a wrong request, so there is nothing to retry and nothing to mistake for a listing with no data.

How fast is it?

Measured against production on 17 September 2026, three runs each: a one-page search of Lisbon answered in 1.6 to 1.9 seconds with 18 listings, one listing in full in 0.96 to 1.19 seconds, ten reviews in 0.53 to 0.58 seconds, three months of availability in 0.36 seconds with 91 nights, and resolving a link in about a tenth of a second.

How is it billed?

One credit per page, reported on every response as pagesFetched. A search page is up to 18 listings and costs the same whether it comes back full or half empty. A review walk stops early once your limit is reached — asking for every page with a limit of 25 billed one page, not twenty. A full year of availability is a single page, the same one credit as the three-month default. Reading an Airbnb link is free and reports pagesFetched: 0.

Can my AI agent use it?

Yes. All five routes are MCP tools on the same FetchLayer MCP server: airbnb_listing_reviews, airbnb_search_listings, airbnb_listing_detail, airbnb_listing_availability and airbnb_resolve_url. Tool calls use the same key and are billed exactly like REST, and the agent sees totalReviewCount alongside the reviews, so it can tell you when a rating is based on a sample instead of presenting it as the listing's score.

Start pulling Listings, prices, reviews & availability today.

Get a free API key, make your first request, and put public feedback to work in your own product or research workflow.