# USA Scientific Lab Equipment Scraper (`muhammadafzal/usa-scientific-lab-equipment-scraper`) Actor

Extract structured USA Scientific laboratory equipment catalog data including product names, item numbers, prices, brands, categories, specifications, images, and source timestamps for procurement research and catalog monitoring.

- **URL**: https://apify.com/muhammadafzal/usa-scientific-lab-equipment-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 75.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 1,000 usa scientific products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## USA Scientific Lab Equipment Scraper

**Free plan limit:** Free-plan users can receive up to **5 result records per run**. Paid-plan and local/unknown runs retain the Actor's existing limits.

Extract structured product data from the public [USA Scientific](https://www.usascientific.com/) laboratory equipment catalog. The Actor follows category feeds, opens public product pages, validates every record, removes duplicates, and returns analysis-ready JSON for procurement research, catalog monitoring, comparison workflows, and laboratory supply intelligence.

The default run collects products from USA Scientific’s Equipment category. You can instead provide specific USA Scientific category or product URLs and optionally filter category-feed candidates by product keywords.

### What it extracts

Each default-dataset item represents one real USA Scientific product. Diagnostic messages are written to `OUTPUT` and `SUMMARY`, never mixed into the product dataset.

| Field | Meaning |
|---|---|
| `productCode`, `manufacturerPartNumber`, `upc` | Source identifiers |
| `productName`, `shortDescription`, `fullDescription` | Public product copy, cleaned to plain text |
| `brand`, `categories` | Brand and source category names |
| `price`, `listPrice`, `currency`, `onSale` | Public US catalog pricing when available |
| `purchasable`, `discontinued` | Current source flags when supplied |
| `imageUrl`, `imageUrls` | Absolute public product-image URLs |
| `specifications` | Visible properties such as capacity or operating temperature |
| `packageHeight`, `packageWidth`, `packageLength`, `packageWeight` | Package measurements when supplied |
| `productUrl`, `sourceCreatedAt`, `sourceUpdatedAt`, `scrapedAt` | Provenance and timestamps |

Null means the source did not provide that field. The Actor does not infer prices, availability, UPCs, or technical specifications.

### When to use it

Use this Actor to:

- monitor USA Scientific product and price changes;
- build internal laboratory procurement tables;
- compare equipment categories, brands, and specifications;
- collect a known product by URL;
- create structured inputs for spreadsheets, databases, and AI agents.

Do not use it for other vendors, account-specific pricing, checkout, inventory guarantees, private documents, or authenticated customer data. Prices on the source apply to US orders and can change after a run.

### Input

| Input | Default | Description |
|---|---:|---|
| `startUrls` | Equipment category | Public USA Scientific category/feed or product URLs. Multiple URLs are deduplicated. |
| `searchTerms` | `[]` | Case-insensitive OR filter over feed title, description, and categories. |
| `maxResults` | `50` | Total unique product cap, from 1 to 1,000. |
| `maxPages` | `100` | Maximum RSS catalog pages visited, from 1 to 200. |
| `maxConcurrency` | `4` | Concurrent source requests, from 1 to 10. |
| `proxyConfiguration` | No proxy | Optional Apify Proxy configuration for regions where direct access is blocked. |

Default input:

```json
{
  "startUrls": [
    { "url": "https://www.usascientific.com/equipment/c/93" }
  ],
  "searchTerms": [],
  "maxResults": 50,
  "maxPages": 100,
  "maxConcurrency": 4,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

Filter the Equipment category for centrifuge-related products:

```json
{
  "startUrls": [
    { "url": "https://www.usascientific.com/equipment/c/93" }
  ],
  "searchTerms": ["centrifuge", "centrifugation"],
  "maxResults": 25
}
```

Collect one product directly:

```json
{
  "startUrls": [
    { "url": "https://www.usascientific.com/product/2510-1104" }
  ],
  "maxResults": 1
}
```

Run through the Apify API by sending the same JSON as the request body to the Actor run endpoint. Results are available from the run’s default dataset; the output schema also exposes direct links to the dataset and `OUTPUT` record.

### Example output

```json
{
  "productCode": "2510-1104",
  "productName": "Thermal-Lok 4-Position Dry Heat Bath (Without Blocks)",
  "productUrl": "https://www.usascientific.com/thermal-lok-dry-bath-four/p/2510-1104",
  "shortDescription": "Thermal-Lok four block position dry heat bath (without blocks).",
  "fullDescription": "Thermal-Lok dry heat bath provides precise and stable temperature control...",
  "brand": "USA Scientific",
  "categories": ["Dry Baths", "USA Scientific"],
  "price": 1168,
  "currency": "USD",
  "onSale": false,
  "listPrice": 1168,
  "purchasable": true,
  "discontinued": false,
  "manufacturerPartNumber": "2510-1104",
  "upc": null,
  "imageUrl": "https://cdn-tp2.mozu.com/27776-44382/cms/44382/files/a7cc1eef-3b50-40b5-8d0f-014c4894e4b2",
  "imageUrls": ["https://cdn-tp2.mozu.com/27776-44382/cms/44382/files/a7cc1eef-3b50-40b5-8d0f-014c4894e4b2"],
  "specifications": {
    "Brand": "USA Scientific",
    "Max operating temperature": "150°C",
    "Capacity": "4 blocks",
    "Discontinued item": false
  },
  "packageWeight": { "value": 1, "unit": "lbs" },
  "sourceUpdatedAt": "2025-01-07T16:19:00.644Z",
  "scrapedAt": "2026-08-29T00:00:00.000Z"
}
```

### Pricing

This Actor uses **pay-per-event** pricing. These are the current Apify Store event prices:

| Event | Price (USD) | When it is charged |
|---|---:|---|
| `apify-default-dataset-item` | FREE: $0.029; BRONZE: $0.029; SILVER: $0.029; GOLD: $0.019; PLATINUM: $0.019; DIAMOND: $0.019 | USA Scientific product — One unique, schema-valid USA Scientific product record written to the default dataset. |
| `apify-actor-start` | $0.005 | Actor Start — Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). — Charged once per run. |

Apify platform usage for this Actor run is included alongside the event prices above; no separate per-run platform-usage fee is passed to users.

This covers Apify platform usage for this Actor run. Other Apify products or usage outside this Actor run may still follow your account plan.

### Reliability and failure behavior

The Actor uses the source’s public RSS category feed for discovery and the embedded public product payload for detail extraction. Static HTTP keeps compute and bandwidth lower than a browser. Requests use a consistent session, bounded concurrency, two retries, and session retirement for 403/429 responses. Optional Apify Proxy routing is available but disabled by default because direct requests are normally sufficient.

Every output item is normalized, deduplicated by product code, and validated before it reaches the dataset. Partial valid data is preserved. A valid search with no matches returns an empty dataset plus an `EMPTY` summary. A source challenge, systemic request failure, or payload drift returns a `BLOCKED`/`FAILED` summary and no fabricated product rows. Invalid external URLs are rejected before scraping.

The Actor reads current public pages; it cannot guarantee future price, stock, shipping, regulatory suitability, or product availability. Search-term filtering is applied to catalog-feed text, not to every detail-page specification, so use a category or direct product URL when you need exhaustive coverage of a narrow source section.

### Responsible use

Scrape only public data you are entitled to use. Follow USA Scientific’s terms, applicable law, and reasonable request rates. Do not use the Actor to access accounts, defeat access controls, or make regulated purchasing decisions without checking the current source page. USA Scientific is a third-party trademark; this independent Actor is not endorsed by or affiliated with USA Scientific, Inc.

For support, include the Apify run ID, a redacted input example, and the URL that produced an unexpected result. Do not include credentials or private customer information.

# Changelog

This Actor's version history is a separate document: https://apify.com/muhammadafzal/usa-scientific-lab-equipment-scraper/changelog.md

# Actor input Schema

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

Use this when you want a specific USA Scientific product or category. Enter public HTTPS URLs such as https://www.usascientific.com/equipment/c/93 or https://www.usascientific.com/product/2510-1104. Leave empty to scrape the Equipment category; unrelated domains and site-search URLs are not accepted.

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

Use this to keep products whose feed title, description, or category contains any term. Enter up to 20 phrases such as centrifuge or dry bath. Matching is case-insensitive; this does not search other websites.

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

Use this to cap unique product records written to the default dataset. Enter 1–1000. Defaults to 50 and applies across all start URLs.

## `maxPages` (type: `integer`):

Use this to cap RSS catalog pages visited per run. Enter 1–200. Defaults to 100; each page normally contains 10 product references.

## `maxConcurrency` (type: `integer`):

Use this to control simultaneous USA Scientific requests. Enter 1–10. Defaults to 4; lower it if the source begins rate-limiting requests.

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

Use this only when direct requests are blocked in your region. Defaults to no proxy; a US Apify Proxy session can be enabled here. This is not a product-location filter.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.usascientific.com/equipment/c/93"
    }
  ],
  "searchTerms": [],
  "maxResults": 50,
  "maxPages": 100,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Default dataset containing one normalized record per unique USA Scientific product.

## `summary` (type: `string`):

OUTPUT key-value record containing the outcome, counts, event estimate, and warnings.

# 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.usascientific.com/equipment/c/93"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("muhammadafzal/usa-scientific-lab-equipment-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.usascientific.com/equipment/c/93" }] }

# Run the Actor and wait for it to finish
run = client.actor("muhammadafzal/usa-scientific-lab-equipment-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.usascientific.com/equipment/c/93"
    }
  ]
}' |
apify call muhammadafzal/usa-scientific-lab-equipment-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,muhammadafzal/usa-scientific-lab-equipment-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/55IxZdeimQTXz1RTD/builds/eZEeglMTKKrahxT7t/openapi.json
