Airbnb Phone Number Scraper with Host Listing Leads Finder
Pricing
from $2.99 / 1,000 results
Airbnb Phone Number Scraper with Host Listing Leads Finder
Airbnb Phone Number Scraper collects host phone data to support rental market research and outreach. Filter by location or property type to analyze markets and connect with relevant hosts at scale.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
SimpleAPI
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Share
Airbnb Scraper — Listings, Host Profiles and Location Data
The Airbnb Phone Number Scraper with Host Listing Leads Finder discovers Airbnb listings, host profiles, and experiences by keyword and location, returning each hit as a structured record with airbnbId, resultType, serpRank, title, snippet, listingUrl, and location/market context. It reads Google's public index of site:airbnb.com results rather than logging in to Airbnb, so no account or API key is required. Property managers, host-partnership agencies, and market researchers use it to build seed lists of listing URLs and host IDs for a city or niche before running deeper enrichment.
What is Airbnb Phone Number Scraper with Host Listing Leads Finder?
Airbnb Phone Number Scraper with Host Listing Leads Finder is a keyword-and-location discovery Actor that maps the Airbnb footprint Google has indexed for a search term. Instead of crawling Airbnb directly, it turns each search term into a site:airbnb.com "location" "term" Google query, fetches the result pages, and classifies every airbnb.com hit it finds into a listing, host profile, or experience. Results are written to the Apify dataset as one JSON row per discovered result. No Airbnb login, cookie, or API key is required — only an Apify account to run the Actor.
- Keyword-to-discovery: turns each search term (optionally combined with a location) into a Google dork against
airbnb.com. - Result classification: every hit is tagged
listing(/rooms/…),profile(/users/…),experience(/experiences/…),help,article, orother. - Airbnb ID extraction: pulls the numeric listing or host ID directly from the URL.
- SERP rank tracking: records each result's 1-based position across paginated Google result pages.
- Result-type filtering: keep only listings, only host profiles, only experiences, or
any. - Locale tagging: attaches a country name and dial code to every row for market segmentation.
What data can I extract with Airbnb Phone Number Scraper with Host Listing Leads Finder?
Each discovered result is written as a single dataset row combining identification, SERP, and locale fields.
| Field | Example Value | Use Case |
|---|---|---|
airbnbId | "12345678" | Numeric listing or host ID from the URL — primary key for joining with a detail/review scraper |
resultType | "listing" | Segment output into listings, host profiles, experiences, help pages, or articles |
serpRank | 3 | Gauge how visible a listing or host is on Google for a given keyword |
title | "Beachfront villa in Lisbon - Villas for Rent" | Quick read of the listing/host name without opening the page |
snippet | "Entire villa hosted by Maria. 6 guests · 3 bedrooms..." | Skim listing detail (guests, bedrooms) directly from the SERP |
listingUrl | "https://www.airbnb.com/rooms/12345678" | Primary link to open the listing or feed into a detail scraper |
keyword | "beachfront villa" | Attribute each result back to the search term that produced it |
locationKeyword | "Lisbon" | Segment results by the city/region used in the query |
platform | "Airbnb.com" | Distinguish rows when merging with other platforms' discovery data |
country | "Portugal" | Label rows with the target market for reporting |
dial_code | "+351" | Pairs with phone_number to give locale context when a number is present |
phone_number | null | Rare null-tolerant carry-over — populated only when a real, prefixed phone number sits in the snippet text |
scrapedAt | "2026-07-25T12:00:00+00:00" | ISO 8601 timestamp for dedupe and refresh scheduling |
description | "Entire villa hosted by Maria. 6 guests..." | Legacy alias — identical value to snippet, kept for backward compatibility |
url | "https://www.airbnb.com/rooms/12345678" | Legacy alias — identical value to listingUrl, kept for backward compatibility |
SERP and listing summary data
The fields that carry the actual decision-making signal are title, snippet, resultType, and serpRank. Together they let you triage a large result set without opening a single Airbnb page: title and snippet give you the listing or host's headline copy exactly as Google indexed it — guest count, bedroom count, and host name are often visible directly in the snippet text — resultType tells you whether you're looking at a bookable room, a host profile, or an experience, and serpRank shows how prominently that page currently surfaces for the keyword. A common workflow: filter to resultType: "listing", sort by serpRank, and prioritize outreach on the top-ranked results per city.
Targeting data
locationKeyword, keyword, country, and dial_code are the fields you segment on. locationKeyword narrows discovery to a city, region, or neighborhood and is echoed back on every row so you can group results geographically after the run. keyword lets you attribute each row to the search term that found it, useful when running multiple terms in one job. country/dial_code attach market/locale context you set once per run rather than per row.
Why not build this yourself?
Airbnb has no public API for arbitrary host or listing contact lookup, so any keyword-based discovery has to go through Google's own search results — and Google actively resists automated querying. Building this yourself means handling pagination against Google's start offset, rotating user agents and Accept-Language headers, detecting soft-block interstitials (which look like normal pages but carry an "unusual traffic" notice), and retrying through fresh proxy sessions when a request is blocked. This Actor already does all of that: it rotates request headers, jitters delays between requests, distinguishes a genuine block page from a full 300KB+ result page that merely embeds reCAPTCHA scripts, and retries up to three times per page through Apify's GOOGLE_SERP proxy group before giving up on a search term.
It also stops early and cleanly — after three consecutive empty or failed pages for a search term — instead of looping indefinitely against a search engine that has stopped returning results.
Build your own scraper if you need custom parsing logic beyond airbnb.com result classification. Use this Actor if you want repeatable, multi-keyword, multi-location Airbnb discovery without maintaining Google SERP scraping infrastructure yourself.
How to use data extracted from Airbnb?
Property management outreach
Property managers and vacation-rental sales teams run a batch of searchTerms (property type or amenity keywords) with a locationKeyword for their target city, filter to resultTypeFilter: "listings", and use the resulting listingUrl and airbnbId values as a prospecting list — properties that already rank for the manager's target keywords are strong candidates for a management-service pitch. The title and snippet fields give enough context (guest count, property style, host name) to qualify a lead before ever opening the listing, and serpRank helps prioritize the most visible — and likely most actively maintained — hosts first, so outreach effort goes to listings that are still live and getting search traffic rather than stale or abandoned ones.
Host partnership agencies
Agencies that recruit hosts for co-hosting, cleaning, revenue-management, or photography partnerships run recurring jobs across several locationKeyword values on behalf of clients, filtering to resultTypeFilter: "profiles" to collect host airbnbId and listingUrl values market by market. Repeating the same searchTerms on a schedule and comparing serpRank and resultType counts run over run shows which markets are gaining new indexed hosts worth approaching, letting an agency prioritize outreach in growing markets before competitors do.
Market research and intelligence
Researchers use keyword and locationKeyword together to map how many listing, profile, and experience results Google surfaces for a given property type or neighborhood term, then compare resultType distribution and serpRank concentration across cities to spot where a niche (e.g., "cabin", "loft", "beachfront villa") is over- or under-represented in Airbnb's indexed footprint. Running the same searchTerms across a set of candidate cities produces a directly comparable dataset for prioritizing which market to expand into next.
AI agents and automated pipelines
Because output is typed JSON keyed by airbnbId and listingUrl, agent frameworks can call this Actor as a discovery tool inside a larger pipeline — an agent given a natural-language brief like "find cabin listings near Lisbon" maps it to searchTerms/locationKeyword, runs the Actor, and hands the resulting listingUrl values to a downstream detail, pricing, or review Actor as the next automated step, with no manual copy-pasting of Airbnb links required at any stage.
🔼 Input sample
None of the 7 input parameters are required — running with no input still works if searchTerms (or the legacy keywords key) resolves to at least one value.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
searchTerms | No | array of strings | Keywords used to discover Airbnb results via Google. Combined with the location keyword into a site:airbnb.com dork. | ["beachfront villa", "cabin"] |
locationKeyword | No | string | Optional location added to every query to narrow discovery to a city, region, or neighborhood. Leave empty for no location narrowing. | "Lisbon" |
resultTypeFilter | No | string (enum: any, listings, profiles, experiences) | Keep only results of a given kind. Default any. | "listings" |
maxResults | No | integer (1–10000) | Maximum number of results to collect per search term. Scraping of a term stops once this limit is reached. Default 20. | 50 |
marketCountry | No | string (enum of 29 countries with dial codes) | Country whose name and dial code are attached to every discovered result as market/locale context. Purely informational — does not filter or restrict results by country. | "Portugal (+351)" |
searchPlatform | No | string (enum: Airbnb) | Which site the search terms are scoped to. | "Airbnb" |
proxyConfiguration | No | object (proxy editor) | Proxy settings. This Actor enforces the GOOGLE_SERP proxy group required to fetch Google search pages. | {"useApifyProxy": true} |
Example input
{"searchTerms": ["beachfront villa", "loft"],"locationKeyword": "Lisbon","resultTypeFilter": "listings","maxResults": 50}
Common pitfall: marketCountry does not filter results to that country — it is a label attached to every row for reporting, not a geographic restriction. To actually narrow results to a place, use locationKeyword, which is inserted directly into the Google query.
🔽 Output sample
Every discovered result is pushed as one dataset row, typed and consistently shaped across every run. Data leaves the Actor as Apify dataset items, downloadable in JSON, CSV, Excel, and the other formats Apify's dataset export supports.
{"platform": "Airbnb.com","keyword": "beachfront villa","title": "Beachfront villa in Lisbon - Villas for Rent","description": "Entire villa hosted by Maria. 6 guests · 3 bedrooms...","url": "https://www.airbnb.com/rooms/12345678","phone_number": null,"country": "Portugal","dial_code": "+351","listingUrl": "https://www.airbnb.com/rooms/12345678","airbnbId": "12345678","resultType": "listing","serpRank": 3,"snippet": "Entire villa hosted by Maria. 6 guests · 3 bedrooms...","locationKeyword": "Lisbon","scrapedAt": "2026-07-25T12:00:00+00:00"}
How do you filter and target specific host leads?
This Actor exposes four real targeting controls, and using them together is what turns a broad keyword sweep into a precise host-lead list.
Search term composition is the starting point: each entry in searchTerms becomes its own Google query, so a property-type keyword ("cabin") returns a broader, noisier set than a specific phrase ("cabin with hot tub"). Run several terms in one job to widen coverage without losing the ability to attribute each result back to its keyword.
Location narrowing via locationKeyword is the sharpest scope control — it's inserted directly into the query as a quoted term, so locationKeyword: "Lisbon" restricts discovery to Google-indexed Airbnb pages that actually mention Lisbon, rather than relying on Airbnb's own geographic search.
Result-type filtering via resultTypeFilter is the closest equivalent to a quality threshold here: set it to "profiles" when you specifically want host leads rather than bookable listings, or "listings" to exclude host and experience pages entirely.
Volume control via maxResults caps how many results each search term collects before moving to the next term; the Actor also stops a term early after three consecutive empty or blocked pages, so raising maxResults past what Google actually has indexed does not produce padded or fabricated rows.
{ "searchTerms": ["cabin", "loft", "beachfront villa"], "locationKeyword": "Lisbon", "resultTypeFilter": "any", "maxResults": 100 }
{ "searchTerms": ["superhost"], "locationKeyword": "Austin", "resultTypeFilter": "profiles", "maxResults": 30 }
{ "searchTerms": ["ski chalet"], "locationKeyword": "Aspen", "resultTypeFilter": "listings", "maxResults": 20 }
▶️ Want to try other Airbnb scrapers?
| Scraper Name | What it extracts |
|---|---|
| Airbnb Full Year Price Tracker Scraper | Real nightly Airbnb prices across a date range, priced per check-in date rather than one repeated snapshot |
| Airbnb Occupancy & Rate Analytics Scraper | Occupancy rate, booked/available days, and per-month breakdown computed from a listing's public availability calendar |
| Airbnb Scraper: Host Full Listings | Listings enriched with the full host block (superhost, response rate/time, verifications) plus per-host portfolio expansion |
| Google Hotels — Location Details Scraper | Google Hotels listings plus nearby attractions, neighborhood summary, and a computed location/walkability score |
| Zillow Agents Finder & Reviews Scraper | Real estate agent and mortgage lender directory profiles with individual customer reviews |
| Zillow Search Scraper: Investment Analyzer | Property listings with cap rate, rental yield, mortgage payment, and cash-flow estimates |
How to extract Airbnb data programmatically
The Actor runs as a standard Apify Actor: one API call with your Apify token, a JSON input body, and a structured JSON dataset back — no Airbnb-specific authentication involved.
Python example
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("simpleapi/airbnb-phone-number-scraper-with-host-listing-leads-finder").call(run_input={"searchTerms": ["beachfront villa"],"locationKeyword": "Lisbon","resultTypeFilter": "listings","maxResults": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["airbnbId"], item["listingUrl"], item["serpRank"])
MCP for AI agents
This Actor is callable through Apify's official Actors MCP Server, either the hosted endpoint at mcp.apify.com (OAuth, auto-updating) or self-hosted via npx -y @apify/actors-mcp-server --actors simpleapi/airbnb-phone-number-scraper-with-host-listing-leads-finder with an APIFY_TOKEN environment variable. An agent can call it as a discovery tool — "find Airbnb host profiles for cabins near Lisbon" — and pipe the returned listingUrl values into a downstream enrichment tool. Compatible with Claude Desktop, VS Code, and other MCP-aware clients.
Export to spreadsheets or CRM
Every Apify dataset can be exported directly to CSV or Excel from the run's Storage tab, or pulled via the API in either format. Map listingUrl/airbnbId to your CRM's lead-record ID field, title/snippet to a notes column, and keyword/locationKeyword to campaign or segment tags.
Is it legal to scrape Airbnb host phone numbers?
Yes — this Actor collects data from Google's public search index of pages Airbnb has already made publicly viewable, without logging in or bypassing any access control. The phone_number field is a null-tolerant carry-over that is populated only in the rare case a real, prefixed phone number sits directly in an indexed snippet; it is almost always null, since Airbnb does not expose host phone numbers on public pages. When a phone number (or any other personal identifier) is present in the output, it constitutes personal data, so GDPR and CCPA still apply to how you store, process, and use it — you need a lawful basis for retention and downstream use, and data subject rights (access, deletion) still attach. Consult legal counsel for commercial applications involving bulk storage of personal data.
❓ FAQ
How does the Actor handle listings that Airbnb has removed or delisted?
The Actor does not call Airbnb to verify a listing's current status — it reports whatever Google has indexed at request time. A listingUrl that returns in the dataset may point to a listing that has since been removed or delisted on Airbnb; there is no "still active" flag in the output, so downstream users should treat freshly discovered URLs as candidates to verify, not confirmed-live listings.
Can I get host profiles and experiences along with listing results?
Yes. Setting resultTypeFilter to "any" (the default) returns listings, host profiles, and experiences together in the same run, tagged by resultType. Set it to "listings", "profiles", or "experiences" to collect only one kind.
How accurate is the phone number data?
The Actor returns exactly what appears in the Google-indexed snippet at request time — nothing is inferred or fabricated. In practice phone_number is almost always null, because Airbnb strips host contact details from its public listing and profile pages; treat a populated value as a rare exception, not the norm, and validate any number before using it for outreach.
How many records can I get per run?
maxResults caps collection at 1–10,000 results per search term (default 20); with multiple searchTerms, the cap applies per term. A term can also stop earlier than its cap after three consecutive empty or blocked Google result pages, since there is nothing further to collect.
How do I target host profiles specifically instead of listings?
Set resultTypeFilter to "profiles". Combined with a locationKeyword, this returns only Airbnb /users/… host-profile pages Google has indexed for your search term and location, giving you a host-ID list without listing noise.
Does Airbnb Phone Number Scraper with Host Listing Leads Finder work with Claude, ChatGPT, and AI agent frameworks?
Yes. It is reachable through Apify's Actors MCP Server (hosted or self-hosted via npx @apify/actors-mcp-server) for MCP-aware clients, and as a plain HTTP endpoint via the Apify API for any other agent framework that can make an authenticated REST call.
How does this compare to other Airbnb host-contact scrapers?
As observed on their public Apify Store listings on 2026-07-26: some competing Actors (e.g. scrapyspider/airbnb-host-contact-scraper) require you to already have host profile URLs as input and scrape business-profile pages directly for email/phone/business-name fields, explicitly noting those fields exist only on professional host accounts. Others (e.g. datavoyantlab/airbnb-leads-email-scraper) work from keywords similarly to this Actor but focus on email extraction from listing pages. This Actor's distinct angle is keyword-and-location discovery across three result kinds (listings, profiles, experiences) with SERP rank and result classification — it finds the URLs and host IDs in the first place, rather than assuming you already have them.
Can I use this Actor without an Airbnb account or API key?
Yes. You need only an Apify account to run the Actor — no Airbnb login, cookie, or API key is used or required anywhere in the process, since discovery happens entirely through Google's public search results.
Conclusion
Airbnb Phone Number Scraper with Host Listing Leads Finder turns a keyword and an optional location into a structured list of Airbnb listings, host profiles, and experiences — complete with Airbnb ID, result type, and SERP rank — without ever logging in to Airbnb. It's built for anyone who needs a repeatable way to seed a lead list or market map from search terms rather than known URLs: property managers, host-partnership agencies, and market researchers alike. Start a run with a search term and location keyword on the Actor's page in Apify Console, or call it via the API, to get your first batch of discovered listings and host IDs.