# Qunar Hotel Reviews Scraper - 去哪儿 Ratings & Reviews (`factden/qunar-hotel-reviews-scraper`) Actor

Scrape Qunar (去哪儿) hotel reviews - guest ratings, review text, per-review sub-ratings, travel type, photos, owner replies and reviewer data, with LLM-ready markdown.

- **URL**: https://apify.com/factden/qunar-hotel-reviews-scraper.md
- **Developed by:** [Factden](https://apify.com/factden) (community)
- **Categories:** Travel, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 reviews

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/actors/running/actors-in-store.md#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

## Qunar Hotel Reviews Scraper - 去哪儿 Ratings, Reviews & Sub-scores (August 2026)

**Qunar Hotel Reviews Scraper** extracts guest reviews from **Qunar (去哪儿)**, the China-market travel
brand in the Trip.com Group, into clean JSON, CSV or Excel. It is the **only Qunar review scraper on
Apify**: paste a hotel URL and get guest ratings, per-review sub-scores, review text, travel type, photos,
owner replies, sentiment and reviewer data, each with an LLM-ready markdown field. No login, no API key, no
code required.

> ⭐ **Found this useful?** Please rate and bookmark the actor. It helps other China-market researchers find it.

> **From $4 per 1,000 reviews** (dropping to $3 with volume) plus a small per-run start fee. New Apify
> accounts get free platform credit, enough to validate the scraper end to end before any real spend.

**Contents**: [What's different](#whats-different) · [What data can I extract?](#what-data-can-i-extract) ·
[Why scrape Qunar reviews?](#why-scrape-qunar-reviews) · [Step by step](#how-to-scrape-qunar-reviews-step-by-step) ·
[Input](#input) · [Output](#output) · [Pricing](#pricing) · [Qunar vs other scrapers](#qunar-vs-other-review-scrapers) ·
[Schedule](#run-on-a-schedule) · [AI & RAG](#ai-agents--rag) · [GDPR](#data--gdpr) · [FAQ](#faq) ·
[Related actors](#related-actors-by-factden) · [Changelog](#changelog) · [Support](#support)

***

### What's different

Qunar runs one of the largest Chinese-language hotel review systems, and **no other Apify actor covers it.**
This scraper is built for it, so you get review data you cannot get from Trip.com, Ctrip or Western OTA
scrapers:

- **Everything the Qunar page shows.** Qunar displays reviews written natively on Qunar plus reviews it
  aggregates from Ctrip, undifferentiated. You get them all, and every row is tagged with its origin
  (`reviewSource`, `isCtripImport`) so you always know where each review came from.
- **Per-review sub-ratings.** Native reviews carry service, location, facilities, cleanliness and breakfast
  scores per review, not just a hotel-level average. Most OTA scrapers only give the overall star.
- **Domestic-China coverage.** Qunar's audience is mainland domestic travelers, the corpus that Trip.com's
  international listings and Western OTAs largely miss.
- **LLM-ready markdown.** Each review carries a self-contained `markdownContent` block, ready to embed
  straight into a vector database. No other hotel-review actor ships this.
- **A paired Hotels dataset** with the hotel's overall score, recommend rate and sub-scores, one summary
  row per hotel.

**No-setup checklist:** no login or account, Apify Proxy bundled (datacenter by default), form-based input
in the Apify Console.

### What data can I extract?

| Field group | Fields |
|-------------|--------|
| Identity | `reviewId`, `hotelId`, `hotelName`, `hotelCity`, `hotelUrl`, `url`, `source`, `reviewSource`, `isCtripImport` |
| Timing | `submittedAt`, `checkInMonth` |
| Ratings | `overallRating` (1-5), `ratingLabel`, `subRatings`, `sentiment` (POSITIVE / NEGATIVE / NEUTRAL) |
| Content | `reviewTitle`, `reviewText`, `travelType`, `roomName`, `language` |
| Media | `imagesCount`, `images` |
| People | `reviewer` (name, userId, avatar, isAnonymous, identityLevel), `ownerResponse` |
| AI | `markdownContent` (LLM-ready) |

Ratings are on Qunar's native **1 to 5** scale, matching the website. Reviews are Chinese-language and are
returned as written (Qunar provides no translation).

### Why scrape Qunar reviews?

- **Reputation and revenue teams** tracking guest sentiment on China's price-led OTA, the domestic market
  Western tools do not cover.
- **Market researchers** comparing Qunar reception against Ctrip, Trip.com and the wider field.
- **AI and RAG builders** who need clean, per-review Chinese-language markdown for question-answering.
- **Data teams** feeding review pipelines, dashboards or sentiment models.

### How to scrape Qunar reviews, step by step

1. Open the input form.
2. Paste one or more Qunar hotel URLs into **Qunar hotel URLs**, for example
   `https://hotel.qunar.com/cn/nanjing/dt-17/` or `https://touch.qunar.com/hotelcn/nanjing/dt-17`.
   You can also add composite IDs like `nanjing_17` under **Hotel IDs**.
3. Optionally set `maxReviews` per hotel, or a `fromDate` cutoff for incremental syncs.
4. Click **Start**. Download results as JSON, CSV or Excel, or pull them from the API.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `startUrls` | array | Qunar hotel page URLs. Combined with `hotelIds`, up to 100 hotels per run. |
| `hotelIds` | array | Optional composite IDs in `{city}_{id}` form, e.g. `nanjing_17`. A bare number is rejected (it has no city). |
| `maxReviews` | integer | Max reviews per hotel, newest first. Qunar caps accessible reviews at 10,000. Default 200. |
| `fromDate` | string | Keep reviews submitted on or after this `YYYY-MM-DD` date. Reviews are read newest-first, so this stops the crawl at the date boundary (fast incremental syncs) instead of scanning the whole history. |
| `proxyConfiguration` | object | Apify Proxy. Datacenter by default. |

Rating filtering is done downstream, not in the input: Qunar's endpoint offers no server-side rating sort,
so every row carries `overallRating` (1-5) and `sentiment` for you to sort or filter after export.

#### Example input

```json
{
  "startUrls": ["https://hotel.qunar.com/cn/nanjing/dt-17/"],
  "maxReviews": 50
}
```

### Output

Two datasets: **Reviews** (one row per review, with `markdownContent`) and **Hotels** (one summary row per
hotel). Timestamps (`submittedAt`) are in Qunar's own **China local time (UTC+8)**, matching qunar.com, and
the `fromDate` filter keys on that local date. (The Apify Console table converts these naive times to UTC for
display, so an early-morning review can show on the previous day there; the stored value is authoritative.)

#### Sample review row

```json
{
  "reviewId": "2856615368",
  "hotelId": 17,
  "hotelName": "南京维景国际酒店",
  "hotelCity": "nanjing",
  "url": "http://review.qunar.com/h/nanjing_17/2856615368",
  "source": "qunar",
  "reviewSource": "qunar_iphone",
  "isCtripImport": false,
  "submittedAt": "2026-08-26T21:55:09",
  "checkInMonth": "2026-08",
  "reviewer": { "name": "p***2", "userId": "12345", "avatar": "https://img1.qunarzz.com/...", "isAnonymous": false, "identityLevel": 0 },
  "travelType": "家庭出行",
  "roomName": "四人家庭房",
  "overallRating": 5,
  "ratingLabel": "非常好",
  "subRatings": ["Service: 5", "Location: 5", "Facilities: 5", "Breakfast: 5"],
  "reviewTitle": "前台服务好,大厅宽敞",
  "reviewText": "前台小吴服务好，大厅宽敞...",
  "sentiment": "POSITIVE",
  "imagesCount": 2,
  "images": ["202608/26/AbC...", "202608/26/DeF..."],
  "ownerResponse": null,
  "markdownContent": "# 南京维景国际酒店 review (Qunar)\n\n**Rating:** 5/5 ...",
  "extractedAt": "2026-08-26T15:08:35"
}
```

### Pricing

Pay per result, on Apify's pay-per-event model. Both events carry automatic volume discounts that kick in as
your Apify plan scales:

| Event | Free / Bronze | Silver | Gold and above |
|-------|---------------|--------|----------------|
| Review (per review row) | $0.004 | $0.0035 | $0.003 |
| Actor start (once per run) | $0.01 | $0.008 | $0.006 |

**Effective rate: $4 per 1,000 reviews, dropping to $3 per 1,000 at higher tiers.** Reviews removed by your
`fromDate` filter are not charged.

### Qunar vs other review scrapers

There is no other Qunar scraper on Apify, so the honest comparison is against what general OTA and review
scrapers can and cannot reach:

| Capability | This actor | Trip.com / Ctrip scrapers | Generic review scrapers |
|------------|:----------:|:-------------------------:|:-----------------------:|
| Qunar (去哪儿) native reviews | Yes | No | No |
| Per-review sub-ratings | Yes | Hotel-level only | Rarely |
| Domestic-China corpus | Yes | Partial | No |
| Owner responses + sentiment | Yes | Sometimes | Sometimes |
| LLM-ready markdown field | Yes | No | No |
| Paired hotel-summary dataset | Yes | Sometimes | No |

### Run on a schedule

Use Apify **Schedules** to run this actor daily or weekly. Combine a schedule with `fromDate` set to your last
sync date so each run returns only new reviews, keeping incremental costs low.

### AI agents & RAG

Every review row carries a self-contained `markdownContent` block (rating, sub-scores, travel type, body and
the hotel's reply), and the **AI ingest** dataset view puts it first, so you can push results straight into a
vector store with no reformatting.

**Does it work with MCP and AI agents?** Yes. The actor runs through the Apify API and the Apify MCP server,
so an AI agent can call it with a hotel URL and get structured reviews back.

### Data & GDPR

This actor collects publicly displayed hotel reviews. Reviewer names on Qunar are already masked or
pseudonymous and are passed through as shown; you are responsible for using the data in line with applicable
laws (including GDPR where relevant) and Qunar's terms. Reviews are Chinese-language; the source does not
provide translations.

### FAQ

**Is it legal to scrape Qunar reviews?** Scraping publicly available data is generally lawful, but how you use
it is regulated. Reviews here are public and reviewer names are already pseudonymized. Use the data in line
with GDPR and Qunar's terms. See Apify's guide: https://blog.apify.com/is-web-scraping-legal/

**Does Qunar have a public reviews API?** No. Qunar offers no supported reviews API, and the reviews are not in
the page HTML (they load from a separate guarded call). This actor is the no-code way to get them as structured
data.

**Is Qunar the same as Ctrip or Trip.com?** Qunar (去哪儿) is a separate brand in the same Trip.com Group. It is
the price-led, domestic-China site, and it shows both native Qunar reviews and reviews aggregated from Ctrip.
This actor returns both, tagged by origin.

**Can I use this actor with the Apify API?** Yes. Start runs and pull the dataset from the Apify API in any
language, or use the JS/Python Apify client. Every run writes a Reviews dataset and a Hotels dataset.

**Can I use it through an MCP server?** Yes. The actor is callable from the Apify MCP server, so Claude,
ChatGPT and other MCP-aware agents can run it with a hotel URL and receive structured review JSON, including
the LLM-ready `markdownContent` field.

**Can I integrate it with Make, Zapier, n8n or Google Sheets?** Yes. Use Apify's integrations or webhooks to
push new reviews into Make, Zapier, n8n, Google Sheets, Slack or your database on every run.

**How do I scrape only new Qunar reviews by date?** Set `fromDate` to your last sync date. Because reviews are
read newest-first, the actor stops at that boundary instead of scanning the whole history, so daily syncs stay
cheap.

**Are the reviews translated?** No. Qunar serves Chinese-language reviews and provides no machine translation,
so `reviewText` is the original Chinese. Run it through your own translation step if you need English.

### Related actors by FactDen

- [Trip.com & Ctrip Reviews Scraper](https://apify.com/factden/ctrip-trip-reviews-scraper)
- [Agoda Hotel Reviews Scraper](https://apify.com/factden/agoda-hotel-reviews-scraper)
- [Google Hotels Scraper](https://apify.com/factden/google-hotels-scraper)
- [Expedia Hotel Reviews Scraper](https://apify.com/factden/expedia-hotel-reviews-scraper)
- [Hotels.com Reviews Scraper](https://apify.com/factden/hotels-com-reviews-scraper)
- [MakeMyTrip Scraper](https://apify.com/factden/makemytrip-scraper)
- [Airbnb Data Scraper](https://apify.com/factden/airbnb-data-scraper)

### Support

Open the **Issues** tab on this actor's Apify page (preferred), or email support@factden.com for private,
billing or partnership questions.

### Changelog

- **2026-08 (v1.0.4):** Tiered volume pricing (Review $4 to $3 per 1,000; start fee tiered). Curated Overview
  dataset view; documented `submittedAt` as Qunar China local time.
- **2026-08 (v1.0):** Initial release. Native + Ctrip-imported Qunar reviews, per-review sub-ratings, per-review
  permalink, sentiment, photos, owner replies, hotel summary dataset, and LLM-ready markdown.

# Actor input Schema

## `startUrls` (type: `array`):

Paste one or more Qunar (去哪儿) hotel page URLs. Copy them straight from your browser, for example `https://hotel.qunar.com/cn/nanjing/dt-17/` or `https://touch.qunar.com/hotelcn/nanjing/dt-17`. Each URL is resolved to its internal `{city}_{id}` key automatically. Add at least 1 hotel; up to 100 hotels per run across this field and Hotel IDs combined.

## `hotelIds` (type: `array`):

Already know the hotel's ID? Add it here in `{city}_{id}` form, e.g. `nanjing_17`. This is handy for API and AI-agent callers that hold the ID directly. A bare number like `17` is rejected because it has no city prefix — always include the city. Counts toward the same 100-hotel-per-run cap as the URLs above.

## `maxReviews` (type: `integer`):

How many reviews to collect for each hotel, newest first. Qunar exposes at most 10,000 reviews per hotel. Lower this to keep runs fast and cheap; raise it for a full history pull.

## `fromDate` (type: `string`):

Keep only reviews submitted on or after this date (YYYY-MM-DD). Because reviews are read newest-first, the scraper stops the moment it reaches an older review instead of scanning the whole history — perfect for a daily or weekly sync that only fetches what's new. Leave blank to collect the most recent reviews up to your limit.

## `proxyConfiguration` (type: `object`):

Route requests through Apify Proxy. The datacenter default works well for Qunar (its review origin has no CDN), so most users can leave this untouched. Switch to residential only if you see blocks.

## Actor input object example

```json
{
  "startUrls": [
    "https://hotel.qunar.com/cn/nanjing/dt-17/"
  ],
  "hotelIds": [],
  "maxReviews": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

Per-review rows from Qunar (去哪儿), native reviews plus (optionally) reviews aggregated from Ctrip, on Qunar's 1–5 rating scale. Includes per-review sub-ratings, a per-review permalink, a reviewer object, an ownerResponse object, travel type, photos, POSITIVE/NEGATIVE sentiment, and an LLM-ready markdown view.

## `hotels` (type: `string`):

Per-hotel summary rows. One row per hotel scraped, with aggregate rating (1–5), recommend rate, total review count and extraction completeness.

# 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 = {
    "startUrls": [
        "https://hotel.qunar.com/cn/nanjing/dt-17/"
    ],
    "hotelIds": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("factden/qunar-hotel-reviews-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 = {
    "startUrls": ["https://hotel.qunar.com/cn/nanjing/dt-17/"],
    "hotelIds": [],
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://hotel.qunar.com/cn/nanjing/dt-17/"
  ],
  "hotelIds": []
}' |
apify call factden/qunar-hotel-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,factden/qunar-hotel-reviews-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3Z0E5vb9qkYYrek6d/builds/7MwFj2EDRSHFsJl52/openapi.json
