# Mafengwo 马蜂窝 Tours & Tickets Scraper | Prices & Units Sold (`zen-studio/mafengwo-tours-tickets-scraper`) Actor

Collect every tour, ticket, pass and day trip a Chinese destination sells on Mafengwo (马蜂窝): prices in yuan, the seller, the attraction IDs each product covers, and sales counts and buyer ratings where the listing carries them. Paste a link, an ID or a city name.

- **URL**: https://apify.com/zen-studio/mafengwo-tours-tickets-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.29 / 1,000 products

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Mafengwo Tours & Tickets Scraper

<a href="https://console.apify.com/actors/UNOuFqDA5TB6RBTjo/input"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/mafengwo-tours-tickets-hero-beijing-20260921-v2.png" alt="Mafengwo 马蜂窝 tours and tickets: every tour and ticket Beijing sells, the whole catalogue and not the shop window" width="100%"></a>

Collect the **tours, tickets, passes and day trips sold on Mafengwo (马蜂窝)** for any Chinese destination. Paste a destination link, a destination ID or a Chinese city name, and export China attraction tickets, day trips and package tours with their prices in yuan, the sellers behind them, sales counts, buyer ratings and the attractions each product covers.

- **The whole catalogue, not the shop window:** an attraction's own page shows a short list of what is on sale there. This collects the destination's full inventory. Of the 100 products in Wuhan's catalogue that admit to the Yellow Crane Tower, 14 appear anywhere on that attraction's own page.
- **Real commercial signal:** the exact number sold, the buyer rating and review count, the review the listing quotes, the seller behind each product, and any coupon on the price. Sellers fill these in unevenly: of 1,955 products measured across two city catalogues, 35% carried a sales figure and 22% a rating.
- **Every kind of product:** tickets and passes, half-day and day trips, multi-day and package tours, private and custom trips, local experiences, guided services, transfers and cruises.
- **Joins onto your place data:** each product lists the place IDs it admits to, so a city ticket lines up with the attraction it opens in [Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper). In Wuhan's 160-product catalogue, 145 carried at least one place ID; the rest belong to no attraction, such as custom trips and transfers.
- **Search the whole of China:** add a term such as 温泉 and get matching products from every destination, not just one city.

**Measured on the platform:** one uncapped run over Beijing saved **1,861 products with no duplicates in 7 minutes 51 seconds**, peaking at 59 MiB of the 512 MB default. That is a real run of this actor on Apify, not a local benchmark, and it is not a guaranteed runtime: available products and timings vary by destination and by day. Hero artwork illustrates the Mafengwo app and carries real collected listings; it is not a picture of your results.

<a href="https://console.apify.com/actors/UNOuFqDA5TB6RBTjo/input"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/mafengwo-tours-tickets-cta-try-10-20260921-v1.png" alt="Try 10 results in Apify Console" width="272" height="56"></a>

[Open in Apify Console](https://console.apify.com/actors/UNOuFqDA5TB6RBTjo/input) and paste this small first input. Charges apply per saved product and per start. Free-plan access: 200 products per run, across 25 runs. This sample does not reproduce the Beijing measurement.

```json
{
  "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html",
  "maxProducts": 10
}
```

Built by **Zen Studio**, also behind [Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper), [Mafengwo Reviews](https://apify.com/zen-studio/mafengwo-reviews-scraper) and [Ctrip Hotel Prices](https://apify.com/zen-studio/ctrip-hotel-prices-scraper).

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#FFEF2E;border:none;border-radius:4px 4px 0 0"><span style="color:#1C1917;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio &middot; China Travel &amp; Places</span><span style="color:#38310D;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;What a destination sells, and what travelers say about it</span></td>
</tr>
<tr>
<td style="padding:12px 14px;border:1px solid #E8DF89;border-top:none;border-right:none;border-radius:0 0 0 4px;background:#FFF296;vertical-align:top;width:25%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-05ZMu4ciljVfMpct7-5SbFiiNTep-mafengwo-scraper-logo.jpg" alt="Mafengwo" width="20" height="20" style="vertical-align:middle">&nbsp;&nbsp;<span style="color:#1C1917;font-weight:700;font-size:13px">Tours &amp; Tickets</span></span><br><span style="color:#594700;font-size:12px;font-weight:600">&#10148; You are here</span></td>
<td style="padding:12px 14px;border:1px solid #E8DF89;border-top:none;border-right:none;background:#FFF9D6;vertical-align:top;width:25%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-05ZMu4ciljVfMpct7-5SbFiiNTep-mafengwo-scraper-logo.jpg" alt="" width="20" height="20" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/mafengwo-poi-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Places</a></span><br><span style="color:#594700;font-size:12px">Attractions, hours, ratings</span></td>
<td style="padding:12px 14px;border:1px solid #E8DF89;border-top:none;border-right:none;background:#FFF9D6;vertical-align:top;width:25%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-05ZMu4ciljVfMpct7-5SbFiiNTep-mafengwo-scraper-logo.jpg" alt="" width="20" height="20" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/mafengwo-reviews-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Reviews</a></span><br><span style="color:#594700;font-size:12px">Traveler opinions and photos</span></td>
<td style="padding:12px 14px;border:1px solid #E8DF89;border-top:none;border-radius:0 0 4px 0;background:#FFF9D6;vertical-align:top;width:25%"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-kF3YqhAJErv0QJSx1-cYCSbByQ5P-dolphin-logo-1000.png" alt="" width="20" height="20" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/zen-studio/ctrip-hotel-prices-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Ctrip Hotel Prices</a></span><br><span style="color:#594700;font-size:12px">Room rates by date</span></td>
</tr>
</table>

#### Copy to your AI assistant

```text
zen-studio/mafengwo-tours-tickets-scraper on Apify collects the tours, tickets, passes, day trips, local experiences, guided services and transfers sold for a Chinese destination on Mafengwo, with prices in yuan, sellers, sales counts, ratings and the places each product covers. Put destination links, destination IDs or Chinese city names in destinations, one per line, with commas and semicolons also separating but spaces not; place links are rejected because the catalogue is published per destination, and romanised city names usually do not resolve. startUrls takes structured destination links and is merged with destinations, neither taking precedence. For products from every city at once put Chinese search terms in keywords: each term searches the whole catalogue, has its own maxProducts allowance, is not counted against maxDestinations, runs alongside the other lanes, is capped at 50 terms per run, and a run can use terms alone with no destination. Leave productTypes empty for every kind, which is also the fastest full collection; selecting types walks each separately and saves a shared product once. maxProducts defaults to 200 per destination and per term and is what decides the bill; 0 collects everything a destination has, about 1,850 for a large city. maxDestinations defaults to 5. Text is Chinese and prices are in yuan; priceIsFrom=true marks a starting price with dearer options behind it, and there is no per-date availability, no per-person breakdown and no hotels or flights. Fields are filled unevenly, about a third of products carry soldCount and a fifth carry rating, and an unfilled field arrives as null or an empty list rather than being dropped. placeIds matches the place IDs of zen-studio/mafengwo-poi-scraper, while destinationIds and departureDestinationIds are the geographic hierarchy a product is filed under (continent, country, province, city, district) in the same ID space as this actor's input, not a list of places visited. Numeric codes such as refundType, bookingType and sellerType are the source's own; the readable wording appears in bookingText and tags where the source provides any. Charges are per saved product plus one actor start, with no dataset-item charge, and a product found twice in a run is saved and charged once; free-plan access is 200 products/run across 25 runs. Input: https://apify.com/zen-studio/mafengwo-tours-tickets-scraper/input-schema ; output and behavior: https://apify.com/zen-studio/mafengwo-tours-tickets-scraper ; current charges: https://apify.com/zen-studio/mafengwo-tours-tickets-scraper/pricing .
```

### How to scrape Mafengwo tours and tickets

Put one destination per line in the paste box. Three forms work and can be mixed:

```json
{
  "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10133.html\n10065\n杭州",
  "maxProducts": 200,
  "maxDestinations": 5
}
```

- **A destination link**, for example `https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10133.html`.
- **A destination ID**, for example `10065`.
- **A city name in Chinese**, for example `杭州`. Names are matched in Chinese; a romanised name usually does not match, and a name that turns out to be a place rather than a city is reported rather than guessed at.

Newlines, commas and semicolons all separate entries. Spaces do not, so a multi-word name stays one entry. Anything that does not resolve to a destination is skipped and reported at the start of the run.

Place links are deliberately rejected. Tours and tickets are published per destination, so accepting a place link would quietly collect a whole city under the name of one attraction. To find products for a single attraction, put its name in **Search terms**.

#### Search the whole catalogue

```json
{
  "keywords": "黄鹤楼\n温泉",
  "maxProducts": 50
}
```

Each term searches every destination rather than one city: a 温泉 search returned products sold from Kunming, Heishui and Lixian in the same run. Each term gets its own product allowance and is processed alongside the others, so the work grows with the number of terms: up to 50 terms are used per run, and anything beyond that is left out with a note in the log. Terms are not counted against **Maximum destinations**, and a run can use search terms on their own, with no destination at all.

#### Narrow by product type

```json
{
  "destinations": "10133",
  "productTypes": ["ticket", "one_day_tour"],
  "maxProducts": 100
}
```

Leaving **Product types** empty collects every kind and is the fastest way to take a destination in full. Choosing types collects each one separately; a product that appears under two types is saved once, and a type that fails part-way does not stop the others.

### Inputs

| Input | Type | Default | What it does |
|---|---|---|---|
| `destinations` | string | none | Destination links, IDs or Chinese city names, one per line. Commas and semicolons also separate entries; spaces do not, so multi-word names survive. |
| `startUrls` | array | none | Optional structured list of destination links, combined with the paste box and deduplicated. File-based lists are not supported. |
| `keywords` | string | none | Optional Chinese search terms, one per line. Each searches the whole catalogue and has its own product allowance. Up to 50 terms per run. |
| `productTypes` | array | all types | `customized`, `one_day_tour`, `multi_day_tour`, `ticket`, `local_play`, `cruise`, `package_tour`. Empty collects every kind. |
| `maxProducts` | integer | `200` | Products to save for each destination and each search term. `0` collects everything available. |
| `maxDestinations` | integer | `5` | How many destinations to process. Search terms are not counted against it. |

Supply at least one destination or one search term. Everything else is optional.

### What data can you extract from Mafengwo tours and tickets?

One row per product, 50 fields, every one of them exported to JSON, CSV or Excel.

| Fields | Content |
|---|---|
| `productId`, `title`, `url`, `image` | Identity, the Chinese product name as listed, its link and its photo at full resolution. |
| `productType`, `productTypeId` | What kind of product it is, for example 一日游 (day trip), 通票/年票 (pass), 游轮 (cruise) or 自由行定制 (custom trip), plus the numeric code behind it. |
| `price`, `priceText`, `priceIsFrom` | The price in yuan with its decimals, the price as travelers see it (`¥138起`), and whether it is a starting price with dearer options behind it. |
| `discounts`, `discountText`, `couponText` | The discount and coupon labels shown on the price. |
| `soldCount`, `soldText`, `soldMonthCount`, `primarySoldCount` | How many have sold, both as an exact number and as the banded label travelers see (`已售1000+`), plus two further counters: `soldMonthCount`, which usually repeats the total, and the much smaller `primarySoldCount`. About a third of listings publish a sales figure at all. |
| `rating`, `reviewCount`, `reviewCountText`, `topReview` | Buyer rating out of five, the review count, and the review the listing quotes. Around a fifth of listings carry a rating and fewer quote a review; the rest arrive empty. |
| `viewCount`, `favoriteCount` | How many views and saves the listing reports. Many listings report 0 views rather than a count. |
| `sellerId`, `sellerName`, `sellerType` | Who sells it, and the numeric code for the kind of seller. |
| `highlights`, `tags` | The selling points listed on the product and the short labels shown beside it. |
| `bookingType`, `bookingText`, `refundType` | How soon it can be used, for example 可订明日 (bookable tomorrow), and the numeric codes for its booking and refund terms. |
| `departureText`, `departureLabel`, `departureDestinationIds` | Where and when it departs, for example 武汉出发 (from Wuhan), and the departure destinations. |
| `tripDays`, `tripNights` | How many days and nights a trip lasts. |
| `destinationName`, `destinationIds`, `departureDestinationIds` | The destination it is sold for, plus the geographic hierarchy it is filed under and the one it departs from, as destination IDs. The Wuhan ticket below carries `21536` (中国, China), `52314` (亚洲, Asia), `14731` (湖北, Hubei) and `10133` (武汉, Wuhan), so these are a hierarchy rather than a list of places the trip visits. They use the same ID space as this actor's own input, so any of them can be pasted back in to collect that destination's catalogue. |
| `placeIds` | The attractions the product admits to, matching the place IDs in [Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper), so a ticket lines up with the attraction it opens. A multi-place pass lists every attraction it covers; 77.7% of products measured carry at least one. |
| `hasVideo`, `isQuality`, `isQualityGoods`, `isRecommended`, `isInternational`, `isGroupBooking`, `groupBookingStatus`, `isOnSale` | The listing's own markers: video, quality picks, recommendations, group booking and whether it is still on sale. |
| `sourceDestinationId`, `sourceKeyword`, `scrapedAt`, `additionalData` | Which destination or search term reached it, when it was collected, and any source fields without a column of their own. |

A real row, from Wuhan:

```json
{
  "productId": "2326423",
  "title": "湖北武汉  黄鹤楼景区电子门票（ 诗词绝句中的江南名楼）",
  "productType": "景区/场馆",
  "productTypeId": 11,
  "price": 74.0,
  "priceText": "¥74起",
  "priceIsFrom": true,
  "soldCount": 572,
  "soldText": "已售500+",
  "soldMonthCount": 572,
  "primarySoldCount": 2,
  "rating": 4.5,
  "reviewCount": 8,
  "reviewCountText": "8评价",
  "topReview": "七月流火，八月流金，八月末的武汉依旧酷热，但登上黄鹤楼，阵阵微风拂过，倍感凉爽！",
  "viewCount": 4104,
  "favoriteCount": 59,
  "sellerId": "51851",
  "sellerName": "四季阳光",
  "sellerType": 2,
  "highlights": ["江南三大名楼", "武汉市标志性建筑", "登楼远眺武汉美景"],
  "tags": ["随时退", "可订明日", "江南三大名楼", "武汉市标志性建筑", "登楼远眺武汉美景"],
  "discounts": [],
  "discountText": null,
  "couponText": null,
  "bookingType": 1,
  "bookingText": "可订明日",
  "refundType": 1,
  "departureText": null,
  "departureLabel": "武汉",
  "tripDays": null,
  "tripNights": null,
  "destinationName": "武汉",
  "destinationIds": ["21536", "10133", "52314", "14731"],
  "departureDestinationIds": [],
  "placeIds": ["5426285"],
  "image": "https://sales.mafengwo.net/mfs/s18/M00/85/39/CoUBYGBxHR6AHgIeAA6F8L2QxMI03.jpeg",
  "url": "https://m.mafengwo.cn/nb/public/sharejump.php?type=9&id=2326423",
  "hasVideo": false,
  "isQuality": false,
  "isQualityGoods": false,
  "isRecommended": false,
  "isInternational": false,
  "isGroupBooking": false,
  "groupBookingStatus": 0,
  "isOnSale": true,
  "sourceDestinationId": 10133,
  "sourceKeyword": null,
  "additionalData": {"dacu_status": 0},
  "scrapedAt": "2026-09-21T06:51:38.013249+00:00"
}
```

That row is a single attraction ticket. A guided trip fills the columns a ticket leaves empty, so here is a second real row, a six-day tour found through the search term 温泉 rather than through a destination:

```json
{
  "productId": "6640686",
  "title": "【纯玩无自费】昆明+腾冲+瑞丽+芒市6日（含云南省内双程动车+杜鹃王森林温泉+勐焕大金塔+一寨两国+北海湿地/银杏村+热海大滚锅+和顺古镇）",
  "productType": "多日游",
  "productTypeId": 20,
  "price": 2130.0,
  "priceText": "¥2130起",
  "priceIsFrom": true,
  "soldCount": 6607,
  "soldText": "已售6000+",
  "soldMonthCount": 6607,
  "primarySoldCount": 8,
  "rating": 5.0,
  "reviewCount": 2596,
  "reviewCountText": "2596评价",
  "topReview": "行程安排没有任何问题，景点都留给我们充足的时间，游玩的比较轻松舒服，整个行程都很",
  "viewCount": 0,
  "favoriteCount": 5829,
  "sellerId": "62510",
  "sellerName": "升升旅行",
  "sellerType": 2,
  "highlights": [
    "全程高端品质酒店",
    "提前预订优惠越多",
    "优秀导游贴心服务",
    "特色美食一网打尽"
  ],
  "tags": [
    "马蜂窝优选",
    "可订明日",
    "全程高端品质酒店",
    "提前预订优惠越多",
    "优秀导游贴心服务",
    "特色美食一网打尽"
  ],
  "discounts": [
    "券"
  ],
  "discountText": null,
  "couponText": "券",
  "bookingType": 1,
  "bookingText": "可订明日",
  "refundType": 2,
  "departureText": null,
  "departureLabel": "昆明出发",
  "tripDays": 6,
  "tripNights": null,
  "destinationName": "昆明",
  "destinationIds": [
    "21536",
    "15812",
    "12711",
    "10807",
    "19625",
    "24185",
    "52314",
    "30426",
    "10651",
    "14957"
  ],
  "departureDestinationIds": [
    "21536",
    "10807",
    "12711",
    "52314"
  ],
  "placeIds": [
    "956",
    "1492",
    "2769",
    "2775",
    "2778",
    "2993",
    "18507",
    "18513",
    "19779",
    "36041",
    "36045",
    "6330819",
    "33622936",
    "33638124",
    "70049116",
    "71456984",
    "73884464"
  ],
  "image": "https://sales.mafengwo.net/img/74/ac/96f3660dc6f641164b63376872b15968.jpeg",
  "url": "https://m.mafengwo.cn/nb/public/sharejump.php?type=9&id=6640686",
  "hasVideo": false,
  "isQuality": true,
  "isQualityGoods": false,
  "isRecommended": false,
  "isInternational": false,
  "isGroupBooking": false,
  "groupBookingStatus": 0,
  "isOnSale": true,
  "sourceDestinationId": null,
  "sourceKeyword": "温泉",
  "additionalData": {
    "dacu_status": 0
  },
  "scrapedAt": "2026-09-21T06:51:28.725966+00:00"
}
```

Between them the two rows populate 47 of the 50 columns. `tripDays` is filled on 92.8% of the 1,955 products measured and `departureDestinationIds` on 77.0%, so a ticket-only example would have understated what a normal export looks like. Three columns stay empty in both rows: `departureText`, the dated departure window, which 38.3% of products carry and these two happen not to, and `discountText` (1.2%) and `tripNights` (0.9%), which are genuinely rare.

`placeIds` is the join: `5426285` is 黄鹤楼 (Yellow Crane Tower) in [Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper). A multi-place pass lists every attraction it opens, sometimes dozens of them.

Text is in Chinese, as travelers see it. Prices are in yuan and keep their decimals. `priceIsFrom` says whether the price is a starting price with dearer options behind it. Numeric codes such as `bookingType` and `refundType` are kept as the source states them, next to the readable label where one exists (`bookingText`). A field the listing does not fill arrives as `null` or an empty list rather than being dropped, so every row has the same 50 columns.

Download the dataset as JSON, CSV or Excel. JSON keeps the nested lists intact: `highlights`, `tags`, `discounts`, `destinationIds`, `departureDestinationIds`, `placeIds` and `additionalData`. The largest row measured was 2.6 KB, so even a full destination export stays small.

### Travel price intelligence, OTA monitoring and tourism research

- **Price a destination.** Every ticket and tour on sale for a city, with what each one sold, in one export, instead of the shortlist each attraction shows.
- **Monitor the competition.** Which sellers list a destination, how many products each one runs, what they charge and where they discount.
- **Find the demand.** `soldCount` and `favoriteCount` rank products by what travelers actually book, not by what is promoted.
- **Join tickets to attractions.** `placeIds` lines products up with place records, so an attraction's real market price sits next to its rating and opening hours.
- **Watch discounting.** `couponText`, `discounts` and `priceIsFrom` show where a seller is cutting price.
- **Research Chinese tourism.** Ticket and tour prices across Chinese destinations, in one consistent shape, for inbound-tourism and pricing studies that otherwise need a city-by-city collection by hand.

#### Track prices on a schedule

Save your input as an Apify task and set a [schedule](https://docs.apify.com/actors/running/schedules) to revisit the same destinations daily or weekly. Each run produces its own dataset; compare `productId` against `price`, `couponText` and `soldCount` to see what moved. The actor holds no change history of its own and sends no alerts, so keep the datasets you want to compare.

### Pricing

Every saved product is one billable result. Nothing is charged for a destination that returns no products, and a product found twice in one run is saved and charged once.

| Apify plan | Per 1,000 saved products |
|---|---:|
| Free / Starter | $3.99 |
| Scale | $3.79 |
| Business and higher | $3.29 |

Actor starts cost **$0.0049 per GB of selected memory, with a minimum of one start event**. At the 512 MB default that is one start event per run. So 200 products from one destination cost **$0.8029** at the base rate: $0.798 for the products plus $0.0049 to start. The full Beijing catalogue measured above, 1,861 products, costs **$7.43**. There is no separate dataset charge. A run that saves nothing still incurs the start charge.

See the [Pricing tab](https://apify.com/zen-studio/mafengwo-tours-tickets-scraper/pricing) for the current rates and plan discounts. Set a spending limit before collecting several large destinations at `maxProducts: 0`.

Free-plan users can preview up to **200 products per run**, across at most **25 runs**. This is an access allowance, not a waiver of the displayed charges.

### Notes and limits

- **Chinese text.** Titles, product types and quoted reviews are in Chinese. Translate downstream if you need English.
- **A listing, not a booking system.** Rows are what the catalogue publishes: the starting price, the seller, the terms and the sales figures. Per-date availability and per-person breakdowns are not part of a catalogue row.
- **Availability moves.** Products are added and withdrawn daily, and sales figures update. Two runs a week apart will differ.
- **Destination names, not place names.** A name in the destination box must be a city or region. Put an attraction name in Search terms.
- **Search terms multiply the work.** Each term collects up to its own `maxProducts`, so ten terms can cost ten times one destination. Your spending limit and the free-plan allowance still apply.

### FAQ

#### Can I scrape one attraction's tickets?

Put its name in **Search terms**. A destination link collects the whole city, which is usually what you want, because the same ticket is often sold inside city passes and day trips.

#### Why are there more products than the attraction's own page shows?

An attraction's page shows a curated shortlist. The destination catalogue is the inventory behind it, and it is several times deeper: 100 products in Wuhan's catalogue admit to the Yellow Crane Tower, and 14 of them appear anywhere on that attraction's own page.

#### How much does a run cost?

$0.00399 per saved product on the Free and Starter plans, less on higher plans, plus $0.0049 to start the run. A 200-product run from one destination is $0.8029; the full 1,861-product Beijing catalogue is $7.43. `maxProducts` is the setting that decides the bill, so start small and raise it.

#### Is the data in Chinese?

Titles, product types, tags, highlights and the quoted review are in Chinese, exactly as travelers see them. Prices, counts, ratings, dates, IDs and flags are language-neutral. Translate the text fields downstream if you need English.

#### Can I run this on a schedule to track price changes?

Yes. Save the input as a task and give it a [schedule](https://docs.apify.com/actors/running/schedules). Each run writes its own dataset, so you compare runs yourself on `productId`. Prices, coupons and sales counts all move, which is what makes a weekly series worth keeping.

#### Where do I find a destination ID?

It is the number in the destination's own link: `https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html` is destination `10065`. You never have to look one up, because a link or a Chinese city name works just as well, and every saved row carries `sourceDestinationId` and `destinationIds` for the next run.

#### Can I type a city name in English?

Names are matched in Chinese, so type 北京 rather than Beijing. A romanised name usually does not match. If you only have the English name, paste the destination link or its ID instead. Anything that does not resolve is reported at the start of the run rather than guessed at.

#### How is this different from Mafengwo Places?

[Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper) returns the attraction itself: its identity, hours, rating, photos and the short list of tickets shown on its page. This returns the destination's whole bookable catalogue, which is several times larger, and includes the products that belong to no attraction at all, such as custom trips, cruises and transfers. `placeIds` joins the two together.

#### Is the price what a traveler pays?

It is the price the listing advertises. When `priceIsFrom` is true, that price is a starting price, and dearer dates, options or party sizes sit behind it. Treat `price` as the entry point of a product's price range rather than as a single checkout total.

#### Can I get prices for a specific date?

No. The catalogue publishes a product's starting price, not a per-date price or a per-person breakdown, so there is no date to select and no availability calendar in the output.

#### How current are the sales figures?

They are what the listing reports at the moment it was collected, and `scrapedAt` records that moment. `soldCount` is the exact total behind the banded label travelers see in `soldText` (`已售500+`); `soldMonthCount` usually repeats that total and `primarySoldCount` is a much smaller counter published alongside it. About a third of listings publish a sales figure at all. All of them move, so run on a schedule if you want a series.

#### Can I search all of China instead of one city at a time?

Yes, that is what **Search terms** does. A term such as 温泉 or 黄鹤楼 searches the whole catalogue and returns matching products whichever destination sells them. Terms have their own product allowance and are not counted against **Maximum destinations**, and a run can use terms alone with no destination at all. Up to 50 terms are used per run.

#### Does it cover hotels or flights?

No. This collects what a destination sells as tours, tickets, passes, day trips, experiences, guided services, transfers and cruises. For hotel rates, use [Ctrip Hotel Prices](https://apify.com/zen-studio/ctrip-hotel-prices-scraper); for Mafengwo's hotel and attraction records, use [Mafengwo Places](https://apify.com/zen-studio/mafengwo-poi-scraper).

#### How deep does one destination go?

Until it runs out. A large city measured 1,861 products in one uncapped run; a small destination may have a handful. Use `maxProducts: 0` for everything.

#### Are products repeated across destinations?

A product can be listed under several destinations and can match several search terms. Within one run it is saved and charged once, and `sourceDestinationId` or `sourceKeyword` records which destination or term reached it first.

#### Is a login needed?

No. Everything collected here is public.

### More Zen Studio scrapers for Chinese platforms

**🛒 E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsVmeHsn8748GeSDv-Ktzu3u1ZW9-icon.png" width="16" height="16" alt="TikTok Shop scraper icon" style="vertical-align:middle;border-radius:3px"> **TikTok Shop**
  - [TikTok Shop Review Scraper](https://apify.com/zen-studio/tiktok-shop-review-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-5QcLc4BHaLMBUKYs3-f3CWQ60Row-goofish-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Goofish 闲鱼**
  - [Goofish (Xianyu) Search Scraper](https://apify.com/zen-studio/goofish-xianyu-search-scraper)
  - [Goofish (Xianyu) Seller Scraper](https://apify.com/zen-studio/goofish-xianyu-seller-scraper)
  - [Goofish (Xianyu) Item Detail Scraper](https://apify.com/zen-studio/goofish-xianyu-item-detail-scraper)
  - [Goofish (Xianyu) Item Comments & Q\&A Scraper](https://apify.com/zen-studio/goofish-xianyu-item-comments-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-PsAKYWM55HG4AHXjK-ItywU7Bp0s-taobao-search-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Taobao 淘宝**
  - [Taobao Search Scraper](https://apify.com/zen-studio/taobao-search-scraper)
  - [Taobao Product Detail Scraper](https://apify.com/zen-studio/taobao-detail-scraper)
  - [Taobao Seller Products Scraper](https://apify.com/zen-studio/taobao-seller-products-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-uZy6tbKLKnSVtT4BN-emXnT123uR-jd-com-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **JD.com 京东**
  - [JD.com Search Scraper](https://apify.com/zen-studio/jd-com-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ghXSMZcW3GxsCrkiR-5hnvsKv4Yt-1688-wholesale-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **1688 阿里巴巴**
  - [1688 Wholesale Scraper](https://apify.com/zen-studio/1688-wholesale-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-eab843E8WtuH7V3oz-a9TgvZnNOZ-weidian-scraper-icon.png" width="16" height="16" alt="Weidian 微店 scraper icon" style="vertical-align:middle;border-radius:3px"> **Weidian 微店**
  - [Weidian Scraper](https://apify.com/zen-studio/weidian-scraper)

**🎬 Short-video & social**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-bQs2vUPAj8qDbK7EV-bMB0MSMGRY-douban-scraper-logo.png" width="16" height="16" alt="Douban 豆瓣 scraper icon" style="vertical-align:middle;border-radius:3px"> **Douban 豆瓣**
  - [Douban Scraper](https://apify.com/zen-studio/douban-scraper)
  - [Douban Reviews Scraper](https://apify.com/zen-studio/douban-reviews-scraper)
  - [Douban Group Scraper](https://apify.com/zen-studio/douban-group-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-wsZZkHvCzyyfZQdaJ-1H1H3xrBpO-weibo-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Weibo 微博**
  - [Weibo Search Scraper](https://apify.com/zen-studio/weibo-search-scraper)
  - [Weibo Comments Scraper](https://apify.com/zen-studio/weibo-comments-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-euYaQMbH2g53W4ds2-Woud1TIQ7x-kwai-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Kwai (Brazil)**
  - [Kwai Search Scraper](https://apify.com/zen-studio/kwai-search-scraper)
  - [Kwai Comments Scraper](https://apify.com/zen-studio/kwai-comments-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-CYLXgIAUzINmhWnzw-Cov56uxElo-kuaishou-scraper-logo.jpg" width="16" height="16" alt="Kuaishou 快手 scraper icon" style="vertical-align:middle;border-radius:3px"> **Kuaishou 快手**
  - [Kuaishou Scraper](https://apify.com/zen-studio/kuaishou-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3TJaaOJDU1AMiOoJM-Vu2eVr0P6N-douyin-profile-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Douyin 抖音**
  - [Douyin Search Scraper](https://apify.com/zen-studio/douyin-search-scraper)
  - [Douyin Profile Scraper](https://apify.com/zen-studio/douyin-profile-scraper)
  - [Douyin Video Scraper](https://apify.com/zen-studio/douyin-video-scraper)
  - [Douyin Comments Scraper](https://apify.com/zen-studio/douyin-comments-scraper)
  - [Douyin Transcripts Scraper](https://apify.com/zen-studio/douyin-transcripts-scraper)
  - [Douyin Creator Rankings Scraper](https://apify.com/zen-studio/douyin-xingtu-rankings-scraper)
  - [Douyin Live Recorder](https://apify.com/zen-studio/douyin-live-recorder)
  - [Douyin Hot Search Scraper](https://apify.com/zen-studio/douyin-hot-search-scraper)
  - [Douyin User Search Scraper](https://apify.com/zen-studio/douyin-user-search-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-mHKEEgoDqr6btQQer-fUs5ZquIeN-xiaohongshu-search-scraper-logo-square.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **RedNote 小红书**
  - [RedNote User Profile Scraper](https://apify.com/zen-studio/rednote-user-profile-scraper)
  - [RedNote Search Scraper](https://apify.com/zen-studio/rednote-search-scraper)
  - [RedNote Comments Scraper](https://apify.com/zen-studio/rednote-comments-scraper)
  - [RedNote Product Search Scraper](https://apify.com/zen-studio/rednote-product-search-scraper)
  - [RedNote Note Detail Scraper](https://apify.com/zen-studio/rednote-note-detail-scraper)
  - [RedNote Product Reviews Scraper](https://apify.com/zen-studio/rednote-product-reviews-scraper)
  - [RedNote Live Recorder](https://apify.com/zen-studio/rednote-live-recorder)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dexCSKEZtKS8hg4fT-lD4weyiYga-shigua-____-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Xigua 西瓜视频**
  - [Xigua Video Search Scraper](https://apify.com/zen-studio/xigua-video-search-scraper)
  - [Xigua Video Detail Scraper](https://apify.com/zen-studio/xigua-video-detail-scraper)

**🏠 Real estate & autos**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-1tAzNSf8Kz0v7Q2Lr-AINJ7FsZVU-anjuke-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Anjuke 安居客**
  - [Anjuke For-Sale Listings Scraper](https://apify.com/zen-studio/anjuke-real-estate-scraper)
  - [Anjuke New-Home Scraper](https://apify.com/zen-studio/anjuke-new-home-scraper)
  - [Anjuke Rental Listings Scraper](https://apify.com/zen-studio/anjuke-rent-scraper)
  - [Anjuke Listing Detail Scraper](https://apify.com/zen-studio/anjuke-sale-detail-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-32OkWqsiUywoq2ci3-7JhFlW1qg3-58__-real-estate-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **58.com 58同城**
  - [58.com Real Estate Scraper](https://apify.com/zen-studio/58-real-estate-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-ytaE4YpSmjXDmibPv-L1UMPHa2bO-che168-autohome-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Autohome 汽车之家**
  - [Autohome (Che168) Used-Car Scraper](https://apify.com/zen-studio/che168-car-scraper)

**🧭 Travel & maps**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-3rGXyh4kWAdtrE9vG-bsQxzBhXPT-amap-scraper-logo.jpg" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **AMap 高德地图**
  - [AMap Places Scraper](https://apify.com/zen-studio/amap-places-scraper)
  - [AMap Directions API](https://apify.com/zen-studio/amap-directions-api)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-EgDf0I1X8lNhCes2E-kpZCa398Jg-baidu-maps-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Baidu Maps 百度地图**
  - [Baidu Maps Scraper](https://apify.com/zen-studio/baidu-maps-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-m6N528dGvfD6p2iLa-cPplSXPm7y-tencent-maps-qq-scraper-logo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Tencent Maps 腾讯地图**
  - [Tencent Maps (QQ Maps) Scraper](https://apify.com/zen-studio/tencent-maps-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-kF3YqhAJErv0QJSx1-cYCSbByQ5P-dolphin-logo-1000.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **Ctrip 携程**
  - [Ctrip Hotel Prices Scraper](https://apify.com/zen-studio/ctrip-hotel-prices-scraper)
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-05ZMu4ciljVfMpct7-5SbFiiNTep-mafengwo-scraper-logo.jpg" width="16" height="16" alt="Mafengwo 马蜂窝 scraper icon" style="vertical-align:middle;border-radius:3px"> **Mafengwo 马蜂窝**
  - [Mafengwo Places Scraper](https://apify.com/zen-studio/mafengwo-poi-scraper)
  - [Mafengwo Reviews Scraper](https://apify.com/zen-studio/mafengwo-reviews-scraper)

### Support

Use this actor's **Issues** tab for bugs and feature requests. Include the input and run link so Zen Studio can reproduce the problem. Avoid posting credentials or private data.

*What a Chinese destination actually sells, with prices, sellers and sales figures.*

# Actor input Schema

## `destinations` (type: `string`):

Paste Mafengwo destination links, destination IDs, or Chinese city names such as 北京. One per line, or separated by commas or semicolons; spaces are not separators, so a name such as Hong Kong stays one entry. Names are matched in Chinese; a romanised name usually does not match. Anything that is not a destination is skipped and reported at the start of the run. Place links are not used here, because tours and tickets are sold per destination: put a place or theme in Search terms instead.

## `keywords` (type: `string`):

One search term per line, in Chinese, for example 黄鹤楼 or 温泉. A term searches the whole catalogue rather than one city, so it also finds products sold from other destinations. Each term is processed alongside the others and has its own Maximum products allowance, so the work grows with the number of terms; up to 50 terms are used per run. Terms are not counted against Maximum destinations, and a run can use terms alone with no destination.

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

Optional structured list of Mafengwo destination links. Combined with the paste box above and deduplicated, with neither field taking precedence. For destination IDs or names, use the paste box. Lists loaded from a file are not supported.

## `productTypes` (type: `array`):

Limit the results to certain kinds of product. Several choices combine their results without duplicates, and Maximum products still applies to the destination as a whole rather than to each type. Leave empty for every kind, which is also the fastest way to collect a destination in full.

## `maxProducts` (type: `integer`):

Stop after this many products for each destination and each search term. Every saved product is charged as one result, so this is the setting that controls what a run costs. Use 0 for everything the destination has, which was around 1,800 products for a large city.

## `maxDestinations` (type: `integer`):

Maximum number of destinations to process. Links and IDs are taken first, then typed names, and any beyond this number are left out. Search terms are not counted against this.

## Actor input object example

```json
{
  "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html",
  "productTypes": [],
  "maxProducts": 200,
  "maxDestinations": 5
}
```

# Actor output Schema

## `products` (type: `string`):

The dataset containing saved products, their prices, sellers and the places they cover.

## `unprocessed` (type: `string`):

An index of saved items that could not be identified. Empty when everything could be processed.

# 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 = {
    "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html",
    "productTypes": [],
    "maxProducts": 200,
    "maxDestinations": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/mafengwo-tours-tickets-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 = {
    "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html",
    "productTypes": [],
    "maxProducts": 200,
    "maxDestinations": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/mafengwo-tours-tickets-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 '{
  "destinations": "https://www.mafengwo.cn/travel-scenic-spot/mafengwo/10065.html",
  "productTypes": [],
  "maxProducts": 200,
  "maxDestinations": 5
}' |
apify call zen-studio/mafengwo-tours-tickets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zen-studio/mafengwo-tours-tickets-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/UNOuFqDA5TB6RBTjo/builds/JmkMEeHKg98JinmUa/openapi.json
