# Carousell Products Scraper (`confidential_gnat/carousell-products-scraper`) Actor

Scrape Carousell.sg product listings for prices, seller ratings, deal methods & more. Export clean JSON/CSV data from any category, search, or listing URL.

- **URL**: https://apify.com/confidential\_gnat/carousell-products-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Carousell Products Scraper Actor

Extract **product listing data from [Carousell](https://www.carousell.sg)** — title, price, seller details, deal method, detail attributes, likes, and more — from any category page, search-results page, or individual product page, without writing a single line of code. Just add a URL and get structured JSON or CSV output in minutes.

![Carousell Products Scraper](https://i.postimg.cc/9fywWG52/Chat-GPT-Image-Aug-13-2026-09-27-37-PM.png)

Carousell is one of Southeast Asia's largest classifieds marketplaces, and its listings change constantly as sellers post and re-list items. Carousell Products Scraper lets you pull structured, up-to-date listing data on demand or on a schedule, so you can track pricing trends, monitor specific categories, or feed listings into your own catalog or analytics pipeline. Because it runs on the Apify platform, you get API access, one-click scheduling, and integrations with tools like Make, Zapier, and Google Sheets out of the box — no infrastructure to maintain.

### ✨ Features

- **Product listing extraction** — pulls title, price, currency, description, photos, variant options, and detail attributes (condition, model, storage, etc.) from individual listing pages.
- **Pagination support** — automatically loads more results on category and search pages ("Show more" / infinite scroll) to collect as many listings as you need.
- **Proxy support** — built-in residential proxy support to reliably get past Carousell's anti-bot protection.
- **Seller and engagement data** — captures seller handle, rating, review count, years on Carousell, number of likes, and how many people want the item.

### 🔧 Input Configuration

| Field                | Type    | Required | Default                                                                                                                                   | Description                                                                                                               |
| -------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | array   | —        | `https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown` | Carousell category page, search-result page, or individual product page URLs to start crawling from.                      |
| `search`             | string  | —        | —                                                                                                                                         | Optional keyword search to run instead of (or in addition to) Start URLs.                                                 |
| `maxItems`           | integer | —        | `1`                                                                                                                                       | Maximum number of product listings to extract per start URL or search query.                                              |
| `proxyConfiguration` | object  | —        | Apify Residential proxy (Singapore)                                                                                                       | Proxy settings. Residential proxies are used by default — Carousell serves a Cloudflare challenge to non-residential IPs. |

**Supported URL types:**

- Category pages — `https://www.carousell.sg/categories/...`
- Search-result pages — `https://www.carousell.sg/search/...`
- Individual product pages — `https://www.carousell.sg/p/...`

**Sample input:**

```json
{
    "startUrls": [
        {
            "url": "https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown"
        }
    ],
    "maxItems": 1,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "SG"
    }
}
```

Input Page Example Screenshot
![Input Page Example](https://i.postimg.cc/02pNK9XT/image.png)

### 📦 Output

Each scraped listing is stored as a single item in the dataset, viewable in the **Overview** table on the Output tab. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

**Sample output:**

```json
{
    "url": "https://www.carousell.sg/p/samsung-galaxy-note-8-pokemon-go-gps-spoof-fake-gps-android-phone-1094156962/",
    "title": "Samsung Galaxy Note 8 Pokemon Go GPS Spoof Fake GPS Android Phone",
    "price": "250.00",
    "priceCurrency": "SGD",
    "categories": ["Mobile Phones & Gadgets", "Mobile Phones", "Android Phones", "Samsung"],
    "isCertified": false,
    "isFreeShipping": false,
    "description": "My beloved Samsung Galaxy Note 8 is up for sale. Bought at launch in 2017...",
    "primaryImage": "https://media.karousell.com/media/photos/products/2021/6/14/samsung_galaxy_note_8_able_to__1623641496_a08a1b4c_progressive.jpg",
    "images": [
        "https://media.karousell.com/media/photos/products/2021/6/14/samsung_galaxy_note_8_able_to__1623641496_ddf4958c_progressive.jpg",
        "https://media.karousell.com/media/photos/products/2021/6/14/samsung_galaxy_note_8_able_to__1623641497_de3c49c4_progressive.jpg"
    ],
    "paymentMethods": [],
    "variants": [],
    "peopleWhoWantThis": 2,
    "noOfLikes": 81,
    "detailAttributes": [
        { "title": "Condition", "value": "Heavily used" },
        { "title": "Series", "value": "Galaxy Note" },
        { "title": "Model", "value": "Samsung Galaxy Note 8" },
        { "title": "Storage", "value": "64GB and Below" },
        { "title": "Bumped", "value": "8 hours ago by gammarana" },
        { "title": "Category", "value": "In Samsung" }
    ],
    "dealMethod": "Meet-up",
    "sellerDetails": {
        "sellerHandle": "@gammarana",
        "rating": 5,
        "reviewCount": 21,
        "yearsOnCarousell": 6
    }
}
```

Detail Page Example Screenshot
![Detail Page Example](https://i.postimg.cc/QCZ3jT3w/image.png)

#### Data table

| Field               | Description                                                                                   |
| ------------------- | --------------------------------------------------------------------------------------------- |
| `url`               | Direct link to the listing.                                                                   |
| `title`             | Listing title.                                                                                |
| `price`             | Listed price.                                                                                 |
| `priceCurrency`     | Currency code for the price (e.g. `SGD`).                                                     |
| `categories`        | Breadcrumb category path for the listing.                                                     |
| `isCertified`       | Whether the listing carries Carousell's certified badge.                                      |
| `isFreeShipping`    | Whether free standard shipping is offered.                                                    |
| `description`       | Full listing description text.                                                                |
| `primaryImage`      | URL of the first/cover photo.                                                                 |
| `images`            | URLs of the remaining listing photos.                                                         |
| `paymentMethods`    | Accepted payment methods shown in the listing's "Risk-free payment" section.                  |
| `variants`          | Available variant groups (e.g. color, storage) and their options.                             |
| `peopleWhoWantThis` | Number of users who marked they also want this item.                                          |
| `noOfLikes`         | Number of likes the listing has received.                                                     |
| `detailAttributes`  | Listing-specific attributes (Condition, Model, Storage, Category, etc.) as title/value pairs. |
| `dealMethod`        | How the seller offers to complete the deal (e.g. "Meet-up").                                  |
| `sellerDetails`     | Object with the seller's handle, rating, review count, and years on Carousell.                |

### 💡 Uses of This Data

- Price monitoring across listings in a category (phones, electronics, furniture, etc.)
- Market research on what's being sold, how it's described, and what condition/shipping options sellers offer
- Lead generation by tracking new listings matching a search query for resale, sourcing, or competitive analysis
- Seller reputation analysis using ratings, review counts, and years active on the platform
- Catalog enrichment with product photos, variant options, and detailed attributes for your own systems

### 🚀 How to Use

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (start URL or search query is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### ⚠️ Limitations & Known Issues

- **Login-required pages** — The actor cannot access content behind authentication (e.g. private messages, saved offers).
- **Rate limiting** — Heavy usage may trigger Cloudflare challenges; the built-in residential proxy configuration helps minimize this.
- **Layout changes** — Carousell periodically updates its page layout, which can occasionally affect specific fields until selectors are updated.

### 📝 Notes

- **Proxy recommended for large-scale scraping** — For high-volume runs, keep the default Apify Residential proxy enabled to avoid blocks.
- **API integration** — This actor can be called as an API from any automation platform (Zapier, Make, n8n, custom scripts).
- **Data consistency with proxies** — When using proxies with multiple IP locations, some data (e.g. prices, availability) may vary by region.

### 🔗 Other Actors

| Scraper                                                                                                                                        | Description                                                                                                                                                                                             |
| ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [🚗 Cheapest Cars & Bids Scraper](https://apify.com/confidential_gnat/cheapest-carsandbids-scraper)                                            | Scrapes the cheapest vehicle listings from Cars & Bids, making it easy to discover the best-value auction deals.                                                                                        |
| [🔍 Incidecoder Scraper](https://apify.com/confidential_gnat/whois-com)                                                                        | Extracts cosmetic ingredient and product information from Incidecoder for research and analysis.                                                                                                        |
| [🎟️ Church Finder Scraper \[💰Free\]](https://apify.com/confidential_gnat/churchfinder-scraper)                                                  | Scrape church listings and profiles from Church Finder. Extracts church name, denomination, address, phone number, service times, ratings and reviews from city search pages or individual church URLs. |
| [🔴 BidNet Direct \[Closed Links\] Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-closed-bid-opportunities-scraper) | Scrapes closed🔴 government bid and RFP solicitations from BidNet Direct, including title, issuing organization, location, publication date, closing date, and days since closing                       |
| [✅ BidNet Direct \[Open Links\] Bid Opportunities Scraper](https://apify.com/confidential_gnat/bidnetdirect-open-bid-opportunities-scraper)     | Scrapes open✅ government bid and RFP solicitations from BidNet Direct, including title, publication date, closing date, and days remaining until closing.                                              |

### 💬 Support & Contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/carousell-products-scraper/issues/open)

You can also find more of our actors on the [Actor Flow ](https://apify.com/confidential_gnat).

# Actor input Schema

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

Carousell category or search-result page URLs to start crawling from.

## `search` (type: `string`):

Optional keyword search to run instead of (or in addition to) Start URLs.

## `maxItems` (type: `integer`):

Maximum number of product listings to extract for each start URL or search query.

## `proxyConfiguration` (type: `object`):

Carousell serves a Cloudflare challenge to non-residential IPs, so residential proxies are used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown"
    }
  ],
  "maxItems": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SG"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/carousell-products-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 = { "startUrls": [{ "url": "https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown" }] }

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/carousell-products-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 '{
  "startUrls": [
    {
      "url": "https://www.carousell.sg/categories/beauty-personal-care-11/fragrance-deodorants-1663/?search=perfume&t-search_query_source=ss_dropdown"
    }
  ]
}' |
apify call confidential_gnat/carousell-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/carousell-products-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/UhmaL7epwQomKT1ru/builds/mb2AK34ROP62yXXro/openapi.json
