# Integrate HasData Airbnb Scraper API
## Task
Add the requested Airbnb search or property-data workflow to this project using HasData Airbnb Scraper API.
Inspect project instructions, the server-side runtime, existing HTTP client, and tests first.
Follow the project's conventions and preserve unrelated code. No new SDK is required.
Implement only the endpoint or workflow needed for the user's task; do not add a full travel platform.
If the task is unclear, ask whether they need search results, property details, or both.
Do not replace the REST integration with an MCP connection or a custom Airbnb scraper.
## References
Read the endpoint documentation before implementing:
- Listing search: https://docs.hasdata.com/apis/airbnb/listing.md
- Property details: https://docs.hasdata.com/apis/airbnb/property.md
- Error handling: https://docs.hasdata.com/api-codes.md
- Documentation index: https://docs.hasdata.com/llms.txt
- Full documentation (fallback): https://docs.hasdata.com/llms-full.txt
Start with the endpoint references. Use `llms.txt` to find additional pages.
Use `llms-full.txt` only when needed; extract relevant sections instead of loading everything into context.
If a `.md` reference is unavailable, try its HTML URL without `.md`.
If it is still unavailable, ask for the missing documentation rather than guessing.
## Optional agent skill
If the official `hasdata` skill is already available, use its relevant guidance.
Otherwise, if this agent supports skills, ask before installing it in this project:
```sh
npx skills add hasdata/agent-skills --skill hasdata
```
Run from the project directory and select the coding agent in use.
The `hasdata-cli` skill is not required. If installation is declined or unsupported, continue with the docs.
Flag conflicts between skill guidance and current API docs rather than guessing.
## Implementation
- Listing search: `GET https://api.hasdata.com/scrape/airbnb/listing`.
- Accept required `checkIn` and a `location`, unless using all four map bounds: `neLat`, `neLng`, `swLat`, and `swLng`. Do not send a partial bounding box.
- Accept `checkOut`, `adults`, `children`, `infants`, and `pets` when relevant. Use agreed future dates and preserve these inputs with saved results.
- Property details: `GET https://api.hasdata.com/scrape/airbnb/property`, with the required Airbnb listing `url`. Do not assume it accepts search dates or guest filters.
- Encode query parameters correctly. Preserve returned JSON: listing `properties` and `pagination`, or the detail `property` object, including available amenities, host details, and disclosures.
- If pagination is needed, accept the returned `nextPageToken`; do not automatically fetch every page.
- Keep price qualifiers and breakdowns intact. Do not infer booked nights, occupancy, rental income, or current availability from a saved listing response.
- Handle timeouts, documented errors, empty searches, and missing optional fields. Do not invent absent prices or amenity values.
- Keep requests server-side. If there is no suitable server-side runtime, discuss options before changing the architecture.
## Credentials
- Implement the integration and mocked tests without requiring a live API key.
- Read `HASDATA_API_KEY` from the project's existing environment or secret store and send it as `x-api-key`.
- If the key is missing before live verification, ask the user to configure it from https://app.hasdata.com/api-keys.
- Never ask the user to paste the key into chat. Check only that it is configured, without printing its value.
- Never put the key in browser code, logs, or version control. Add only a placeholder to the project's example configuration.
- If using a local `.env` file, make sure it is gitignored.
- Send the key only to `https://api.hasdata.com`. Never forward it to documentation, result URLs, or redirects to another origin.
## Verification
- Add mocked tests for parameter validation, query encoding, success, empty searches, missing optional fields, and documented errors. Include a usage example and run local checks.
- Only after explicit user approval and with a configured key, make one live verification request with agreed inputs and valid dates where required. Successful requests consume credits.
- Validate the HTTP status, documented API status, and response structure. An empty result set can be valid.
- Do not automatically repeat paid requests to obtain a nonempty response.
- Report changed files, setup commands, and test results. State separately whether live verification passed, failed, or was skipped.
- Ask before deploying.Airbnb Scraper API
with live prices for your dates
Search Airbnb listings for a location and dates. One request returns titles, ratings, and full price breakdowns as clean JSON, discounts and fees included. We run the browsers and infrastructure.
of requests succeed
median response
95% finish faster
per 1k requests at volume
Airbnb ships changes weekly. Your code shouldn't care.
- GraphQL payloads that change without notice
- Prices that need dates and sessions
- A headless fleet to keep warm
- Pagination tokens that expire
- Fix the parsers again next week
One GET Request. That's the whole integration.
Start with just a query. Add more parameters when your use case needs them.
Airbnb Listing Scraper API
curl -G 'https://api.hasdata.com/scrape/airbnb/listing' \
--data-urlencode 'location=New York' \
--data-urlencode 'checkIn=2026-09-20' \
--data-urlencode 'checkOut=2026-09-24' \
--data-urlencode 'neLat=40.8' \
--data-urlencode 'neLng=-73.9' \
--data-urlencode 'swLat=40.6' \
--data-urlencode 'swLng=-74.1' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'location LocationcheckIn * Check-in DatecheckOut Check-out DateneLat North-East LatitudeneLng North-East LongitudeswLat South-West LatitudeswLng South-West Longitudeadults Number of Adultschildren Number of Childreninfants Number of Infantspets Number of PetsnextPageToken Next Page TokenAirbnb Property Scraper API
curl -G 'https://api.hasdata.com/scrape/airbnb/property' \
--data-urlencode 'url=https://www.airbnb.com/rooms/7777642' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'url * Property URLAdd Airbnb Scraper API with your AI agent
Paste a ready-to-use integration prompt into your coding agent. It includes API references, setup requirements, and testing instructions.
Build with Airbnb rental data
Compare stay prices, match guest requirements, and research host profiles with structured Airbnb listing and property data.
Compare vacation rental prices
Use Airbnb prices and stay-length qualifiers to build rental comparison tools and track changes across saved searches.
- New York
- Check-in: September 20, 2026
- 1 night
| Listing | Displayed price |
|---|---|
| Classic Brownstone, a Private Studio Apartment | $230 |
| Room in Chelsea 2 (Shared Bathroom) | $130 |
| Private bedroom in Manhattan Upper East Side | $195 |
- API data
properties[].descriptionproperties[].priceproperties[].id- Your app
- Save search snapshots, match dates and guest counts, and calculate price changes in your application.
Match rentals to guest requirements
Filter Airbnb property data by guest capacity, sleeping arrangements, and amenities for family trips or remote-work stays.
- Garden in Bangkok
- Bangkok, Thailand
| Requirement | Listing data |
|---|---|
| Guest capacity | 7 |
| Sleeping arrangements | 3 bedrooms · 7 beds |
| Wifi | Available |
| Dedicated workspace | Available |
| Kitchen | Not available |
- API data
property.guestCapacityproperty.overviewproperty.amenities- Your app
- Apply your guest and amenity filters, then rank matching properties for your travel search or shortlist.
Research short-term rental hosts
Combine Superhost status, hosting experience, ratings, and review counts to compare the public profiles behind vacation rental listings.
- Garden in Bangkok
- Host profile
| Signal | Returned value |
|---|---|
| Superhost | Yes |
| Years hosting | 11 |
| Host rating | 4.87 |
| Host reviews | 534 |
- API data
property.host.isSuperhostproperty.host.yearsHostingproperty.host.ratingproperty.host.reviews- Your app
- Collect public host profiles across your selected properties and calculate comparisons; the API does not score investment quality.
Surface missing safety disclosures
Read Airbnb safety disclosures to flag listings that need follow-up before adding them to a managed travel shortlist.
- Garden in Bangkok
- Listing disclosures
| Returned disclosure | App action |
|---|---|
| Carbon monoxide alarm not reported | Ask the host |
| Smoke alarm not reported | Ask the host |
- API data
property.safetyAndPropertyInfo[].titleproperty.safetyAndPropertyInfo[].type- Your app
- Flag missing disclosures for human follow-up. Do not turn an unreported alarm into a verified absence or safety rating.
Every stay, one predictable schema
Explore listing prices, property details, host profiles, safety information, and pagination tokens in the response excerpts below.
properties
[
{
"id": "28909212",
"url": "https://www.airbnb.com/rooms/28909212",
"title": "Home in East Austin",
"latitude": 30.2744,
"longitude": -97.7288,
"rating": 4.94,
"reviews": 447,
"badges": [
"Guest favorite"
],
"photos": [
"https://a0.muscache.com/..."
],
"price": {
"discountedPrice": "$487"
}
}
]title stringListing title
latitude / longitude numberMap coordinates
rating numberAverage review score
reviews numberReview count
badges string[]Guest favorite, Superhost, …
photos string[]Image URLs
price objectPrice for the requested dates
url stringListing URL for the property endpoint
price
{
"originalPrice": "$631",
"discountedPrice": "$487",
"qualifier": "for 4 nights",
"breakdown": [
{
"description": "4 nights x $157.70",
"price": "$630.80"
},
{
"description": "Special offer",
"price": "-$144.16"
}
]
}originalPrice stringTotal before discounts
discountedPrice stringTotal after discounts
qualifier stringWhat the total covers, e.g. "for 4 nights"
breakdown object[]Line items: nightly rate, discounts, fees
property
{
"title": "Historic Swede Hill Bungalow | Walk to Downtown",
"overview": [
"4 guests",
"2 bedrooms",
"2 beds",
"1 bath"
],
"guestCapacity": 4,
"rating": 4.94,
"reviews": 447,
"address": "Austin, Texas, United States",
"amenities": [
{
"title": "Hair dryer",
"available": true
},
{
"title": "Cleaning products",
"available": true
}
],
"description": "Our charming and private 1940's guest house is located on a quiet street in the beautiful east downtown historic Swede…"
}overview string[]Guests, bedrooms, beds, baths
guestCapacity numberMaximum guests
rating / reviews numberScore and review count
address stringListing location
amenities object[]Each with title and availability
description stringFull listing description
host
{
"name": "Lisa",
"isSuperhost": true,
"isVerified": true,
"rating": 4.94,
"reviews": 550,
"yearsHosting": 8
}name stringHost display name
isSuperhost booleanSuperhost status
isVerified booleanVerified identity
rating numberHost rating
reviews numberTotal host reviews
yearsHosting numberYears as a host
safetyAndPropertyInfo
{
"guestCapacity": 7,
"safetyAndPropertyInfo": [
{
"title": "Carbon monoxide alarm not reported",
"type": "SYSTEM_NO_DETECTOR_CO2"
},
{
"title": "Smoke alarm not reported",
"type": "SYSTEM_NO_DETECTOR_SMOKE"
}
]
}guestCapacity numberMaximum number of guests
safetyAndPropertyInfo[].title stringSafety disclosure shown on the listing
safetyAndPropertyInfo[].type stringMachine-readable disclosure category
pagination
{
"properties": [
{
"id": "1156391923343194437",
"url": "https://www.airbnb.com/rooms/1156391923343194437"
}
],
"pagination": {
"nextPageToken": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0=",
"pageTokens": [
"eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjowLCJ2ZXJzaW9uIjoxfQ==",
"eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0="
]
}
}properties[].id stringListing identifier for deduplication
pagination.nextPageToken stringToken to request the next result page
pagination.pageTokens string[]Tokens for available result pages
An all-in-one scraping service
Every feature you need to collect data from thousands to millions of requests.
Discover similar
scrapers and APIs
to expand your projects.
Booking.com Scraper API
Travel Data • $0.83 / 1k Request
Google Hotels API
Travel Data • $0.83 / 1k Request
Fits right into your stack.
Works with the tools you already use.
View Documentation ->Teams that deleted their scraper
Now it's the part of the pipeline they don't think about
HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.
I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.
We were particularly impressed with how easily we could integrate HasData into our existing workflow.
Plans that get cheaper at scale
Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.
Free
Startup
Basic
RecommendedGrowth
Monthly request volume
Custom price based on required volume
Past 20M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload. Past 20M credits a month, or need terms the self-serve plans do not cover? We shape the contract, concurrency, and support around your workload.
HasData accesses publicly available data only. Airbnb's terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
Per successful request. One search returns a full page of listings for the area and dates. A failed request costs nothing.
Yes. The free plan renews 1,000 credits every month, which is 200 requests with every field included. No credit card required. When you outgrow it, pick a plan that fits your volume.
Paid plans start at $59 per month for 40,000 requests and scale to 4 million a month. The unit price drops with volume, from $1.48 down to $0.42 per 1,000 requests.
Airbnb's official API is closed to new partners. HasData works with publicly available pages instead. No partner agreement, just an API key.
Pass checkIn and checkOut. Prices come back for the exact stay: discounts, fees, and the night-by-night breakdown.
Titles, coordinates, photos, ratings, review counts, badges, and full price breakdowns, plus pagination tokens for the next page.
Yes. Pass a listing URL to the property endpoint: host profile with Superhost status, amenities with availability, guest capacity, and address.
Nothing on your side. We track the changes and keep the response schema stable. Fields keep their names and types, and existing keys don't disappear.
No. Requests run on HasData's infrastructure, so there's nothing to provision or maintain. You're responsible for using the results in line with each target site's terms and applicable law.
Yes, you can cancel your subscription at any time from your dashboard in a few seconds. Once cancelled, there are no recurring payments.
Your first Airbnb listing
is minutes away
200 requests free · no credit card