
Waze Traffic Scraper
scrape.ly/store/cornerledger/waze-scraperTravelAutomotive
1 monthly user

Scrape guest reviews from Airbnb listings: star rating, date, text, translation, host reply, language, and sort order. No login needed.
Get every guest review from any public Airbnb listing: star rating, date, full text, translation, host reply, reviewer country and language. Paste listing links, press start, and download clean JSON, CSV or Excel. No login, no cookies, no browser, and a full 500-review listing takes about ten seconds.
https://www.airbnb.com/rooms/12937.| Field | Description |
|---|---|
startUrls | Airbnb listing URLs (any Airbnb domain). Bare listing ids work too. Duplicates are ignored. |
maxReviewsPerListing | Reviews to return per listing. Default 20, 0 means all. |
sortBy | most-recent, most-relevant, highest-rated, lowest-rated. |
sinceDate, untilDate | Only reviews written in this date range (YYYY-MM-DD). |
locale | Language for translated text and relative dates, for example de-DE. Default en-US. |
proxyConfiguration | Proxy settings. The default datacenter proxy works. |
{
"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],
"maxReviewsPerListing": 50,
"sortBy": "most-recent",
"sinceDate": "2026-01-01",
"locale": "en-US"
}
| Field | Description |
|---|---|
id, listingId, startUrl | Review id, listing id, and the URL you gave. |
rating | Stars from 1 to 5. Empty on very old reviews that had no rating. |
createdAt | When the review was written (UTC). |
language, text | Language and text exactly as the guest wrote it. |
localizedText, localizedReview | Text in your locale, and the translation notice when it was translated. |
localizedDate, localizedReviewerLocation | Relative date and where the guest is from. |
reviewer, reviewee | Guest and host: id, first name, photo, profile path. |
reviewHighlight, highlightType | Short note such as "Stayed a few nights". |
response, localizedResponse | Host reply as written, and in your locale. |
reviewPhotoUrls | Photos attached to the review, if any. |
{
"startUrl": "https://www.airbnb.com/rooms/12937",
"listingId": "12937",
"id": "1100000000000000001",
"language": "en",
"text": "Spotless flat, easy walk to the metro, and the host sent great tips for dinner.",
"localizedText": "Spotless flat, easy walk to the metro, and the host sent great tips for dinner.",
"localizedReview": null,
"localizedDate": "2 weeks ago",
"localizedReviewerLocation": "Springfield, Illinois",
"createdAt": "2026-09-30T12:00:00Z",
"reviewee": { "id": "200001", "firstName": "Sam", "hostName": "Sam", "pictureUrl": "https://a0.muscache.com/im/pictures/user/example-host.jpg", "profilePath": "/users/profile/200001", "profilePicture": "https://a0.muscache.com/im/pictures/user/example-host.jpg" },
"reviewer": { "id": "300001", "firstName": "Alex", "hostName": "Alex", "pictureUrl": "https://a0.muscache.com/im/pictures/user/example-guest.jpg", "profilePath": "/users/profile/300001", "profilePicture": "https://a0.muscache.com/im/pictures/user/example-guest.jpg" },
"reviewHighlight": "Stayed a few nights",
"highlightType": "LENGTH_OF_STAY",
"rating": 5,
"response": "Thanks for staying with us, come back soon!",
"localizedResponse": "Thanks for staying with us, come back soon!",
"ratingAccessibilityLabel": "Rating, 5 stars",
"reviewPhotoUrls": []
}
If you are moving from a similar reviews actor on another platform, the field names stay the same, and listingId, localizedResponse and reviewPhotoUrls are extra.
You pay $0.003 per review ($3.00 per 1,000), charged only for reviews that are saved. Platform usage (compute and proxy) is billed separately by Scrapely and is very small, roughly 0.1 to 0.2 cents per 1,000 reviews.
Is it legal to scrape Airbnb reviews? The reviews are public. Reviews contain names of private people, so follow privacy laws such as GDPR and only keep what you need.
Do I need a login or my own proxy? No. The default datacenter proxy is enough.
How many reviews can I get? All the reviews Airbnb shows for the listing. Large listings with 3,000+ reviews work.
What if a field is empty? Older reviews can have no rating, and most reviews have no host reply. Those fields are null.
Can I schedule runs or use the API? Yes. Schedule runs in the console and read results through the dataset API.
Why did I get fewer reviews than Airbnb shows? Airbnb's total count can include hidden or removed reviews. The run message tells you when that happens.
createdAt for exact dates.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalListing URLs
Airbnb listing links such as https://www.airbnb.com/rooms/12937. Any Airbnb domain works. Duplicates are ignored.
maxReviewsPerListingintegerOptionaldefault 20Max reviews per listing
Maximum number of reviews to return from each listing. Set 0 to get every review.
Order and date range of the reviews to return.
sortByenumOptionaldefault "most-recent"Sort reviews by
Order in which reviews are returned. Most recent is newest first; Airbnb's relevance order mixes recent and long-standing reviews.
sinceDatestringOptionalReviews since
Only return reviews written on or after this date (YYYY-MM-DD). With Most recent order the run stops as soon as older reviews start.
untilDatestringOptionalReviews until
Only return reviews written on or before this date (YYYY-MM-DD).
localeenumOptionaldefault "en-US"Locale
Language and region used for translated review text, relative dates, and host replies. The original text is always kept as well.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy used to reach Airbnb. Datacenter works for the public reviews API.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | Review id |
| listingId | string | Airbnb listing id |
| startUrl | string | Listing URL that was scraped |
| rating | integer | null | Stars from 1 to 5, empty for older reviews without a rating |
| createdAt | string | null | When the review was written, UTC |
| language | string | null | Language the guest wrote in |
| text | string | null | Review text as written |
| localizedText | string | null | Review text in the chosen locale |
| localizedReview | object | null | Translation text and its notice when the review was translated |
| localizedDate | string | null | Relative or formatted date in the chosen locale |
| localizedReviewerLocation | string | null | Where the reviewer is from, or how long they have been on Airbnb |
| reviewer | object | null | Reviewer id, first name, and photo |
| reviewee | object | null | Host id, name, and photo |
| reviewHighlight | string | null | Short note such as length of stay |
| highlightType | string | null | Type of the highlight note |
| response | string | null | Host reply as written |
| localizedResponse | string | null | Host reply in the chosen locale |
| ratingAccessibilityLabel | string | null | Rating as text |
| reviewPhotoUrls | array | Photos attached to the review |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Review | $0.003 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/airbnb-reviews-scraper').call({
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/12937"
}
],
"maxReviewsPerListing": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/airbnb-reviews-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/airbnb-reviews-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Recent top reviews in English for one Airbnb listing.
Critical reviews of one listing in the French locale.
Reviews within a date range, newest first.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.