Carousell Scraper — SG MY HK PH Listings & Prices avatar

Carousell Scraper — SG MY HK PH Listings & Prices

Pricing

from $1.19 / 1,000 listings

Go to Apify Store
Carousell Scraper — SG MY HK PH Listings & Prices

Carousell Scraper — SG MY HK PH Listings & Prices

Carousell scraper for Singapore, Malaysia, Hong Kong, Philippines, Taiwan and Indonesia. Extract listing prices, conditions, images, meetup locations, deal methods and seller ratings. Carousell API alternative — JSON via Python, Node.js, MCP.

Pricing

from $1.19 / 1,000 listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Carousell Scraper — Singapore, Malaysia, Hong Kong & Philippines Listings

Disclaimer: Unofficial tool developed independently. Not affiliated with, sponsored by, or endorsed by Carousell Group Pte. Ltd. Carousell and related trademarks belong to their respective owners. Data is read from publicly accessible listing surfaces. Provided for informational and research use; you must comply with Carousell terms and applicable law.

Carousell scraper for Southeast Asia’s largest C2C marketplace — scrape Carousell listings into JSON/CSV via Apify. Pull keyword browse, category pages, seller profiles, or listing URLs across Singapore, Malaysia, Hong Kong, Philippines, Taiwan, and Indonesia. Each row can include title, numeric price + currency, condition, images, description, meetup location, deal methods, likes, and seller rating / reviews / tenure. Fast HTTP path (no heavy browser) with residential proxy for Cloudflare. Use it as a Carousell API alternative from Python, Node.js, cURL, or MCP / AI assistants.

Best for: Carousell Singapore / Malaysia price tracking, sourcing, seller monitoring, and regional secondhand research.

Crawloop classifieds suite — marketplace scrapers for SEA / EU / US.

Carousell Scraper ◄── you are hereLeboncoin ScraperKleinanzeigen ScraperMarktplaats ScraperFacebook Marketplace Scraper
SEA C2C listings + sellersFrance classifiedsGermany classifiedsNetherlands marketplaceFacebook Marketplace

When to use this Actor

  • Carousell search scraping — Keywords (peer-to-peer browse) plus /search/ fallback
  • Category inventory — Most reliable mode: Computers & Tech, luxury, fashion, furniture, cars, or any public category URL / slug
  • Listing detail enrichment — Full description, image gallery, meetup address, deal method, category path, seller stats
  • Seller monitoring — All public ads for a username (/u/…)
  • Regional coverage — One Actor for SG / MY / HK / PH / TW / ID (AU / NZ / CA storefronts still selectable)

When not to use this Actor

  • Private chat, offers, or phone numbers — Only public listing and profile fields
  • Authenticated CarouBiz dashboards — No login
  • Shopee / Lazada retail search — Different platforms; this Actor is Carousell C2C only

Key features

  • Keywords + URLs + sellers — Mix search terms, category slugs, listing URLs, and usernames in one run
  • Stable HTML parse — Listing cards via data-testid="listing-card-{id}" (not hashed CSS class names)
  • Deep pagination — HTML pages cap around 40–48 cards with no ?page=; price-band partitioning finds more unique IDs
  • Optional detail passfetchDetails adds meetup, deal methods, attributes, seller rating / reviews / years on Carousell
  • Cloudflare-ready HTTP — Chrome TLS impersonation; residential proxy in the target country required
  • MCP / AI ready — Call from Claude, Cursor, and other tools via Apify MCP

Input Parameters

ParameterTypeDefaultDescription
countryStringSGSG, MY, HK, PH, TW, ID, AU, NZ, CA
searchQueriesArrayKeywords (peer-to-peer /q/ browse)
startUrlsArrayCategory, search, listing, or seller URLs
categoryUrlsArrayFull category URL or slug (computers-tech-213)
sellerUsernamesArrayPublic usernames without @
sortByStringrecentrecent, popular, price_asc, price_desc
minPrice / maxPriceIntegerPrice range in local currency
conditionStringanybrand_new, like_new, lightly_used, well_used, heavily_used
fetchDetailsBooleanfalseVisit each listing page for full fields
deepPaginationBooleantrueSplit by price band after a full first page
maxItemsInteger100Maximum dataset rows
requestDelayMsInteger400Delay between HTTP requests
proxyConfigurationObjectResidentialApify Proxy — residential in the selected country required

Input example

{
"country": "SG",
"searchQueries": ["iphone 15"],
"maxItems": 50,
"fetchDetails": true,
"sortBy": "recent",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "SG"
}
}

Category crawl:

{
"country": "SG",
"categoryUrls": ["computers-tech-213"],
"maxItems": 100,
"deepPagination": true
}

Direct listing / seller URLs (example strings for copy-paste into Start URLs):

{
"startUrls": [
{ "url": "https://www.carousell.sg/categories/luxury-20/" },
{ "url": "https://www.carousell.sg/p/example-listing-1234567890/" },
{ "url": "https://www.carousell.sg/u/example_seller/" }
],
"fetchDetails": true,
"maxItems": 25
}

Output Format

Each dataset row = one Carousell listing.

FieldTypeDescription
idStringNumeric listing ID
urlStringCanonical /p/{slug}-{id}/ URL
titleStringHeadline
descriptionStringBody (full with fetchDetails)
priceNumberNumeric price
priceFormattedStringDisplay price (S$80)
currencyStringISO code (SGD, MYR, HKD, PHP, TWD, IDR)
conditionStringBrand new / Like new / Lightly used / Well used / Heavily used
category / subcategory / categoryPathString / ArrayTaxonomy breadcrumbs
attributesObjectType, brand, model, storage, CO2 saved, …
country / countryNameStringMarketplace
location / meetupLocationStringArea and meetup address
dealMethodsArrayMeet-up, mailing / delivery
isNegotiable / isFixedPriceBooleanOffer vs fixed price
isSold / isBumped / isCertified / buyerProtectionBooleanStatus and badges
likesCountIntegerLikes when visible
postedAtRelative / listedAtStringRelative time + estimated ISO
images / imageUrlArray / StringProduct photos
seller.username / url / avatarUrlStringPublic profile
seller.rating / reviewCount / tenureYearsNumberReputation (detail pass)
sourceUrl / searchQuery / scrapedAtStringProvenance

Output example

{
"id": "1456947036",
"url": "https://www.carousell.sg/p/corsair-vengeance-lpx-16gb-3200mhz-ddr4-1456947036/",
"title": "Corsair Vengeance LPX 16GB 3200Mhz DDR4",
"description": "2 sets of Corsair Vengeance LPX 2x8GB (16GB) 3200Mhz. Self collection only.",
"price": 80,
"priceFormatted": "S$80",
"currency": "SGD",
"condition": "Well used",
"category": "Computers & Tech",
"subcategory": "Computer Parts",
"categoryPath": ["Computers & Tech", "Parts & Accessories", "Computer Parts"],
"attributes": { "type": "Memory RAM", "brand": "Corsair", "co2SavedKg": 22.9 },
"country": "SG",
"countryName": "Singapore",
"location": "Blk 528a Pasir Ris Street 51",
"meetupLocation": "Blk 528a Pasir Ris Street 51",
"dealMethods": ["Meet-up"],
"isNegotiable": false,
"isFixedPrice": true,
"isSold": false,
"isBumped": false,
"isCertified": false,
"buyerProtection": false,
"likesCount": 3,
"postedAtRelative": "2 hours ago",
"images": ["https://media.karousell.com/media/photos/products/2026/8/21/example.jpg"],
"seller": {
"username": "spideypiastri",
"url": "https://www.carousell.sg/u/spideypiastri/",
"rating": 5.0,
"reviewCount": 30,
"tenureYears": 8
},
"searchQuery": "",
"scrapedAt": "2026-08-21T21:50:00Z"
}

Use cases

  • Secondhand price intelligence — Track iPhone / luxury / laptop comps across SG and MY
  • Sourcing & arbitrage — Sort by lowest price, filter condition, watch meetup vs delivery
  • Seller research — Rating, review count, and tenure for active listings
  • Category supply — How many Well used vs Brand new units sit in a vertical
  • Lead lists — Public seller usernames and profile URLs for outreach (no private contacts)

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/carousell-scraper').call({
country: 'SG',
searchQueries: ['iphone 15'],
maxItems: 50,
fetchDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("crawloop/carousell-scraper").call(run_input={
"country": "SG",
"searchQueries": ["iphone 15"],
"maxItems": 50,
"fetchDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"], item["url"])

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~carousell-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"country":"SG","searchQueries":["iphone 15"],"maxItems":20}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store ID crawloop/carousell-scraper.

Example prompts:

  • "Run Carousell Scraper for iphone 15 in Singapore, fetch details, and return the 20 cheapest rows as JSON"
  • "Scrape Carousell Malaysia listings in computers-tech and summarize median price by condition"
  • "Chain Carousell Scraper then Leboncoin Scraper to compare secondhand laptop prices SG vs FR"

Suite next step

After Carousell listings, run Leboncoin Scraper or Kleinanzeigen Scraper for European classifieds comps, or Facebook Marketplace Scraper for another C2C channel.

FAQ

Which countries work? Live storefronts: Singapore, Malaysia, Hong Kong, Philippines, Taiwan, Indonesia. Australia, New Zealand, and Canada paused new sign-ups in 2023; the domains are still selectable if pages resolve.

Is this a Carousell Malaysia / Hong Kong / Taiwan scraper? Yes — set country to MY, HK, TW, PH, or ID. Category slugs differ by region.

Keyword browse vs /search/?query=? /{keyword}/q/ targets peer-to-peer listings. Carousell’s /search/?query= surface often skews toward Certified products for phones. Category URLs are the most stable SSR path; keywords try /q/ then /search/.

Why residential proxy? Cloudflare challenges datacenter IPs (403 / “Just a moment…”). Pin Apify residential to the same country as country.

Does it paginate? The first HTML page has no ?page=. With deepPagination the Actor partitions by price band (and subdivides saturated bands) so you get more than the first ~48 cards.

Personal data? Only public listing/profile fields a logged-out visitor can see. No inbox, phone, or email harvesting.