Hotel Details Scraper - Address, Stars & Amenities avatar

Hotel Details Scraper - Address, Stars & Amenities

Pricing

from $0.88 / 1,000 results

Go to Apify Store
Hotel Details Scraper - Address, Stars & Amenities

Hotel Details Scraper - Address, Stars & Amenities

$1.35 per 1,000 results, no subscription. Extracts structured hotel data (name, description, website, image, telephone, email, street, city, region, postalCode, country, latitude and more) from any website that publishes schema.org markup. Paste URLs or crawl a site; get JSON, CSV or Excel.

Pricing

from $0.88 / 1,000 results

Rating

0.0

(0)

Developer

Rocketyard

Rocketyard

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Security

Limited permissions

Share

What is Hotel Details Scraper?

Hotel Details Scraper is a hotel scraper that extracts hotel data from any web page that publishes schema.org structured data (JSON-LD or microdata), which many websites add for Google rich results. Give it a list of URLs, or a start page plus crawling, and get back clean, normalized records. It reads that markup instead of the page layout, so one Actor works across many sites and keeps working through redesigns.

Use cases

  • Build a hotel directory or travel guide from brand websites
  • Track competitor hotels: star rating, room count, amenities, check-in times
  • Geocoded lodging lists for lead generation and market research

Why use Hotel Details Scraper?

  • Works on any website that publishes schema.org data (JSON-LD or microdata)
  • Clean, normalized JSON ready for spreadsheets, databases and AI/RAG pipelines
  • Pay only per result: no monthly rental, no minimums
  • Respects robots.txt and crawl-delay automatically
  • Lightweight HTTP extraction: fast and cheap, no browser needed

How it compares

Hotel scraperUsers (last 30 days)Successful runs (last 30 days)Price per 1,000 results
Google Hotels Scraper52977.7%$4.99
Booking.com Hotel Scraper – Prices, Room Rates & Reviews221100.0%$1.00
Booking.com Scraper: Hotel Prices, Ratings & Availability17992.4%$3.00
This Actornewevery release is tested on live pages first$1.35

Apify Store data from 2026-11-04, free-plan prices. Prices and stats change; check each listing before you compare.

How to scrape hotel data

  1. Click Try for free.
  2. Add one or more page URLs to Start URLs (for example https://www.langhamhotels.com/en/the-langham/london/).
  3. Optionally enable Crawl the website to discover more pages on the same site, and narrow it with Link pattern.
  4. Click Start, then download results as JSON, CSV or Excel, or read them through the API.

How do I check that a site publishes the data?

Run the Actor on one page: a page without the markup returns a free NO_STRUCTURED_DATA error item, so the check costs nothing beyond the start fee. You can also open the page's source and search for application/ld+json and Hotel, or paste the URL into the Schema Markup Validator.

Input

FieldJSON keyWhat it does
Start URLsstartUrlsPages with hotel data, e.g. https://www.langhamhotels.com/en/the-langham/london/. Each page needs schema.org Hotel markup (JSON-LD or microdata); a page without it returns a free error item. With Crawl the website on, the crawl starts from these pages.
Max resultsmaxItemsStop after this many records in total. This also caps what the run can charge for results.
Crawl the websitecrawlFollow links on the same site from the start URLs to find more pages. When off, only the start URLs are read.
Max pages to visitmaxPagesPerCrawlOnly used when crawling: the most pages to fetch in one run.
Link pattern (regex)linkPatternOnly used when crawling: follow only links matching this regular expression, e.g. /products/ (max 200 characters, no nested quantifiers).
Max concurrencymaxConcurrencyPages fetched in parallel. A polite delay between requests to the same host always applies.
Proxy configurationproxyConfigurationOptional. Leave empty unless a site blocks direct requests.

Input example

{
"startUrls": [
{
"url": "https://www.langhamhotels.com/en/the-langham/london/"
}
],
"maxItems": 100,
"crawl": false
}

Output example

A real record from the latest test run (langhamhotels.com) on 2026-11-06. Fields the page didn't publish are left out here; the Actor returns them as null.

{
"url": "https://www.langhamhotels.com/en/the-langham/london/",
"type": "Hotel",
"name": "The Langham, London",
"description": "The Langham, London is Europe's first grand hotel, opened in 1865. Located in the heart of the West End, it offers 380 rooms and suites, six dining venues including Palm Court and Artesian, the award-winning Chuan Spa, and 23 event venues spanning 2,509 square metres. Holder of Two Michelin Keys…",
"website": "https://www.langhamhotels.com/en/the-langham/london/",
"image": [
"https://www.langhamhotels.com/content/dam/langhamhotels/europe-middle-east/london/tllon-exterior-building-hero.jpg"
],
"telephone": "+44 (0) 20 7636 1000",
"email": "tllon.info@langhamhotels.com",
"street": "1c Portland Place, Regent Street",
"city": "London",
"region": "England",
"postalCode": "W1B 1JA",
"country": "GB",
"latitude": 51.5186,
"longitude": -0.1441,
"starRating": "5",
"priceRange": "$$$$",
"checkinTime": "15:00",
"checkoutTime": "12:00",
"numberOfRooms": 380,
"amenities": [
"Swimming Pool",
"Spa",
"Fitness Centre",
"Restaurant",
"Bar",
"Afternoon Tea",
"Event Venues",
"Concierge",
"Room Service",
"Valet Parking",
"Private Transfers"
],
"scrapedAt": "2026-11-06T07:03:24.899Z"
}

Output fields

FieldDescriptionFilled
urlPage the record was found onn/a
typeschema.org type (Hotel, LodgingBusiness, Resort, Hostel, Motel, BedAndBreakfast, Campground, VacationRental)always
namename100%
descriptiondescription100%
websitewebsite100%
imageimage100%
telephonetelephone100%
emailemail100%
streetstreet100%
citycity100%
regionregion100%
postalCodepostal code100%
countrycountry100%
latitudelatitude100%
longitudelongitude100%
starRatingstar rating50%
priceRangeprice range50%
checkinTimecheckin time100%
checkoutTimecheckout time100%
numberOfRoomsnumber of rooms50%
amenitiesamenities50%
ratingValuerating value0%
reviewCountreview count0%
scrapedAtISO timestamp of the extractionalways

"Filled" is the share of records with a value in the latest test run. Sites decide what they publish, so yours can differ. A field without a value comes back as null, never guessed.

Limits

  • Pages without schema.org Hotel markup return no record, only a free error item.
  • Markup added only by JavaScript in the browser is not read: the Actor reads the HTML the server sends.
  • Pages behind a login or paywall are not accessed, paths that robots.txt disallows are skipped, and protections are never bypassed.

Error items

When an input produces no data, the dataset gets one error item for it, so nothing is skipped silently. Error items are free: only result records are charged.

{
"url": "https://example.com/a-page-that-was-removed",
"input": "https://example.com/a-page-that-was-removed",
"error": {
"type": "https://rocketyard.dev/errors#not-found",
"title": "Not found",
"status": 404,
"detail": "HTTP 404",
"instance": "https://example.com/a-page-that-was-removed",
"code": "NOT_FOUND"
}
}

The error object follows RFC 9457 (Problem Details). Its type links to the explanation of the code, and status is the site's HTTP status when there was one. Filter on error.code to separate failures from data; it has its own column in CSV and Excel exports.

CodeMeaningRetry?
ROBOTS_DISALLOWEDThe site's robots.txt does not allow automated access to this URL (or to the page it redirects to), so it was not fetched.no
ROBOTS_UNREACHABLEThe site's robots.txt could not be loaded because of a server or network error. Under RFC 9309, the page is then not fetched.yes
PRIVATE_ADDRESSThe URL, or a redirect from it, points to a private or local network address. Only public websites are fetched.no
NOT_FOUNDThe page or source does not exist (HTTP 404 or 410).no
BLOCKEDThe site refused access (HTTP 401, 403 or 429) or answered with a bot-check or consent page instead of the content.sometimes
HTTP_ERRORThe site answered with another HTTP error: a server error (5xx) that persisted after retries, or an unexpected 4xx status.sometimes
TIMEOUTThe site did not answer in time, even after retries.yes
NETWORK_ERRORThe connection failed (DNS, TLS or a reset connection), even after retries.yes
WRONG_CONTENT_TYPEThe URL returned something the Actor doesn't read, such as a PDF or image instead of an HTML page, or a web page where an API response was expected.no
TOO_LARGEThe response exceeded the size limit (10 MiB for web pages, 48 MiB for API responses).no
PARSE_ERRORThe response could not be read (malformed HTML or JSON).sometimes
NO_STRUCTURED_DATAThe page loaded but has none of the data the Actor extracts: no schema.org data (JSON-LD or microdata), or, for the Shopify Actor, no public Shopify catalog on the site.no

Pricing

Pay per result: $1.35 per 1,000 hotel records, plus a tiny per-run start fee. There is no monthly rental, and you can cap spend per run with Maximum cost per run.

Integrations and API

  • Schedule: an Apify schedule runs it daily or weekly. Each run reads the pages as they are now, so compare runs to track changes.
  • Webhooks: an Apify webhook calls your URL when a run finishes, with the run's dataset ID in the payload.
  • Make: the Apify app's Run an Actor and Get Dataset Items modules, then any Make app, such as Google Sheets. Steps.
  • Zapier: the Finished Actor run trigger and the Fetch dataset items search. Zapier stops synchronous runs after 30 seconds, so use the trigger for anything larger than a small run. Steps.
  • n8n: Apify's community node (@apify/n8n-nodes-apify) or an HTTP Request node. Workflow to copy.
  • Code: the Apify API and the JavaScript and Python clients. Examples.
  • AI agents: Apify's MCP server exposes it as a tool to any MCP client. Setup.

FAQ

How much does it cost? You pay per result: $1.35 per 1,000 hotel records, plus a start fee of $0.00005 per run, with no subscription. Cap any run with Maximum cost per run.

Your Apify plan sets your discount tier (Platinum and Diamond are enterprise tiers):

TierPer 1,000 hotel records
Free$1.35
Bronze$1.35
Silver$1.08
Gold$0.88
Platinum$0.88
Diamond$0.88

How do I call it from the API? One request starts a run and returns its results, using your Apify API token:

$curl -X POST "https://api.apify.com/v2/acts/rocketyard~hotel-schema-scraper/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"startUrls":[{"url":"https://www.langhamhotels.com/en/the-langham/london/"}],"maxItems":100}'

How do I use it with AI agents? Connect Apify's MCP server at https://mcp.apify.com?tools=rocketyard/hotel-schema-scraper, and the agent can call this Actor as a tool.

Which websites does it work on? Any public page that embeds schema.org Hotel data. If a page has no such markup, the Actor returns a free error item with the code NO_STRUCTURED_DATA for it instead of a record.

Is it legal to scrape hotel data? This Actor only reads publicly available pages, obeys robots.txt and crawl-delay, does not log in or bypass protections, and does not collect people's profiles, personal emails or personal phone numbers. You are responsible for complying with each website's terms and with applicable laws (for example copyright and GDPR) for how you use the data.

What happens when a URL fails? If a start URL can't be read, is blocked or has no data, the dataset gets one error item for it with a code and the reason, and you are not charged for it. The other URLs in the run carry on.

Can it scrape JavaScript-only pages? It reads the server-rendered HTML, where structured data almost always lives. Pages that inject markup only via client-side JavaScript are not supported.

I need a field or site that is not supported. Open an issue on the Actor's Issues tab. Requests are reviewed regularly and drive new features.

You might also like

Your feedback

Found a bug, a site that doesn't work or a missing field? Open an issue on the Issues tab: issues are public, so the answer helps the next person too. If the Actor did the job, a review on this page helps other people find it.

Made by Rocketyard

Rocketyard builds pay-per-result scrapers for public web data, and every release is tested on live pages before it ships. Guides for this Actor: overview, REST API, MCP for AI agents and n8n, Make and Zapier.