# Newegg Scraper & Price Monitor (price drop alerts) (`integrative_cafe_8pc/newegg-products-monitor`) Actor

Use this Actor when you need Newegg product data or price alerts: price, discount, shipping, rating, reviews, stock and seller from search terms, category or product URLs. Monitor mode returns only new products, price drops and back-in-stock, with webhook alerts.

- **URL**: https://apify.com/integrative_cafe_8pc/newegg-products-monitor.md
- **Developed by:** [Bluefield Data](https://apify.com/integrative_cafe_8pc) (community)
- **Categories:** E-commerce, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
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

## Newegg Products & Price Monitor

Use this Actor when you need Newegg product data (price, discount, stock, rating, seller) from search terms, category pages or product URLs, or alerts when prices drop and items come back in stock.

Schedule it every hour and get only what changed on Newegg: **price drops, back-in-stock and new products**, sent to your Discord, Slack, Telegram or any webhook. Or run it once to export full product data from any search, category or product URL.

### Why this one

- **It gets through.** Newegg is behind Cloudflare and challenges most scrapers on every page. This Actor uses US residential sessions with a real Chrome fingerprint and opens a new IP whenever a request is blocked. In our tests: 5 of 5 inputs (2 searches, 2 categories, 1 product URL) returned 401 products with 0 errors, and the default input returns 50 products in about 15 seconds.
- **No false alerts.** Newegg rotates which color or bundle variant of a product it shows in lists. The monitor knows product groups, and reads one extra page past your limit, so ranking shuffles are not reported as new products. In 4 repeated runs on unchanged lists it reported 0 changes.
- **Every field you need**, from Newegg's own data, not scraped text: item number, title, brand, model, price, original price, discount, shipping, rating, review count, stock, seller company, 30-day lowest price, promotion, images.
- **Nothing is lost.** An input that fails (not a Newegg URL, item that does not exist, search with no results) comes back in the dataset with the reason, and you are not charged for it.

### Schedule it and get only new items

1. Put your searches, category URLs or product URLs in the input and turn on **Monitor mode**.
2. Optional: paste a **Webhook URL** (Discord or Slack incoming webhook, Telegram `https://api.telegram.org/bot<token>/sendMessage?chat_id=<id>`, Zapier, Make).
3. In Apify Console, create a Task with that input and add a Schedule, for example every hour (`0 * * * *`).

The first run returns every product as `new` and remembers it. Every later run returns only the products whose price dropped, that came back in stock, or that are new in your list. You can also report price increases and products that went out of stock, and ignore drops below a percentage.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Words you would type in the Newegg search box, one per line |
| `startUrls` | Category or search pages (all products, page by page) and product URLs or item numbers (one product each) |
| `maxItemsPerInput` | Stop each search or category after this many products (default 50) |
| `includeSponsored` | Keep sponsored results (flagged `isSponsored`) |
| `monitorMode` | Return only changes since the last run |
| `notifyOn` | new, priceDrop, backInStock, priceIncrease, outOfStock |
| `minPriceDropPercent` | Ignore smaller drops |
| `webhookUrl` | Where to POST the delivered products |
| `proxy` | US residential by default; keep it, Newegg blocks datacenter IPs |

Example:

```json
{
  "searchTerms": ["rtx 5070", "ddr5 32gb ram"],
  "startUrls": [
    {"url": "https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48"},
    {"url": "https://www.newegg.com/p/N82E16820147861"}
  ],
  "maxItemsPerInput": 100,
  "monitorMode": true,
  "notifyOn": ["priceDrop", "backInStock"],
  "minPriceDropPercent": 5,
  "webhookUrl": "https://discord.com/api/webhooks/..."
}
```

### Output

```json
{
  "itemNumber": "20-147-861",
  "title": "SAMSUNG 990 PRO 2TB SSD, PCIe Gen4 M.2 2280, Seq. Read Speeds Up-to 7,450MB/s ... (MZ-V9P2T0B/AM) Non-Heatsink",
  "brand": "SAMSUNG",
  "model": "MZ-V9P2T0B/AM",
  "price": 409.99,
  "originalPrice": 639.99,
  "discountAmount": 230,
  "discountPercent": 35.9,
  "currency": "USD",
  "shippingCost": 0,
  "freeShipping": true,
  "rating": 4.8,
  "reviewCount": 2446,
  "inStock": true,
  "stockStatus": "In stock",
  "seller": "Newegg",
  "soldByNewegg": true,
  "shipsFrom": "United States",
  "lowestPrice30Days": null,
  "promotion": null,
  "category": "Internal SSDs",
  "isSponsored": false,
  "images": ["https://c1.neweggimages.com/ProductImageOriginal/20-147-861-01.jpg"],
  "url": "https://www.newegg.com/p/N82E16820147861",
  "input": "https://www.newegg.com/p/N82E16820147861",
  "scrapedAt": "2026-10-26T02:48:45+00:00"
}
```

In monitor mode each row also has `changeType` (`new`, `price_drop`, `back_in_stock`, `price_increase`, `out_of_stock`), `previousPrice` and `previousInStock`.
List results also carry `position`, `variantGroupId` and `variantCount`. Seller is the store's company name only; no personal data is collected.

### Pricing

You pay per result, failures are free.

- **Product**: each product delivered to your dataset. In monitor mode, only changed products count.
- **Check**: one small fee per monitor-mode run.

### Notes

Public data only, no login. Prices are newegg.com US prices in USD. The Actor runs at a low rate on purpose (at most 3 inputs in parallel, pauses between pages) so runs stay reliable.

# Actor input Schema

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

Words you would type in the Newegg search box, one per line. Each one returns up to 'Max products per input'. Leave both this and the URLs empty to try the Actor with 'rtx 4070'.

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

Newegg URLs. Category or search pages (like https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48 or https://www.newegg.com/p/pl?N=100007709) return every product on the list, page by page. Product URLs (https://www.newegg.com/p/N82E16814137814) or bare item numbers (14-137-814) return that one product.

## `maxItemsPerInput` (type: `integer`):

Stop each search or category after this many products.

## `includeSponsored` (type: `boolean`):

Keep products Newegg marks as sponsored in search results. They come with isSponsored: true.

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

Remember every product's price and stock between runs and return only what changed: new products, price drops, back in stock. Schedule the Actor (for example every hour) and keep the same input. The first run returns everything as 'new'.

## `notifyOn` (type: `array`):

Which changes monitor mode returns and sends to the webhook.

## `minPriceDropPercent` (type: `integer`):

Ignore price drops smaller than this percentage. 0 reports any drop.

## `webhookUrl` (type: `string`):

Optional. Each run POSTs the delivered products here as JSON (fields content, text and items), in batches of 10. Works with Discord and Slack incoming webhooks, a Telegram bot sendMessage URL with chat_id, Zapier, Make or any endpoint that accepts POST.

## `monitorStoreName` (type: `string`):

Named key-value store in your account where monitor mode keeps the last price and stock. Each different input list gets its own memory inside it.

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

How many inputs are scraped at the same time. Kept low on purpose so Newegg does not block the run.

## `proxy` (type: `object`):

Newegg is behind Cloudflare and blocks datacenter IPs. Keep US residential proxy for reliable runs.

## Actor input object example

```json
{
  "searchTerms": [
    "rtx 4070"
  ],
  "startUrls": [
    {
      "url": "https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48"
    }
  ],
  "maxItemsPerInput": 50,
  "includeSponsored": true,
  "monitorMode": false,
  "notifyOn": [
    "new",
    "priceDrop",
    "backInStock"
  ],
  "minPriceDropPercent": 0,
  "monitorStoreName": "newegg-products-monitor",
  "maxConcurrency": 2,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

## `results` (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 = {
    "searchTerms": [
        "rtx 4070"
    ],
    "startUrls": [
        {
            "url": "https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("integrative_cafe_8pc/newegg-products-monitor").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": ["rtx 4070"],
    "startUrls": [{ "url": "https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48" }],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("integrative_cafe_8pc/newegg-products-monitor").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 '{
  "searchTerms": [
    "rtx 4070"
  ],
  "startUrls": [
    {
      "url": "https://www.newegg.com/GPUs-Video-Graphics-Cards/SubCategory/ID-48"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call integrative_cafe_8pc/newegg-products-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,integrative_cafe_8pc/newegg-products-monitor"
        }
    }
}
```

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/UKt8UsirbgfnUSLPd/builds/6JESDoADdcb4mFa4Z/openapi.json
