# BioMall Scraper — Lab Reagents, Chemicals & Prices (India) (`yugenox/biomall-scraper`) Actor

Scrape BioMall (biomall.in / biomall.ai), the lab-supplies marketplace: reagents, chemicals, antibodies, consumables and equipment by keyword, brand, category or URL, or the whole catalogue. Name, brand, catalog number, CAS, pack size, price and currency, SDS/TDS/COA links. No login.

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

## Pricing

from $2.00 / 1,000 products

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BioMall Scraper: lab reagents, chemicals and prices

Scrape **BioMall** (biomall.in, now biomall.ai), the B2B marketplace for laboratory supplies: reagents, fine and bulk chemicals, antibodies and ELISA kits, culture media, PCR and molecular biology products, glassware, plasticware and lab equipment. Search by **keyword, brand or category**, paste **product URLs**, or crawl **the whole catalogue** (1.4M+ products). Every product comes with its **name, brand, catalog number, CAS number, category, pack size, price and currency, description, image and the manufacturer's own product page**, plus **SDS, TDS and COA document links** when BioMall lists them. No login, no cookies, no BioMall account.

### What you get

| | |
|---|---|
| **Product** | Name, brand, catalog number, CAS number (chemicals), category, pack size, short description, image |
| **Price** | Price as a number and its currency (mostly INR, some USD), plus the price exactly as shown |
| **Links** | BioMall product page, the manufacturer's own product page, SDS / TDS / COA / brochure links when listed |
| **Context** | Partner-brand flag, BioMall product ID, the keyword / brand / category that found it, its position |

### How to use it

Pick one or more of:

- **Keywords**: `taq polymerase`, `agar`, `pipette tips`, `centrifuge tube`. Searches the catalogues of BioMall's partner brands (Himedia, GeNei, Tarsons, BRAND, Borosil and others).
- **Brands**: whole brand catalogues from BioMall's brand stores, such as `Himedia`, `Tarsons`, `GeNei`, `Abcam`, `Agilent`, `LOBA Chemie`, `MP Biomedicals` or `Macherey-Nagel`. Add keywords to search inside each brand.
- **Categories**: PCR, Cell culture, Microbiology, Chemicals, Chromatography, Lab equipment and more.
- **BioMall URLs**: product pages (`biomall.ai/product/…` or `biomall.in/product/…`), brand pages or category pages.
- **All products**: walks BioMall's sitemap and reads every product page in turn, covering every brand, including non-partner brands such as LGC Standards.

**Max products** is the total for the run, shared fairly between your keywords, brands and categories.

#### Input examples

Search partner brands for a product:

```json
{
  "keywords": ["taq polymerase", "dNTP mix"],
  "maxItems": 100
}
```

Every culture medium Himedia sells with "agar" in it, with document links:

```json
{
  "brands": ["Himedia"],
  "keywords": ["agar"],
  "includeDetails": true,
  "maxItems": 500
}
```

The first 5,000 products of the full catalogue:

```json
{
  "allProducts": true,
  "maxItems": 5000
}
```

### Output example

```json
{
  "productId": "73867e9b-7021-be83-ac35-5dacb2a3d08f",
  "name": "Taq Polymerase (3 units/l)",
  "brand": "Himedia",
  "brandSlug": "himedia",
  "catalogNumber": "MBT060B-20X500U",
  "casNumber": null,
  "category": "Molecular Biology",
  "categories": ["Molecular Biology"],
  "packSize": "20X500U",
  "price": 54330,
  "currency": "INR",
  "priceText": "₹54330",
  "shortDescription": "Taq DNA Polymerase is a thermostable, recombinant DNA polymerase, which exhibits very high activity in primer extension and other molecular biology applications. …",
  "imageUrl": "https://www.himedialabs.com/media/catalog/product/placeholder/default/bottle-placeholder_8.png",
  "manufacturerUrl": "https://www.himedialabs.com/us/mbt060b-taq-polymerase-3-units-l.html",
  "sdsUrl": "https://www.himedialabs.com/us/mbt060b-taq-polymerase-3-units-l.html#tab-docs",
  "tdsUrl": "https://www.himedialabs.com/us/mbt060b-taq-polymerase-3-units-l.html#tab-docs",
  "coaUrl": null,
  "brochureUrl": null,
  "isPartnerBrand": true,
  "url": "https://biomall.ai/product/taq-polymerase-3-units-l-mbt060b-20x500u?pack=20X500U",
  "detailsFetched": true,
  "searchInput": "\"taq polymerase\"",
  "position": 1,
  "scrapedAt": "2026-10-01T22:33:46.546Z"
}
```

A chemical from the full catalogue comes with its CAS number and certificate of analysis, for example `Hydrocortisone 17-valerate`, LGC Standards `DRE-C14224050`, CAS `57524-89-7`, `$129.00`. Every row has the same columns; a value BioMall doesn't list is `null`.

### Use cases

- **Price comparison and procurement**: compare list prices and pack sizes for the same reagent across brands.
- **Distributor and sales intelligence**: see which brands and catalog numbers BioMall carries in a category.
- **Catalogue building**: feed catalog numbers, CAS numbers, descriptions and images into your own e-commerce or LIMS.
- **Compliance**: collect SDS, TDS and COA links for the chemicals you stock.
- **Market research**: track prices for a category or brand over time with a scheduled run.

### FAQ

**Do I need a BioMall account, cookies or a login?** No. The scraper reads the same public product information any visitor sees. It never logs in and never sends enquiries or quote requests.

**Why does a brand return nothing?** Brand catalogues are available for brands with a BioMall brand store (Himedia, Tarsons, GeNei, Abcam, Agilent and about 50 more). For other brands, use **All products**, keywords or product URLs. The run's status message says when a brand came back empty.

**Which currency are prices in?** The one BioMall shows, read from the price symbol: Indian rupees (₹) for most partner brands and US dollars ($) for some international catalogues. Prices are list prices; BioMall gives final prices on quotation.

**How fast is it?** Keyword, brand and category listings return 100 to 500 products per request. Product page details and the **All products** crawl read one product page per product, about 2 to 3 products per second.

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If BioMall refuses datacenter IPs for a while, the run switches to residential proxies when your account has them, and carries on without them when it doesn't.

**What does a run cost?** You pay per product saved, per product page read for details, per keyword, brand or category listing, and a small fee per run. See the Pricing tab. Products or URLs that BioMall doesn't have are never charged.

**Is it legal to scrape BioMall?** This Actor only collects publicly available data: product listings that anyone can see on BioMall without an account, such as product names, brands, catalog numbers, prices and document links. Collecting publicly available data is generally legal, but you're responsible for how you use it. The data describes products, not people, and the scraper doesn't collect any personal information. You must follow privacy laws such as GDPR, PIPEDA and CCPA where they apply, as well as BioMall's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from information BioMall shows to any visitor without logging in. It never uses a login, never touches buyer, distributor or account pages, and follows the site's robots.txt.

This Actor is not affiliated with, endorsed by or sponsored by BioMall.

# Actor input Schema

## `keywords` (type: `array`):

Products to search for, e.g. "taq polymerase", "agar", "pipette tips", "centrifuge tube". Searches BioMall’s partner-brand catalogues (Himedia, GeNei, Tarsons, BRAND, Borosil and others). With Brands set, each keyword is searched inside each brand instead.

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

Whole brand catalogues from BioMall’s brand stores, e.g. "Himedia", "Tarsons", "GeNei", "Abcam", "Agilent", "LOBA Chemie", "MP Biomedicals", "Macherey-Nagel", "Borosil Scientific". Spelling and case are matched to BioMall’s brand list.

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

BioMall categories. Each lists the products BioMall features there (up to about 500).

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

BioMall product URLs (biomall.ai/product/… or biomall.in/product/…), brand URLs (/brands/…) or category URLs (/category/…).

## `allProducts` (type: `boolean`):

Walk BioMall’s sitemap and read every product page, in sitemap order, until Max products is reached. Covers every brand (1.4M+ products, including non-partner brands such as LGC Standards). About 2 products per second.

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

Maximum number of products for the whole run, shared fairly between your keywords, brands and categories. 0 = everything.

## `includeDetails` (type: `boolean`):

Also read each listed product’s own page for its SDS, TDS and COA document links and brand slug. One extra request per product. Product URLs and the All products crawl always include them.

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

Apify Proxy (datacenter) is the default and comes with every Apify plan. If BioMall refuses datacenter IPs for a while, the run switches to residential proxies when your account has them.

## Actor input object example

```json
{
  "keywords": [
    "taq polymerase"
  ],
  "allProducts": false,
  "maxItems": 20,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped products.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests and proxy use.

# 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 = {
    "keywords": [
        "taq polymerase"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/biomall-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 = {
    "keywords": ["taq polymerase"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/biomall-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 '{
  "keywords": [
    "taq polymerase"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/biomall-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/biomall-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/61VLYnTLK8g7PnhPv/builds/dyvxBg5jqZ06k1hkN/openapi.json
