Build qualified accommodation prospect lists from public Booking.com property data. Search several destinations in one run, prioritize properties with explainable lead scores, and compare each export with a previous dataset for ongoing market monitoring.
What you can do
- Discover hotels, apartments, and other accommodation prospects by destination
- Export public identity, location, reputation, property, pricing, and amenity signals
- Rank outreach targets with a transparent 0–100 qualification score
- Segment prospects by market class, popularity, and guest quality
- Monitor newly discovered properties with a stable identity and previous-dataset comparison
This Actor does not fabricate or infer private contacts. Booking.com does not expose verified property emails, phone numbers, social profiles, or first-party websites through the public source used here, so those fields are not advertised.
Input example
{
"destinations": ["Lisbon", "Porto"],
"maxResultsPerDestination": 25,
"includeDetails": true,
"minimumRating": 8,
"minimumReviewCount": 100,
"currency": "EUR",
"language": "en-us"
}
Output example
{
"leadId": "booking:example-hotel",
"propertyName": "Example Hotel",
"bookingPropertyId": "example-hotel",
"sourceUrl": "https://www.booking.com/hotel/pt/example-hotel.html",
"sourceSearchUrl": "https://www.booking.com/searchresults.html?ss=Lisbon",
"sourcePlatform": "booking.com",
"destination": "Lisbon",
"rank": 1,
"address": "Central Lisbon, Portugal",
"city": "Lisbon",
"country": "Portugal",
"latitude": 38.72,
"longitude": -9.14,
"rating": 8.9,
"reviewCount": 1240,
"stars": 4,
"propertyType": "Hotel",
"price": "€180",
"currency": "EUR",
"amenities": ["Free WiFi", "Restaurant"],
"imageUrls": ["https://example.com/property.jpg"],
"qualificationScore": 82,
"qualificationTier": "high",
"qualificationReasons": ["Strong guest rating", "High review volume"],
"outreachAngle": "Established property: focus on scalable distribution partnerships.",
"marketSegment": "upscale",
"popularitySegment": "high-volume",
"qualitySegment": "strong",
"monitoringKey": "booking:example-hotel",
"scrapedAt": "2026-08-03T12:00:00.000Z"
}
Input settings
| Field | Description |
|---|---|
destinations |
One or more cities, regions, or landmarks (maximum 20) |
maxResultsPerDestination |
Maximum new prospects saved per destination (1–100) |
includeDetails |
Enrich location, property type, coordinates, and amenities |
minimumRating |
Keep properties at or above this guest rating |
minimumReviewCount |
Keep properties with at least this many public reviews |
propertyTypes |
Keep matching public property types |
sinceDatasetId |
Emit only properties absent from a previous dataset |
checkIn, checkOut |
Optional stay dates used for availability and price context |
adults, children, rooms |
Stay occupancy |
currency, language |
Result currency and language |
countryCode |
Optional two-letter proxy country for localized results |
Monitoring new prospects
Run the Actor once, then pass that run's dataset ID as sinceDatasetId. The next run compares stable monitoringKey values and emits only newly discovered properties. If every property is already known, the run succeeds with an empty dataset and records an expected_empty_delta summary in the key-value store.
Who is it for?
Use this Actor if you work in travel partnerships, accommodation distribution, destination research, hospitality sales operations, or property-market monitoring and need structured public prospect data.
Tips and limits
- Start with 10 prospects and one destination to validate your filters cheaply.
- Use detail enrichment when location and property-type segmentation matter.
- Prices and availability depend on dates, occupancy, currency, and public availability.
- Public pages can change or omit optional facts; saved output is preserved if one detail page fails.
- A run approaching its timeout saves a partial summary and pending work rather than discarding completed rows.
API usage and integrations
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~accommodation-partner-lead-finder/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"destinations":["Lisbon"],"maxResultsPerDestination":10}'
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/accommodation-partner-lead-finder').call({ destinations: ['Lisbon'], maxResultsPerDestination: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/accommodation-partner-lead-finder').call(run_input={'destinations': ['Lisbon'], 'maxResultsPerDestination': 10})
items = client.dataset(run['defaultDatasetId']).list_items().items
MCP and AI agents
Add the Actor to Claude Code:
claude mcp add apify --transport http "https://mcp.apify.com/?tools=fetch_cat/accommodation-partner-lead-finder"
Or add this server configuration to an MCP-compatible client:
{"mcpServers":{"apify":{"url":"https://mcp.apify.com/?tools=fetch_cat/accommodation-partner-lead-finder"}}}
Example prompts: “Find 25 highly rated accommodation partners in Lisbon” or “Compare new Berlin hotel prospects with my previous dataset.”
Input recipes
Fast market sample
{"destinations":["Lisbon"],"maxResultsPerDestination":10,"includeDetails":false}
Qualified multi-market list
{"destinations":["Berlin","Barcelona"],"maxResultsPerDestination":25,"includeDetails":true,"minimumRating":8.5,"minimumReviewCount":250}
Support
Use the Issues tab on the Actor page and include the run ID, destination, and expected result. Do not include credentials or private personal data.