Pinduoduo APImobile.pinduoduo.com ↗
Fetch Pinduoduo's mobile homepage recommendation feed with product titles, group-buy prices, single-buy prices, and images via a single REST endpoint.
What is the Pinduoduo API?
The Pinduoduo mobile recommended goods API exposes the anonymous homepage "推荐" feed through a single endpoint, list_recommended_goods, returning up to 50 products per page with 6 price and identity fields per item. Each record includes group-buy price, normal price, market price (all in CNY yuan), product title, short title, a goods ID, and at least one product image URL — enough to track pricing spreads and feed composition without a Pinduoduo account.
curl -X GET 'https://api.parse.bot/scraper/a840f2e5-294f-4efd-965f-f792248e8538/list_recommended_goods?offset=20' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns one page of the Pinduoduo mobile homepage recommendation feed (the "推荐" tab shown to anonymous visitors). Each item is one product with its title (the site's short product description), group-buy price, single-buy price, list/market price (all in CNY yuan, read from the site's cent values), sales tip text, badge tags, main product image URL and thumbnail URL. The feed is personalised/randomised by the site, so successive calls with the same offset can return different products; it is not a search and cannot be filtered by keyword or category (search, category tabs and full product detail pages require a Pinduoduo login and are not available). Pagination: pass offset (default 0) and count (default 20, clamped to 50); the response carries returned, has_more and next_offset. An empty items list with has_more=false marks the end of the feed. One upstream request per call.
| Param | Type | Description |
|---|---|---|
| count | integer | Number of products to return per page; values above 50 are clamped to 50. |
| offset | integer | Zero-based position in the feed at which the page starts; use next_offset from the previous response to continue. |
{
"type": "object",
"fields": {
"count": "integer page size applied after clamping",
"items": "array of product records: goods_id (string), title, short_title, group_price / normal_price / market_price (numbers, CNY yuan; group_price is the group-buy price shown on the card), currency, group_size (people needed for group price), sales_tip (site's sales text), tags (array of badge strings), image_url (main product photo), thumb_url, product_url",
"offset": "integer offset the page started at",
"has_more": "boolean; false when the feed has no further items",
"returned": "integer number of items in this page",
"next_offset": "integer offset for the next page, or null when has_more is false"
},
"sample": {
"data": {
"count": 20,
"items": [
{
"tags": [],
"title": "四季花芽甜麦菜种子广东甜麦菜苦麻菜籽青菜春秋季阳台蔬菜种孑籽",
"currency": "CNY",
"goods_id": "991226559365",
"image_url": "https://img.pddpic.com/mms-goods-image/2026-08-19/37e9bdf3-494f-42fe-adcf-40d2e0fa4447.jpeg.a.jpeg",
"sales_tip": "本店已拼9680件",
"thumb_url": "https://img.pddpic.com/mms-goods-image/2026-08-19/37e9bdf3-494f-42fe-adcf-40d2e0fa4447.jpeg.a.jpeg",
"group_size": 2,
"group_price": 1.69,
"product_url": "https://mobile.pinduoduo.com/goods.html?goods_id=991226559365",
"short_title": "四季花芽甜麦菜种子广东甜麦菜苦麻菜籽青菜春秋季阳台蔬菜种孑籽",
"market_price": 5.48,
"normal_price": 2.78
}
],
"offset": 0,
"has_more": true,
"returned": 20,
"next_offset": 20
},
"status": "success"
}
}About the Pinduoduo API
What the API returns
The single list_recommended_goods endpoint returns a paginated slice of Pinduoduo's anonymous mobile homepage recommendation feed. Each page contains an items array of product records. Every record carries a goods_id string, a full title, a short_title, and three price fields: group_price (the lower group-buy rate), normal_price (single-buyer rate), and market_price (the listed reference/market price). All prices are plain numbers in CNY yuan. Each item also includes at least one product image URL suitable for display or archival.
Pagination
The endpoint accepts two optional parameters: count controls how many items to return per page (capped at 50 regardless of the value passed) and offset sets the zero-based starting position in the feed. The response includes has_more (boolean), next_offset (integer or null when the feed ends), returned (actual items in this page), and offset (the starting position used). To walk through the full feed, pass the next_offset value from each response as the offset in the next request until has_more is false.
Scope and freshness
The feed reflects what an anonymous visitor sees on the Pinduoduo mobile homepage at request time — a rotating, algorithm-ranked selection of products. Because the feed is personalization-free for anonymous sessions, the same offset can return different products across requests as Pinduoduo rotates inventory. This makes the endpoint useful for sampling current promoted listings and price spreads, but not for deterministic product lookups by ID.
The Pinduoduo API is a managed, monitored endpoint for mobile.pinduoduo.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mobile.pinduoduo.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official mobile.pinduoduo.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track the spread between group_price and market_price across promoted Pinduoduo listings to measure discount depth over time.
- Build a price-monitoring dataset by paginating through the feed daily and storing group_price and normal_price per goods_id.
- Aggregate short_title and title text from homepage recommendations for product categorization or NLP training on Chinese e-commerce copy.
- Sample promoted product images via the image URL field for visual catalog research or competitive benchmarking.
- Identify which goods_ids appear repeatedly in the recommendation feed across multiple sampling windows to infer promotion persistence.
- Compare Pinduoduo group_price values against prices on other platforms to surface cross-platform arbitrage signals.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pinduoduo offer an official developer API?+
What price fields does list_recommended_goods return, and how do they differ?+
group_price is the lower price a buyer pays when joining or forming a group purchase. normal_price is the single-buyer price without a group. market_price is the reference or list price shown as the original retail value. All three are numbers in CNY yuan, so you can compute both the group discount and the nominal markdown in a single response.