# Eezee Scraper - Singapore B2B Industrial & MRO Products (`scrapesage/eezee-scraper`) Actor

Scrape Eezee.sg, Singapore's B2B industrial & MRO marketplace — products, multi-currency prices, brands, categories, specs, MOQ, lead time, bulk discounts, images and supplier email leads. Filter by keyword, category, brand or price; monitor price changes. No login or API key.

- **URL**: https://apify.com/scrapesage/eezee-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.50 / 1,000 product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## 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

## Eezee Scraper — Singapore B2B Industrial & MRO Products, Prices & Supplier Leads

Extract the **complete product catalogue of [Eezee.sg](https://eezee.sg)** — Singapore's largest B2B industrial & MRO (maintenance, repair & operations) procurement marketplace. Every record ships with **multi-currency prices, brand, full category path, MOQ, lead time, bulk-discount tiers, images, the product description and the supplier's email lead** — the richest Eezee dataset available.

No login, no cookies, no browser — fast extraction straight from Eezee's storefront search with high reliability.

### Why this Eezee scraper?

Eezee aggregates **10,000+ industrial SKUs** from hundreds of suppliers and brands (3M, Bosch, Makita, RS Pro, Loctite, Safety Jogger and more). This actor pulls the **full structured product object** — not just the card you see on the page — and turns every listing into a usable B2B procurement record **and** a supplier lead.

| Data | Typical scrapers | This actor |
|---|---|---|
| Product title, SKU, model, brand | partial | ✅ full |
| Price in **9 currencies** (SGD, MYR, THB, IDR, PHP, USD…) | ❌ single | ✅ all + base currency |
| Bulk-discount tiers (min qty → price/percent) | ❌ | ✅ |
| MOQ, lead time, buy-now vs quote | ❌ | ✅ |
| Main + sub category path | partial | ✅ |
| Full product description | ❌ truncated | ✅ when present |
| All product images | 1 | ✅ full gallery |
| **Supplier email lead** | ❌ | ✅ |
| Popularity, created/updated dates | ❌ | ✅ |
| Lead score (0–100) | ❌ | ✅ |
| Monitor mode (only new / price-changed) | ❌ | ✅ |

### Use cases

- **B2B lead generation** — every product carries the supplier's contact email and shop ID. Build a list of industrial suppliers and brand distributors active in Singapore & SEA, scored by completeness (`leadScore`), and reach them directly.
- **Procurement & pricing intelligence** — track unit prices, **bulk-discount break points**, MOQs and lead times across the whole MRO catalogue; benchmark your suppliers against the market in any of 9 currencies.
- **Competitor & price monitoring** — schedule recurring runs with `monitorMode` to capture only **new products and price moves** (`price_drop` / `price_increase`) for a brand, category or keyword.
- **Catalogue & market mapping** — map the Singapore industrial supply market by category (safety, power tools, cleaning, lab, electronics, packaging…) and brand, with product counts and taxonomy.
- **Product enrichment & resale** — feed marketplaces, ERPs and e-procurement catalogues with clean, normalised product data, images and specs.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Eezee Scraper**, optionally add search keywords, categories, brands or a price range, set a result cap, and click **Start**.
3. Watch products stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchTerms": ["safety gloves", "welding helmet"],
    "categories": ["safety"],
    "brands": ["3M", "Bosch"],
    "currency": "SGD",
    "minPrice": 0,
    "maxPrice": 0,
    "enquiryType": "all",
    "maxResults": 100,
    "monitorMode": false
}
```

- **searchTerms** — keep only products matching any keyword (title, brand, category, SKU, model, taxonomy). Leave empty to scrape the whole catalogue.
- **categories** — filter by main/sub category name or slug (`safety`, `power-tools`, `industrial-consumable-goods`, `laboratory-consumable-apparatus`, `packaging-shipping-supplies`, `it-electronics`, `cleaning`, `lightings`, `test-measurement`).
- **brands** — filter by brand name or slug (`3M`, `Makita`, `RS Pro`, `Safety Jogger`…).
- **currency** *(default SGD)* — currency for the headline `price` and the price filters. Every record also includes `priceByCurrency` with all 9 currencies.
- **minPrice / maxPrice** — price range in the selected currency (0 = no bound).
- **enquiryType** — `all`, `buy_now` (priced/add-to-cart) or `quote` (request-a-quote products).
- **includeInactive** *(default false)* — also return hidden/discontinued products for full historical audits.
- **maxResults** *(default 100)* — total product cap (0 = no limit).
- **maxPagesToScan** *(default auto)* — how deep to page the catalogue when narrow filters are active. Raise it to dig deeper for rare keywords/brands.
- **monitorMode** *(default false)* — output only **new** or **price-changed** products since the last run (tagged with `monitorStatus` and `previousPrice`). The first run seeds the state.

### Output

One clean record per product (`type: "product"`):

```json
{
    "type": "product",
    "platform": "eezee",
    "country": "Singapore",
    "productId": "65bc8e97efa2e322d1eaa36f",
    "title": "Blue Eagle Auto Darkening Welding Helmet (EN379 EN175 ANSI Z87.1)",
    "url": "https://eezee.sg/product/blue-eagle-auto-darkening-welding-helmet",
    "slug": "blue-eagle-auto-darkening-welding-helmet",
    "sku": "4645b813c6",
    "supplierSku": "AW7R",
    "model": "aw7r",
    "brand": "BLUE EAGLE",
    "brandSlug": "blue-eagle",
    "categoryMain": "Safety",
    "categorySub": "Welding Helmets",
    "categoryMainSlug": "safety",
    "categorySubSlug": "welding-helmets",
    "price": 134.61,
    "priceFormatted": "S$ 134.61",
    "currency": "SGD",
    "priceByCurrency": { "SGD": 134.61, "MYR": 405, "USD": 105.13, "IDR": 1860675, "PHP": 6462.84 },
    "baseCurrency": "MYR",
    "hasBulkDiscount": false,
    "bulkDiscountTiers": [],
    "enquiryType": "add_to_cart_only",
    "quoteOnly": false,
    "moq": null,
    "leadTimeDays": null,
    "description": "AW7R Auto Darkening Welding Helmet. Standards: EN379, EN175, ANSI Z87.1, Z94.3 …",
    "images": ["https://storage.googleapis.com/eezee-product-images/…_600.jpg"],
    "imageCount": 4,
    "primaryImage": "https://storage.googleapis.com/eezee-product-images/…_600.jpg",
    "supplierId": "64b6467b4b847b04d87b8726",
    "supplierEmail": "admin@blueeagle-safety.com",
    "shopNumber": "7801525434",
    "viewCount": 0,
    "dateUpdated": "2026-02-04T03:14:19.982Z",
    "leadScore": 78,
    "searchTerm": "welding helmet",
    "scrapedAt": "2026-06-26T12:00:00.000Z"
}
```

Switch between the **Products**, **Pricing & procurement** and **Supplier & brand leads** dataset views to get the right column set for each job.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily/weekly with `monitorMode` to track new products and price drops in a category or for specific brands; perfect for procurement dashboards and lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, price-change email) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/eezee-scraper').call({
    searchTerms: ['safety gloves'],
    currency: 'SGD',
    maxResults: 200,
    monitorMode: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Eezee products & supplier leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new supplier leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new products or price drops.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find all safety-equipment suppliers on Eezee under S$50 and list their contact emails" and let it run this scraper for you.

### 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](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/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.

### More scrapers from scrapesage

Build a complete **B2B sourcing & Singapore lead-gen stack**:

- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** — India's #1 B2B marketplace: products + supplier phone/GST leads.
- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — Chinese manufacturers, products & supplier leads.
- **[Alibaba Scraper](https://apify.com/scrapesage/alibaba-scraper)** — global wholesale products, MOQ & supplier data.
- **[TradeIndia Scraper](https://apify.com/scrapesage/tradeindia-scraper)** — Indian B2B suppliers, products & enquiries.
- **[CommercialGuru Scraper](https://apify.com/scrapesage/commercialguru-scraper)** — Singapore commercial & industrial property + agent leads.
- **[PropertyGuru Scraper](https://apify.com/scrapesage/propertyguru-scraper)** — Singapore property listings & agent contacts.
- **[Burpple Scraper](https://apify.com/scrapesage/burpple-scraper)** — Singapore restaurant & cafe leads.
- **[Motorist.sg Scraper](https://apify.com/scrapesage/motorist-scraper)** — Singapore used cars & dealer leads.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — turn any supplier website into emails, phones & socials.
- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** — enrich suppliers with firmographics & headcount.

### Tips

- **Whole catalogue**: leave `searchTerms` empty and set `maxResults` (or `0` for no limit). The actor pages the catalogue, keeps only live products, and de-duplicates automatically.
- **Narrow searches**: for a rare keyword or brand, raise `maxPagesToScan` so the actor scans deeper into the 10,000-item catalogue.
- **Multi-currency**: keep `currency` on SGD for Singapore, or switch to MYR/THB/IDR/PHP — every record still carries all currencies in `priceByCurrency`.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to capture only new products and price changes per run.
- **Proxies**: the default Apify proxy works well; switch to Singapore residential only if you hit persistent blocks.

### FAQ

**What is Eezee?** [Eezee.sg](https://eezee.sg) is Singapore's leading B2B e-procurement marketplace for industrial, safety, MRO and office supplies — sometimes called the "Amazon for Singapore businesses".

**Do I need an Eezee account or API key?** No. This actor reads Eezee's public catalogue — no login, cookies, or key required.

**Can I get supplier contact details?** Yes — each product includes the supplier's `supplierEmail` (when the listing was uploaded by a third-party supplier), `supplierId` and `shopNumber`. Eezee-managed/mass-uploaded SKUs intentionally have no supplier email lead.

**Which currencies are supported?** SGD, MYR, THB, IDR, PHP, USD, AUD, CNY and INR — every product carries all of them in `priceByCurrency`, plus its `baseCurrency`.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor price changes automatically?** Turn on `monitorMode` and create a [Schedule](https://docs.apify.com/platform/schedules). Each run emits only new and price-changed products, tagged with `monitorStatus` and `previousPrice`.

**A field is null — why?** Some products genuinely don't publish a description, spec table, MOQ, lead time or supplier email at source. Fields are `null` only when the data doesn't exist on Eezee, not because the scraper skipped them.

**Is scraping Eezee legal?** This actor collects publicly available catalogue data only. You are responsible for using the data in compliance with applicable laws (e.g. PDPA/GDPR for personal data) and Eezee's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `searchTerms` (type: `array`):

Product keywords to search Eezee for — each runs a separate storefront search and returns diverse, relevant products. Use product-type words, not category names. Examples: <code>drill</code>, <code>safety gloves</code>, <code>cable ties</code>, <code>fire extinguisher</code>, <code>3M tape</code>. <b>Leave empty to sweep the whole catalogue</b> across 60+ built-in product categories.

## `categories` (type: `array`):

Optional. From the search results, keep only products in these categories (matched on main/sub category name or slug). Examples: <code>safety</code>, <code>power-tools</code>, <code>industrial-consumable-goods</code>, <code>laboratory-consumable-apparatus</code>, <code>it-electronics</code>, <code>cleaning</code>, <code>lightings</code>, <code>test-measurement</code>.

## `brands` (type: `array`):

Optional. From the search results, keep only these brands (matched on brand name or slug). Examples: <code>3M</code>, <code>Bosch</code>, <code>Makita</code>, <code>RS Pro</code>, <code>Safety Jogger</code>.

## `currency` (type: `string`):

Currency used for the headline <code>price</code> / <code>priceFormatted</code> and for the price filters below. Every record also carries <code>priceByCurrency</code> with all currencies. Eezee serves Singapore (SGD) plus Malaysia, Thailand, Indonesia and the Philippines.

## `minPrice` (type: `integer`):

Only include products at or above this price (in the selected currency). 0 = no minimum.

## `maxPrice` (type: `integer`):

Only include products at or below this price (in the selected currency). 0 = no maximum.

## `enquiryType` (type: `string`):

Filter by how the product is sold: <b>All</b> (default), <b>Buy now</b> (priced, add-to-cart products) or <b>Quote / enquiry</b> (request-a-quote products).

## `includeInactive` (type: `boolean`):

By default only live, in-catalogue products are returned. Turn ON to also include hidden, inactive or discontinued products (useful for full historical catalogue audits).

## `maxResults` (type: `integer`):

Stop after this many products (0 = no limit). Eezee lists 10,000+ products, so keep a cap for test runs.

## `maxPagesPerQuery` (type: `integer`):

How many result pages (60 products each) to fetch per search keyword. Eezee's search pages overlap, so 2–3 captures most unique results; raise it to dig deeper for broad keywords. 1–10.

## `monitorMode` (type: `boolean`):

Output only products that are <b>new</b> or whose <b>price changed</b> since the last run for the same input. Each row is tagged with <code>monitorStatus</code> (<code>new</code>, <code>price\_drop</code>, <code>price\_increase</code>) and, for price changes, <code>previousPrice</code>. The first run emits everything and seeds the state. Pairs perfectly with Apify Schedules — see the README.

## `dedupStoreName` (type: `string`):

Named key-value store that holds the 'seen products' state for monitor mode. Use a distinct name per independent monitor (e.g. per saved search) so their states don't mix.

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

Proxy settings. Eezee's API works well over the default Apify proxy; switch to Singapore residential only if you hit persistent blocks.

## Actor input object example

```json
{
  "searchTerms": [
    "safety gloves"
  ],
  "currency": "SGD",
  "minPrice": 0,
  "maxPrice": 0,
  "enquiryType": "all",
  "includeInactive": false,
  "maxResults": 100,
  "maxPagesPerQuery": 3,
  "monitorMode": false,
  "dedupStoreName": "eezee-scraper-state",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped products in the default dataset. One clean row per product.

# 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 = {
    "searchTerms": [
        "safety gloves"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/eezee-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 = { "searchTerms": ["safety gloves"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/eezee-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "safety gloves"
  ]
}' |
apify call scrapesage/eezee-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/eezee-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OUnrpZDUWwVuEc3jx/builds/aKilPbM5l7cE9KePT/openapi.json
