Carousell Scraper - Listings, Prices & Seller Leads
Pricing
from $3.00 / 1,000 listing scrapeds
Carousell Scraper - Listings, Prices & Seller Leads
Scrape Carousell listings, prices, conditions, photos, meet-up locations and seller leads across Singapore, Malaysia, the Philippines and Hong Kong. Pure HTTP, no browser, so runs are fast and never time out. Includes GPS coordinates, seller verification and a 0-100 lead score.
Pricing
from $3.00 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Scrape Carousell listings, prices, conditions, photos, meet-up locations and seller leads across Singapore, Malaysia, the Philippines and Hong Kong - fast, over plain HTTP, with no browser and no login.
Carousell is Southeast Asia's largest consumer marketplace. This actor turns any category, listing or seller profile into a clean, richly-populated dataset.
Why this scraper
Most Carousell scrapers drive a headless browser per page. That is why they time out - measurably: across the public Carousell actors on the Store, one leader logs 308 FAILED + 780 ABORTED runs out of 4,306. This actor takes a different route.
Carousell server-renders its entire application state into the page. We parse that state directly, so:
- No browser. ~1-2 s per page instead of 15-30 s. No Chromium, no memory spikes.
- No timeouts by construction. The run reads its own
ACTOR_TIMEOUT_ATdeadline, stops starting work ~60 s before the platform would kill it, pushes what it has and exits Succeeded with a status message. A run can never end TIMED-OUT. - Never throws. A transient rate-limit ends the run Succeeded with 0 items and an explanatory message - it does not fail, and pay-per-event means you are not charged for it.
- Richer records. The state blob carries fields the rendered page never shows: exact meet-up GPS coordinates, postal codes, seller verification flags, follower counts and the positive/neutral/negative review split.
We parse JSON, not CSS classes. Carousell's class names are obfuscated build hashes that rotate on every deploy - class-based scrapers rot within weeks.
What you get
Listing records - title, numeric + formatted price, condition, full description, likes, buyer-protection badge, images, category, seller handle, and an always-present listedAt timestamp.
Enriched listing details (fetchDetails) - 50+ fields including brand, availability, offers/comments counts, full category path, meet-up address with postal code, latitude/longitude, deal methods, and the complete seller profile.
Seller leads (includeSellerLeads) - one de-duplicated record per seller: verification flags (email / mobile / ID / Facebook), followers, feedback score, positive-rate, tenure in years, response rate, and a 0-100 leadScore ranking commercial reachability.
Deep pagination, solved
Carousell returns only 48 results per URL - there is no ?page= parameter and no infinite-scroll endpoint (verified: 12 scrolls, 0 requests fired). This actor partitions the inventory by price band and sort order, subdividing any saturated band recursively, then de-duplicates by listing ID.
Measured: 481 unique listings from a single starting point in 12 requests.
Category browsing (and why not keyword search)
Carousell's robots.txt disallows /search/, and the site enforces it - the search route returns an unresolved shell with no results to non-approved clients. Category pages are SEO-critical, explicitly crawlable, and always resolve. So this actor browses categories - the lane Carousell sanctions - and applies your keyword filter itself, while crawling, so filtering never starves your item limit.
If you point it at a category that is only a navigation hub (or a slug that does not exist in that region), it automatically falls back to that region's working subcategories rather than returning an empty run.
Input
| Field | Description |
|---|---|
region | sg, my, ph, hk. The proxy is auto-pinned to the matching country. |
categoryUrls | Category pages to scrape - full URL or bare slug. Slugs are region-specific (see below). |
keywords | Optional. Keep only listings whose title/description matches. Filtering happens during the crawl. |
startUrls | Any Carousell URL - category, listing (/p/...) or seller profile (/u/...). |
sellerUsernames | Pull public listings from specific sellers. |
maxItems | Record cap. 0 = no limit (still exits safely before timeout). |
fetchDetails | Open each listing for the full 50+ field record. |
includeSellerLeads | Emit de-duplicated seller lead records. |
deepPagination | Price-band + sort partitioning. On by default. |
sortBy, minPrice, maxPrice | Standard filters. |
Verified category slugs (ids differ per region - a Singapore slug will not work on Philippines):
| Region | Working slugs |
|---|---|
| Singapore | computers-tech-213, womens-fashion-4, men-s-fashion-3, luxury-20, video-gaming-264, furniture-home-living-13, toys-collectibles-12 |
| Malaysia | women-s-fashion-4, hobbies-toys-6245, cars-32, property-102 |
| Philippines | luxury-20, womens-fashion-4, toys-board-games-12 |
| Hong Kong | luxury-20, womens-fashion-4, furniture-home-living-13, toys-collectibles-12 |
Run it with no input at all and it browses a sample category so you always see real data.
{"region": "sg","categoryUrls": ["luxury-20"],"maxItems": 100,"fetchDetails": true,"includeSellerLeads": true}
Output (abridged)
{"type": "listingDetail","listingId": "1451172552","title": "HP Pavilion x360 Convertible Laptop","price": 340,"priceFormatted": "S$340","currency": "SGD","condition": "Lightly used","brand": "HP","categoryPath": ["Computers Tech", "Laptops Notebooks"],"locationAddress": "439B Bukit Batok West Avenue 8, 652439","latitude": 1.357249,"longitude": 103.739253,"dealMethods": ["meetup"],"sellerUsername": "collectors88","sellerFeedbackScore": 5,"sellerFollowers": 14,"sellerIsVerified": true}
Use cases
- Price intelligence - track second-hand pricing for any category across four markets.
- Resale arbitrage - spot underpriced listings the moment they appear, filtered by condition and price band.
- Seller lead generation - build a ranked list of high-volume, verified Carousell sellers with
leadScore. - Market research - measure supply, condition mix and price distribution by category.
- Geographic analysis - map listing density using real meet-up coordinates.
Use with AI assistants (MCP)
This actor works as a tool for AI assistants through the Apify MCP server. Point your assistant at it and ask for Carousell data in natural language.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready - AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 - an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server - no account, no API key.
- Skyfire - agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
Pricing
Pay-per-event - you pay only for records you receive:
| Event | Price |
|---|---|
| Listing scraped | $0.003 |
| Listing detail enriched | $0.006 |
| Seller lead | $0.008 |
Notes
Only public Carousell data is collected - the same information any visitor sees without logging in. No accounts, no private messages, no personal data behind authentication. Taiwan (carousell.tw) is not supported: that site server-renders no listings, so it is deliberately excluded rather than shipped as a region that returns nothing. Please use the output in line with Carousell's terms and applicable law.