# Priceline Hotel Scraper (`mrbridge/priceline-hotel-scraper`) Actor

Extract hotel prices, ratings, amenities, star levels and deals from Priceline.com. Search any destination with date, room and guest filters; sort by price, rating or stars; return up to 500 results per search. Export data, run via API, schedule runs, or integrate with other tools.

- **URL**: https://apify.com/mrbridge/priceline-hotel-scraper.md
- **Developed by:** [MrBridge](https://apify.com/mrbridge) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 8 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Priceline Hotel Scraper

Scrape hotel listings from [Priceline.com](https://www.priceline.com) and extract structured data: prices, guest ratings, amenities, star levels, and deals. No Priceline login or API key needed. Just provide a destination and travel dates.

### What does this scraper do?

Priceline Hotel Scraper searches Priceline.com like a regular user and extracts all visible hotel information from the search results page. It returns structured JSON, one row per hotel, that you can load into a spreadsheet, a database, or a price-monitoring script.

Use it to:

- **Compare hotel prices** across destinations and date ranges
- **Monitor price drops** by scheduling periodic runs
- **Build travel datasets** for research or analytics
- **Power booking tools** with real-time Priceline data
- **Track competitor pricing** for hospitality businesses

### Which Priceline scraper should I use?

| Need | Best scraper | What it does |
|------|-----------|--------------|
| **Live hotel prices & deals** | **Priceline Hotel Scraper** (this one) | Search by destination and dates, get prices, amenities, availability |
| **Hotel reviews, ratings & details** | [Priceline Hotel Reviews Scraper](https://apify.com/mrbridge/priceline-hotel-reviews-scraper?fpr=mrbridge) | Guest reviews, scores, category ratings, GPS, descriptions |

**Tip**: use this scraper to find hotels and compare rates, then use the Reviews scraper to get in-depth guest reviews for your shortlisted hotels.

### What data can you extract?

Each hotel listing includes the following fields:

| Field | Description | Example |
|-------|-------------|---------|
| `name` | Hotel name | "The Plaza Hotel" |
| `url` | Direct Priceline link | `https://www.priceline.com/relax/at/700012345` |
| `address` | City, state, country | "New York, NY, US" |
| `neighborhood` | Area or district | "Midtown West" |
| `latitude` / `longitude` | GPS coordinates | `40.7568`, `-73.9931` |
| `timezone` | IANA timezone | "America/New\_York" |
| `brand` / `brandOwner` | Brand and parent group | "Doubletree" / "Hilton Worldwide" |
| `starLevel` | Star rating (1-5) | `4` |
| `guestRating` | Guest score (0-10) | `8.8` |
| `reviewCount` | Number of reviews | `2451` |
| `ratingCategory` | Rating label | "Excellent" |
| `pricePerNight` | Nightly rate | `189` |
| `originalPrice` | Price before discount | `245` |
| `totalPrice` | Total stay cost | `567` |
| `grandTotal` | Grand total including taxes and fees | `612` |
| `savingsPercentage` | Discount as percentage off | `25` |
| `urgencyMessaging` | Scarcity banner | "We only have a few rooms left at $270" |
| `currency` | Price currency (converted if selected) | "EUR" |
| `originalCurrency` | Currency before conversion | "USD" |
| `exchangeRate` | Exchange rate used | `0.92` |
| `discount` | Savings amount | "$56 Off" |
| `amenities` | Hotel amenities | \["Free Internet Access", "Restaurant", ...] |
| `highlights` | Booking perks | \["Free Cancellation", "Pay Later Available"] |
| `hotelThemes` | Travel themes | \["Family", "Business"] |
| `tags` | Priceline badges | \["Top Booked", "Luxury"] |
| `imageUrl` | Hotel photo URL | `https://...` |
| `checkIn` / `checkOut` | Search dates | "2026-06-20" |

### How to scrape Priceline hotels

1. Go to the [Priceline Hotel Scraper](https://apify.com/mrbridge/priceline-hotel-scraper?fpr=mrbridge) page on Apify Store.
2. Click **Try for free**.
3. Enter your **destination** (e.g. "New York, NY", "Paris, France").
4. Select your **check-in** and **check-out** dates using the day, month, and year dropdowns.
5. Optionally adjust **rooms**, **adults**, **filters** (star level, guest rating, price range) and **sort order**.
6. Click **Start**.
7. When the run finishes, download your results as **JSON**, **CSV**, or **Excel** from the Dataset tab.

### About this Actor

Built and maintained by **MrBridge**. See [Priceline scraper details](https://mr-bridge.com/solutions/priceline-hotel-scraper) or the other [MrBridge scrapers](https://mr-bridge.com/scrapers). For how sites defend against scraping, read [Inside anti-bot systems](https://mr-bridge.com/articles/anti-bot-systems-technical-deep-dive).

### Input configuration

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `destination` | string | - | City or area name (required) |
| `checkInDay` | select | 20 | Check-in day (1-31) |
| `checkInMonth` | select | June | Check-in month (January-December) |
| `checkInYear` | select | 2026 | Check-in year (2026-2035) |
| `checkOutDay` | select | 23 | Check-out day (1-31) |
| `checkOutMonth` | select | June | Check-out month (January-December) |
| `checkOutYear` | select | 2026 | Check-out year (2026-2035) |
| `rooms` | integer | 1 | Number of rooms (1-9) |
| `adults` | integer | 2 | Adults per room (1-9) |
| `hotelStarLevel` | select | Any | Minimum star rating (2+, 3+, 4+, 5) |
| `guestRating` | select | Any | Minimum guest rating (6+, 7+, 8+, 9+) |
| `priceMin` | integer | - | Minimum price per night (in selected currency) |
| `priceMax` | integer | - | Maximum price per night (in selected currency) |
| `currency` | select | As Scraped | Target currency for prices (USD, EUR, GBP, CAD, CHF, AUD, JPY, CNY, INR, BRL, MXN, SEK, NOK, DKK) |
| `sortBy` | select | Recommended | Sort order (Price Low/High, Guest Rating, Star Rating) |
| `maxResults` | integer | 50 | Maximum hotels to return (1-500) |

#### Input example

```json
{
  "destination": "New York, NY",
  "checkInDay": "20",
  "checkInMonth": "6",
  "checkInYear": "2026",
  "checkOutDay": "23",
  "checkOutMonth": "6",
  "checkOutYear": "2026",
  "rooms": 1,
  "adults": 2,
  "hotelStarLevel": "4",
  "sortBy": "price_low",
  "maxResults": 30
}
```

### Output example

```json
{
  "hotelId": "700012345",
  "name": "The Westin New York at Times Square",
  "url": "https://www.priceline.com/relax/at/700012345",
  "neighborhood": "Midtown West",
  "address": "New York, NY, US",
  "starLevel": 4,
  "brand": "Westin",
  "brandOwner": "Marriott International",
  "latitude": 40.7568,
  "longitude": -73.9931,
  "timezone": "America/New_York",
  "hotelThemes": ["Business", "Family"],
  "tags": ["Top Booked"],
  "guestRating": 8.2,
  "reviewCount": 3120,
  "ratingCategory": "Excellent",
  "pricePerNight": 199,
  "originalPrice": 259,
  "totalPrice": 597,
  "grandTotal": 651,
  "savingsPercentage": 25,
  "urgencyMessaging": "We only have a few rooms left at $199",
  "currency": "USD",
  "originalCurrency": "USD",
  "exchangeRate": null,
  "discount": "$60 Off",
  "priceIncludesFees": true,
  "amenities": ["Free Internet Access", "Restaurant", "Fitness Center"],
  "highlights": ["Free Cancellation", "Pay Later Available"],
  "isExpressDeal": false,
  "imageUrl": "https://images.priceline.com/...",
  "imageCount": 25,
  "scrapedAt": "2026-04-08T22:04:36.000Z",
  "searchDestination": "New York, NY",
  "checkIn": "2026-06-20",
  "checkOut": "2026-06-23"
}
```

### How much does it cost?

Priceline Hotel Scraper uses a **Pay per result** pricing model at **$0.005 per hotel result**. You only pay for the hotel listings actually returned. If the search fails or returns no results, there's no charge.

| Results | Cost |
|---------|------|
| 10 | $0.05 |
| 50 | $0.25 |
| 100 | $0.50 |
| 500 | $2.50 |

Apify platform usage costs are included. There are no separate compute charges.

**Free tier**: Apify gives new users $5 of free monthly credits, enough for ~1,000 hotel results.

### Performance

- **Speed**: results returned in 15-25 seconds per search
- **Reliability**: automatic retries with exponential backoff on transient errors
- **Memory**: 256 MB default, no configuration needed

### Tips

- **Schedule runs** to track price changes over time. Priceline prices fluctuate daily.
- **Use filters** to narrow results and get more relevant listings (e.g. 4+ stars under $200/night).
- **Sort by price** (`price_low`) to find the best deals quickly.
- **Increase `maxResults`** up to 500 to pull more listings for a destination.
- **Convert prices** to your local currency (EUR, GBP, and more) using the `currency` option. Price filters apply after conversion.
- **Export as CSV** for easy import into Google Sheets or Excel.

### Is it legal to scrape Priceline?

Web scraping of publicly available data is generally considered legal, as confirmed by the [2022 US Ninth Circuit ruling in hiQ Labs v. LinkedIn](https://en.wikipedia.org/wiki/HiQ_Labs_v._LinkedIn). This scraper only accesses publicly visible hotel search results, the same information any visitor can see on Priceline.com without logging in. No personal data is collected.

Always review Priceline's Terms of Service and ensure your use case complies with applicable laws in your jurisdiction.

### FAQ

#### Does it bypass Priceline login or account walls?

No. The scraper only accesses pages visible to anonymous visitors. Pro Rewards member-only prices, signed-in upgrades and account-bound deals are not extracted because they aren't publicly accessible.

#### Can I monitor price changes over time?

Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules?fpr=mrbridge) to run the scraper on any interval (hourly, daily, weekly). Each run pushes a fresh snapshot to the dataset with the `scrapedAt` timestamp, so you can compare prices across time.

#### Which currencies are supported?

15 currencies: USD, EUR, GBP, CAD, CHF, AUD, JPY, CNY, INR, BRL, MXN, SEK, NOK, DKK. Set the `currency` input to convert all prices. Leave it empty (default) to keep the original scraped currency, usually USD.

#### Does it return Express Deals?

Yes, with the `isExpressDeal: true` flag on results. Note that Express Deals have opaque pricing on Priceline (the exact hotel is hidden until booking), so the `name` field may be a generic descriptor rather than the actual hotel name.

#### How fresh is the data?

Real-time. Each run hits Priceline.com live and returns prices as currently advertised. There is no caching between runs.

#### What happens if Priceline blocks or rate-limits the request?

The scraper retries with exponential backoff. If blocking persists, the run exits gracefully (always SUCCEEDED) with an error record saved in the key-value store. You are not charged for failed extractions.

### Integrate into your workflow

#### API integration

Call this actor programmatically using the [Apify API](https://docs.apify.com/api/v2?fpr=mrbridge).

**cURL:**

```bash
curl "https://api.apify.com/v2/acts/mrbridge~priceline-hotel-scraper/run-sync-get-dataset-items" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -d '{
    "destination": "New York, NY",
    "checkInDay": "20",
    "checkInMonth": "6",
    "checkInYear": "2026",
    "checkOutDay": "23",
    "checkOutMonth": "6",
    "checkOutYear": "2026",
    "maxResults": 30
  }'
```

**Node.js:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('mrbridge/priceline-hotel-scraper').call({
    destination: 'New York, NY',
    checkInDay: '20', checkInMonth: '6', checkInYear: '2026',
    checkOutDay: '23', checkOutMonth: '6', checkOutYear: '2026',
    maxResults: 30,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Found ${items.length} hotels`);
```

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("mrbridge/priceline-hotel-scraper").call(run_input={
    "destination": "New York, NY",
    "checkInDay": "20", "checkInMonth": "6", "checkInYear": "2026",
    "checkOutDay": "23", "checkOutMonth": "6", "checkOutYear": "2026",
    "maxResults": 30,
})

for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{hotel['name']} - ${hotel['pricePerNight']}/night - {hotel['guestRating']}★")
```

#### Scheduled runs: track price changes

Set up a schedule in the Apify Console to monitor hotel prices over time:

1. Create a **Task** with your saved input (destination, dates, filters)
2. Go to the **Schedules** tab → Create schedule
3. Set a cron expression, e.g. `0 8 * * *` for daily at 8 AM UTC

#### No-code integrations

| Platform | What it does | Setup |
|----------|-------------|-------|
| **[Google Sheets](https://docs.apify.com/platform/integrations?fpr=mrbridge)** | Export hotel listings to a Google Sheet | Integrations tab → Google Drive |
| **[Zapier](https://docs.apify.com/platform/integrations/zapier?fpr=mrbridge)** | Trigger Zaps on run completion → push to 5,000+ apps | Apify Zapier connector |
| **[Make](https://docs.apify.com/platform/integrations/make?fpr=mrbridge)** | Visual workflows: scrape → filter → notify | Apify Make module |
| **[n8n](https://docs.apify.com/platform/integrations/n8n?fpr=mrbridge)** | Self-hosted automation with Apify trigger | Apify n8n node |

***

### Support & feedback

- **Issues?** Open a ticket on [Apify Console](https://console.apify.com) or contact the author.
- **Feature requests?** Suggestions welcome. Reach out via the Apify platform.
- **Updates**: this actor is actively maintained and updated to handle Priceline site changes.

# Actor input Schema

## `destination` (type: `string`):

City or area name (e.g. 'New York, NY', 'Paris, France').

## `checkInDay` (type: `string`):

Check-in day of the month.

## `checkInMonth` (type: `string`):

Check-in month.

## `checkInYear` (type: `string`):

Check-in year.

## `checkOutDay` (type: `string`):

Check-out day of the month.

## `checkOutMonth` (type: `string`):

Check-out month.

## `checkOutYear` (type: `string`):

Check-out year.

## `rooms` (type: `integer`):

Number of hotel rooms.

## `adults` (type: `integer`):

Number of adult guests per room.

## `hotelStarLevel` (type: `string`):

Minimum hotel star rating.

## `guestRating` (type: `string`):

Minimum guest rating threshold.

## `priceMin` (type: `integer`):

Minimum price per night. Applied in the selected currency (or scraped currency if none selected).

## `priceMax` (type: `integer`):

Maximum price per night. Applied in the selected currency (or scraped currency if none selected).

## `currency` (type: `string`):

Convert prices to a specific currency. Leave empty to keep the original scraped currency (usually USD).

## `sortBy` (type: `string`):

Sort order for hotel results.

## `maxResults` (type: `integer`):

Maximum number of hotels to return.

## Actor input object example

```json
{
  "destination": "New York, NY",
  "checkInDay": "20",
  "checkInMonth": "6",
  "checkInYear": "2026",
  "checkOutDay": "23",
  "checkOutMonth": "6",
  "checkOutYear": "2026",
  "rooms": 1,
  "adults": 2,
  "hotelStarLevel": "",
  "guestRating": "",
  "currency": "",
  "sortBy": "recommended",
  "maxResults": 50
}
```

# Actor output Schema

## `hotelResults` (type: `string`):

Structured hotel listings with prices, ratings, amenities and booking details.

## `rawHtml` (type: `string`):

Raw Priceline HTML response saved for debugging and parser development.

## `runError` (type: `string`):

Structured error data when the scraping run fails (error message, type, input, timestamp).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "destination": "New York, NY"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrbridge/priceline-hotel-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "destination": "New York, NY" }

# Run the Actor and wait for it to finish
run = client.actor("mrbridge/priceline-hotel-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "destination": "New York, NY"
}' |
apify call mrbridge/priceline-hotel-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=mrbridge/priceline-hotel-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JTZnBzxdNG80ZRlA8/builds/uw1sLDyhcGV1169EY/openapi.json
