Airbnb Property-Operator Discovery Scraper avatar

Airbnb Property-Operator Discovery Scraper

Pricing

from $3.33 / 1,000 results

Go to Apify Store
Airbnb Property-Operator Discovery Scraper

Airbnb Property-Operator Discovery Scraper

Finds Airbnb hosts who manage multiple properties (5+ listings) across India, Malaysia, Philippines, Thailand, Hong Kong/Macau, Japan, Australia and New Zealand. Searches major cities, groups listings by host, and returns the complete raw Airbnb JSON for every qualifying operator and listing.

Pricing

from $3.33 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Find Airbnb hosts who run multiple properties — not casual hosts renting a spare room, but property-management operators with 5 or more active listings. Searches major cities across your target markets, groups every listing it finds by host, and keeps only the hosts that clear your listing-count threshold.

Why use this actor

  • Purpose-built for finding multi-property operators, not single listings
  • Covers India, Malaysia, Philippines, Thailand, China, Japan, Australia, New Zealand out of the box
  • Groups listings by host automatically — no manual matching
  • Returns the complete, unmodified Airbnb JSON for every operator, listing, and search hit — every field Airbnb sends is preserved, nothing renamed or dropped
  • No login, no account, no lead-gen enrichment — only what Airbnb already shows publicly
  • Output as a ready-to-download dataset (JSON) plus flattened operators.csv / listings.csv summaries

A real, captured sample run (47 operators found across Thailand/Malaysia/Japan, incl. full CSVs and a few complete raw JSON records) is checked in at ./sample-output/.

How it works

  1. Searches Airbnb's results pages across your chosen cities in each target market.
  2. Visits each listing found and reads off its host.
  3. For every host discovered, visits their public Airbnb profile page — this reveals their exact total listing count, even for hosts with dozens of properties.
  4. Keeps only hosts whose total listing count meets your threshold (default: 5+).
  5. Returns one OPERATOR record per qualifying host and one LISTING record per listing found for them, each carrying the raw Airbnb data behind it.

Input

{
"countries": ["Thailand", "Malaysia"],
"minListingsPerHost": 5,
"maxSearchPagesPerCity": 2,
"maxListingsPerCity": 20,
"maxHostsToResolve": 150,
"maxListingsPerOperator": 15,
"concurrency": 3,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
FieldTypeDescription
countriesarrayTarget markets to search. Default: all 8.
citiesPerCountryobjectAdvanced: override the built-in city list, e.g. {"Japan": ["Tokyo--Japan", "Kyoto--Japan"]}.
minListingsPerHostintegerKeep only hosts with at least this many listings. Default 5.
maxSearchPagesPerCityintegerSearch-result pages swept per city (~18 listings/page). Default 2.
maxListingsPerCityintegerCap on candidate listings collected per city. Default 20.
maxHostsToResolveintegerCap on unique hosts checked per run. Default 150.
maxListingsPerOperatorintegerCap on listings fetched in full per qualifying operator. Default 15.
concurrencyintegerParallel requests. Default 3 — keep this low.
proxyConfigurationobjectResidential proxy recommended for a full run.

The default settings run a small, quick sweep (2 cities per country) so a first run finishes in well under 30 minutes. Raise the city list (via citiesPerCountry) and the caps above for a full production sweep — see "Coverage & limitations" below for what to expect at scale.

Output

Two record types in the same dataset, distinguished by recordType.

OPERATOR — one per qualifying host:

{
"recordType": "OPERATOR",
"_scrapedAt": "2026-07-24T12:18:04Z",
"host_id": "27721148",
"host_name": "Lily",
"host_profile_url": "https://www.airbnb.com/users/show/27721148",
"is_superhost": true,
"managed_listings_total_count": 96,
"listings_discovered_count": 15,
"listing_ids_discovered": ["1515350780921666997", "..."],
"countries": ["Thailand"],
"cities": ["Bangkok"],
"raw_host": { "...": "the complete, untouched Airbnb host-profile JSON" }
}

LISTING — one per listing found for a qualifying operator:

{
"recordType": "LISTING",
"_scrapedAt": "2026-07-24T12:18:04Z",
"country": "Thailand",
"city": "Bangkok",
"listing_id": "1597685945984399331",
"listing_url": "https://www.airbnb.com/rooms/1597685945984399331",
"host_id": "27721148",
"host_profile_url": "https://www.airbnb.com/users/show/27721148",
"raw_search": { "...": "the search-result card JSON, if this listing was found via city search" },
"raw_listing": { "...": "the complete, untouched Airbnb listing JSON" }
}

raw_search / raw_listing / raw_host are Airbnb's own response data, kept exactly as received — every field, every nested object, nothing renamed or filtered. country/city are null for listings found only via an operator's profile page rather than city search (see below).

CSV export: operators.csv and listings.csv are written alongside the dataset with flattened summary columns (names, URLs, counts, titles) for quick spreadsheet review. The full raw JSON lives in the dataset — a single listing's payload can run past 100KB, too large for a CSV cell in Excel/Sheets, so the CSVs index into the JSON rather than embed it.

Coverage & limitations (please read)

  • "China" is served via Hong Kong and Macau. Airbnb has had no domestic listings or hosts inside mainland China since it exited that market in 2022. Selecting "China" searches Hong Kong and Macau instead — the closest active market — and the country field on results reflects Airbnb's own resolved location (e.g. "Hong Kong"), not the literal word "China".
  • Operators above 10 listings are sampled, not fully enumerated. Airbnb's public host profile page always reports an exact total listing count, but only ever shows up to 10 of those listings on the page itself — confirmed against real hosts with 15, 61, and 96 total listings, all capped at 10 shown. This actor returns the accurate total count for every operator, plus full raw JSON for those ~10 sampled listings and any additional ones the city search happens to surface for the same host. For an operator with, say, 96 listings, expect the actor to return the true count (96) alongside full data for roughly 10-25 of their actual listings, not all 96 — Airbnb does not publicly expose a way to list every listing for a large host beyond that sample.
  • Runtime scales with coverage. Defaults are intentionally small (2 cities/country, capped search pages and host resolutions) so a first run finishes quickly. A full sweep across all 8 markets with a wide city list is a much larger run — raise the caps incrementally and watch the run duration before committing to the broadest settings.
  • A residential proxy is recommended for any run beyond a quick test.