Yupoo Scraper — Album Images & Store Catalogs
Pricing
from $1.75 / 1,000 albums
Yupoo Scraper — Album Images & Store Catalogs
Export Yupoo store, category, or album data to JSON, CSV, or Excel: titles, descriptions, original image URLs, and album links. Deduplicates overlapping inputs, reports preview limits and failures, and supports optional image rehosting plus owner-authorized passwords.
Pricing
from $1.75 / 1,000 albums
Rating
2.0
(1)
Developer
Ibrahim
Maintained by CommunityActor stats
0
Bookmarked
30
Total users
5
Monthly active users
8 days ago
Last modified
Categories
Share
Extract Yupoo album titles, descriptions, full-resolution image URLs, and album links into one exportable dataset. Supports public pages and owner-authorized password-protected pages.
Start with one album. Defaults intentionally preview a store: at most 25 albums and three listing pages. Limits, failed URLs, and partial results are explained in the run statistics.
Quick start
One album:
{"urls": ["https://chaosmade20.x.yupoo.com/albums/246388734?uid=1"],"rehostImages": false}
A bounded store preview:
{"urls": ["unionkingdom"],"maxAlbumsPerStore": 25,"maxPages": 3}
A larger store pass (up to 500 index pages):
{"urls": ["https://unionkingdom.x.yupoo.com/albums"],"maxAlbumsPerStore": 0,"maxPages": 500}
Mix store, category, and album URLs. Bare store names work. Overlapping inputs produce one record per store/album identity. The working album URL, including its query parameters, is retained.
Output
{"store": "demo","albumUrl": "https://demo.x.yupoo.com/albums/123456789?uid=1","title": "Washed Black Tee","description": "Seller's original description","images": ["https://photo.yupoo.com/demo/example/big.jpg"]}
Export JSON, CSV, or Excel from the run dataset. Select only the fields you need with fields: images, title, description. Unselected fields are omitted. Store and albumUrl are always included.
Make image links display outside Yupoo
Raw Yupoo images are hotlink-protected. Correct URLs can appear broken when opened or embedded without the store's Referer header. This does not mean the album extraction failed.
Either download images with the correct Referer and host them yourself, or explicitly enable rehosting:
{"urls": ["https://chaosmade20.x.yupoo.com/albums/246388734?uid=1"],"rehostImages": true,"imageHost": "freeimage","imageHostApiKey": "YOUR_IMAGE_HOST_KEY","maxImagesPerAlbum": 5}
Hosts: freeimage (freeimage.host), imgbb (api.imgbb.com), or custom (an HTTPS Chevereto-compatible uploadEndpoint). Custom hosts require your own key. A built-in key is used only if the Actor owner has configured one for the selected preset; do not assume one is available.
The key is checked before a rehosting run. Missing keys leave original URLs with a warning; invalid supplied keys fail before the crawl. Failed uploads preserve originals, so output can contain both hosted and raw links. Stats report that split. Rehosting preserves requested resolution, but hosts may re-encode files. Expiration zero requests no expiry; indefinite retention still depends on the host's policy.
curl -H "Referer: https://STORE.x.yupoo.com/" "https://photo.yupoo.com/STORE/example/big.jpg" -o image.jpg
Password-protected pages
Set password to a password the store owner supplied. It is secret input, excluded from output and logs, and sent only to the requested store origin. Off-site album links and cross-origin redirects are rejected. A rejected password is reported as a failure, not an empty album.
Pricing and limits
Current price: $2.50 per 1,000 album records, plus $0.18 per 1,000 successfully rehosted images. Actor start is $0.00005 per start event (Apify applies its memory-based start-event rules). Platform usage is included in the published pay-per-event pricing. Check the Pricing tab for authoritative current rates.
URL-only mode returns the same billed album records. It reduces requests and runtime, not the per-record price. Fields selection also does not change that price.
Example: 100 albums with 50 successfully rehosted images each = $0.25 in album events + $0.90 in image events, plus start events. Your image host may impose its own quotas or charges.
Use a run maximum-charge limit, test one album first, and cap maxImagesPerAlbum before scaling rehosting. Upload concurrency is a global limit across all albums. A charge error or exhausted image allowance stops further uploads. Already prepared albums retain raw URLs for photos that were not uploaded.
Input reference
| Field | Default | Meaning |
|---|---|---|
| urls | Required | Store, category, or album URLs; bare store names accepted |
| password | Empty | Owner-provided secret password |
| fields | images, title, description | Fields to include |
| albumUrlsOnly | false | List unique album links without opening albums; same record price |
| maxAlbumsPerStore | 25 | Per store/category preview cap; 0 disables the album cap |
| maxPages | 3 | Listing-page cap, up to 500; increase alongside the album cap |
| imageSize | big | small, medium, big |
| maxImagesPerAlbum | 0 | Image cap; 0 means all extracted images |
| albumConcurrency | 3 | Concurrent album workers |
| requestDelayMs | 250 | Shared minimum request-start interval per host |
| maxRetries | 3 | Retries for transient errors |
| rehostImages | false | Explicitly enable download and upload |
| imageHost | freeimage | freeimage, imgbb, custom |
| imageHostApiKey | Empty | Secret hosting key |
| uploadEndpoint | Empty | HTTPS custom Chevereto endpoint |
| imageLinkExpirySeconds | 0 | No requested expiry; ImgBB supports timed expiry |
| imageConcurrency | 2 | Global image-work concurrency |
| proxyConfiguration | Off | Optional Apify proxy configuration |
Understand run results
- complete: all selected work finished, possibly within a stated preview cap.
- partial: useful records were saved, but some pages, albums, or uploads failed.
- failed: requested work failed and no album records were delivered.
- truncated: the album or page preview limit was reached. Increase the appropriate input limit for another pass.
RUN_STATS includes pagination stop reasons and failed URLs. Missing albums served as HTTP 200, password prompts, and unrecognized album pages are detected rather than emitted as blank records. A successful empty store and a failed request are counted differently.
Completed dataset records and upload results are checkpointed for the same run's restart/migration. A brand-new run has a new dataset and is billed separately. Failed work remains retryable. Long Retry-After cooldowns stop affected requests rather than being ignored or retried early.
API integration
Use the Actor identifier skyfishdev~yupoo-scraper and an Apify token in an Authorization header. For small jobs, POST input JSON to:
https://api.apify.com/v2/acts/skyfishdev~yupoo-scraper/run-sync-get-dataset-items
For larger jobs, POST to /runs, poll /actor-runs/RUN_ID until a terminal status, then export /datasets/DATASET_ID/items. Retrieve RUN_STATS too: partial results can exist even when not every requested album succeeded.
Local development
npm cinpm testnpm start
Put local input in storage/key_value_stores/default/INPUT.json. Local output is written to storage/datasets/default. The tests exercise parsing, redirects, pagination, failure reporting, deduplication, restarts, upload concurrency, and billing errors without paid cloud calls.
This Actor returns seller-published data. It does not invent prices, perform AI enrichment, crack passwords, extract videos, or bypass access controls. Use pages and images you are authorized to access and follow the source and image-host terms.