Newegg Scraper [$0.85/1K💰] | Prices, Sellers & Stock Data avatar

Newegg Scraper [$0.85/1K💰] | Prices, Sellers & Stock Data

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Newegg Scraper [$0.85/1K💰] | Prices, Sellers & Stock Data

Newegg Scraper [$0.85/1K💰] | Prices, Sellers & Stock Data

Scrape Newegg search, category and product data - price, list price, promo codes, eggs rating, stock quantity, Newegg-vs-marketplace seller, shipping cost, brand and model. Uses Newegg's own API, no browser.

Pricing

from $0.75 / 1,000 results

Rating

0.0

(0)

Developer

Ahmed Jasarevic

Ahmed Jasarevic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 days ago

Last modified

Categories

Features

Limited permissions

Share

Newegg Scraper

Scrape Newegg search results, category listings and full product specs as structured JSON — current price, list price, promo codes, instant rebate, eggs rating, stock quantity, whether Newegg or a marketplace seller fulfills the order, shipping cost, brand, model, UPC and category. Built for price trackers, deal aggregators, PC-hardware market research and competitor pricing.

Runs entirely over Newegg's own JSON-RPC API — no browser, no captcha, no scraping of protected HTML.

What you get

Price tracking with the discount actually broken out

Not just "is it cheaper" — the detail record gives you price, listPrice, discountAmount, discountPercent, promoText, instantRebate and lowestPrice30Days. That last field is the one that makes historical deal analysis possible: you can tell whether today's price is genuinely low against the item's own 30-day floor, instead of only against a stale list price.

Newegg seller vs marketplace seller, resolved

sellerType is derived, not copied: shipByNewegg === true, or no seller name at all, or an empty sellerId all resolve to "Newegg"; anything else is "Marketplace". Plus seller, sellerId, sellerRating, sellerRatingCount, shipsFromCountry and shipByNewegg. This is the field that distinguishes a genuine Newegg deal from a third-party marketplace listing wearing the same price — and third-party sellers are exactly where fulfilment and return policy get worse.

Stock state as a real enum, not a boolean

stockStatus is resolved to in_stock, out_of_stock, preorder or restricted, from Instock, Stock, CanPreorder, IsPreLaunch, WebsiteBlockMark and RestrictedItemMark together. Keep stockQuantity (Qty) and limitQuantity (LimitQuantity) alongside it, because in_stock with limitQuantity: 5 is a different commercial fact from in_stock with limitQuantity: null.

Shipping cost per offer, with a free-shipping flag

shippingCost and freeShipping are per-offer, not per-store — the same product has different shipping depending on the seller. freeShipping is true when shipping resolves to 0 or the item carries Newegg's free-shipping flag, so it survives both API paths.

Every image size without re-fetching

image (compressed), imageOriginal (the CompressAll0 → Original rewrite), and images[] — the full gallery parsed from Newegg's comma-separated ImageNameList, each resolved against c1.neweggimages.com.

Detail records rich enough for a catalog database

brand, model, manufacturerPartNumber, upc, category, categoryId, subcategory, isRefurbished, isOpenBoxed, availabilityRank (best-selling rank), merchantScore, eggsRating, eggSaverMark, viewCount and shipOutTimeUnit. upc plus manufacturerPartNumber is what makes cross-site product matching possible.

How it works

www.newegg.com sits behind Cloudflare — direct HTML fetches return 403. Newegg does, however, publish its own JSON-RPC tool API at apis.newegg.com, the same surface it exposes to AI shopping assistants. The Actor calls that directly, so no HTML is scraped and no browser ever loads.

Every call is a JSON-RPC 2.0 tools/call POST carrying an x-skill: newegg-product-search header:

PurposeEndpointToolPage size
Keyword searchapis.newegg.com/ex-mcp/endpoint/product-searchnewegg product search30
Category browseapis.newegg.com/ex-mcp/endpoint/website-www-toolgetapi_store_specifiedstore_catalog96
Product detailapis.newegg.com/ex-mcp/endpoint/website-www-toolgetapi_item_detail8 items per request

Three input modes feed one queue, then dedupe on itemNumber and enrich:

  • searchQueries → paginated keyword search, with order, minPrice and maxPrice pushed server-side.
  • categoryUrls → the N= category id and store id are parsed out of the URL, so you paste a normal Newegg category link. The trailing ?N=9 is optional.
  • itemNumbers → direct detail lookups; full product URLs are accepted too, and the item number is extracted.

The batching detail that makes detail mode affordable

Detail is not one request per product. DETAIL_BATCH = 8, so 100 products with detail: true costs about 13 detail requests, not 100 — roughly an 8× request reduction versus naive per-product fetching. The Actor also skips items it already has detail for, so overlapping searchQueries and categoryUrls don't double-charge you.

The Actor explicitly discards the empty stub Newegg returns for unknown item numbers — a record with neither a title nor a price is dropped rather than pushed as junk.

Request budgeting you can predict

Given itemCap, wantDetail and pageSize, the Actor computes expected requests up front: listing pages, plus ceil(pageSize / 8) detail requests per page, plus ceil(directItems / 8) for direct lookups. Result pages stop paginating once maxItems is reached, or when the source runs out — TotalItemCount bounds category pagination.

Input

FieldTypeDefaultNotes
searchQueriesstring[]["rtx 4090"]Keyword searches. Each is paginated independently.
categoryUrlsstring[][]Newegg category/store URLs; N= and store id are parsed from them.
itemNumbersstring[][]Specific item numbers or full product URLs for detail lookup.
detailbooleantrueEnrich every discovered item with full detail. false returns listing-level fields only.
maxItemsinteger100Hard cap on dataset rows.
orderinteger8Search sort: 1 Best Rating, 2 Lowest Price, 3 Highest Price, 4 Most Reviews, 6 Name A→Z, 7 Name Z→A, 8 Featured, 14 Release Date, 15 Best Selling, 16 Seller Rating, 22 Sales Volume.
minPrice / maxPricenumber—Inclusive price filter, applied server-side.
storeSourcestring"1"Category listing source: 1 Best Selling, 2 Lowest Price.
countryCodestring"USA"Newegg storefront country code.
companyCodeinteger1003Newegg company code. 1003 = Newegg.com.
proxyobject{ "useApifyProxy": false }Standard Apify proxy picker.

All three source fields are optional, but supply at least one or the run produces no products. They combine: pass searchQueries and categoryUrls to union both sources into one deduplicated queue.

Output

One flat dataset. Records come in two shapes depending on detail, sharing itemNumber and url so you can join or upgrade later.

Detail record — 48 fields

itemNumber, title, brand, model, manufacturerPartNumber, upc, price, listPrice, discountAmount, discountPercent, promoText, instantRebate, lowestPrice30Days, mapPrice, finalPrice, unitCost, currency, eggsRating, eggSaverMark, merchantScore, rating, reviewCount, viewCount, inStock, stockStatus, stockQuantity, limitQuantity, seller, sellerId, sellerType, shipByNewegg, sellerRating, sellerRatingCount, shipsFromCountry, shippingCost, freeShipping, shipOutTimeUnit, image, imageOriginal, images, url, category, categoryId, subcategory, isRefurbished, isOpenBoxed, availabilityRank, scrapedAt

Listing record — 12 fields

Returned only when detail: false:

itemNumber, title, url, image, price, listPrice, discountPercent, discountText, rating, reviewCount, currency, isRefurbished

Field notes that change how you read the data:

  • discountText exists only on listing records; discountAmount and promoText only on detail records. Filter by whether brand is present to tell them apart, or check for stockStatus.
  • currency is always "USD" on detail records — Newegg's US storefront. countryCode selects the storefront, but the currency field is hardcoded, so do not treat it as authoritative for non-US storefronts.
  • price and finalPrice can differ. price is the resolved current price through the fallback chain (including UnitCost); finalPrice and unitCost are the raw API fields. mapPrice is Newegg's price-match reference.
  • images[] is empty when Newegg exposes no gallery list — it is not a failed parse.
  • imageOriginal is derived by string-rewriting the compressed image URL, so it can be absent where image exists.

Example input

Keyword search, cheapest first:

{
"searchQueries": ["rtx 4090"],
"order": 2,
"maxItems": 100
}

Full-spec catalog build in a price band:

{
"searchQueries": ["nvme 2tb ssd"],
"minPrice": 100,
"maxPrice": 400,
"detail": true,
"maxItems": 500
}

Browse a category, best selling, no detail calls:

{
"categoryUrls": ["https://www.newegg.com/p/N82E16817159011"],
"storeSource": "1",
"detail": false,
"maxItems": 500
}

Specific products by item number or URL:

{
"itemNumbers": ["20-147-903", "https://www.newegg.com/p/9SIAD8JHV287"],
"detail": true
}

Union a search and a category in one run:

{
"searchQueries": ["rtx 4090"],
"categoryUrls": ["https://www.newegg.com/p/N82E16819159011"],
"order": 15,
"detail": true,
"maxItems": 300
}

Example output

{
"itemNumber": "20-147-903",
"title": "NVIDIA GeForce RTX 4090 24GB GDDR6X Graphics Card",
"brand": "NVIDIA",
"model": "GeForce RTX 4090",
"manufacturerPartNumber": "900-1G144-2530-000",
"upc": "195893028201",
"price": 1649.99,
"listPrice": 1899.99,
"discountAmount": 250,
"discountPercent": 13,
"promoText": "Save $250 with instant rebate",
"instantRebate": 250,
"lowestPrice30Days": 1599.99,
"mapPrice": 1699.99,
"finalPrice": 1649.99,
"unitCost": 1649.99,
"currency": "USD",
"eggsRating": 4.8,
"eggSaverMark": 1,
"merchantScore": 92,
"rating": 4.7,
"reviewCount": 312,
"viewCount": 18422,
"inStock": true,
"stockStatus": "in_stock",
"stockQuantity": 41,
"limitQuantity": 2,
"seller": "Newegg",
"sellerId": null,
"sellerType": "Newegg",
"shipByNewegg": true,
"sellerRating": 4.8,
"sellerRatingCount": 18422,
"shipsFromCountry": "US",
"shippingCost": 0,
"freeShipping": true,
"shipOutTimeUnit": "days",
"image": "https://c1.neweggimages.com/NeweggImage/ProductImageCompressAll/20-147-903-01.jpg",
"imageOriginal": "https://c1.neweggimages.com/NeweggImage/ProductImageOriginal/20-147-903-01.jpg",
"images": [
"https://c1.neweggimages.com/NeweggImage/ProductImageCompressAll/20-147-903-01.jpg",
"https://c1.neweggimages.com/NeweggImage/ProductImageCompressAll/20-147-903-02.jpg"
],
"url": "https://www.newegg.com/p/20-147-903",
"category": "Graphics Cards",
"categoryId": "1583",
"subcategory": "NVIDIA GeForce RTX 4090",
"isRefurbished": false,
"isOpenBoxed": false,
"availabilityRank": 4,
"scrapedAt": "2026-10-04T06:12:41.220Z"
}

Integrations & automation

Call it over the Apify API (POST /v2/acts/B6PjkefnUOQwWi5Lx/runs), or from Python, JavaScript, the CLI or MCP. Output exports as JSON, CSV, Excel, XML or RSS.

For price tracking, run daily on a fixed searchQueries set with order: 2 and upsert on itemNumber; alert when price drops below lowestPrice30Days or when stockStatus leaves in_stock. For deal feeds, filter discountPercent >= 20 and sellerType == "Newegg" to guarantee Newegg-fulfilled deals. For catalog builds, categoryUrls plus storeSource: "2" gives cheapest-first ordering for assortment planning.

Typical pipeline: run on schedule → upsert on itemNumber → keep a price/listPrice history table → alert on lowestPrice30Days breaches → join against your own cost data. No browser means runs are fast and cheap, so hourly polling of a small basket is practical.

What a run costs

ConfigurationResultsCost
Listing-only, detail: false, 100 products100 × result$0.085
Detail, 100 products (≈13 detail requests)100 × result$0.085
1,000 products, listing-only1,000 × result$0.85

$0.00085 per result. Detail batching means cost tracks products pushed to the dataset, not API requests — a detail run of the same 100 products costs exactly the same as a listing-only run of 100. Free accounts get a small trial quota; paying accounts get full maxItems, and tiered rates go lower on higher plans.

ActorWhy
amazon-scraperThe other half of PC-hardware price comparison — run both and diff price, listPrice and seller on the same upc.
walmart-scraperMass-market electronics pricing and stock, for cross-retailer spread analysis.
best-buy-scraperConsumer-electronics competitor with its own marketplace sellers.
micro-center-scraperPC-hardware specialist, useful for builder-component price checks.
cargurus-scraperSame marketplace-listing shape on a different vertical, with seller detail records.

FAQ

Why not scrape the Newegg HTML directly?

Because you can't reliably. www.newegg.com is behind Cloudflare and returns 403 to plain HTTP fetches, which is exactly why this Actor uses plain HTTP against Newegg's own JSON-RPC API instead. You get the same underlying data — and more, since the detail endpoint exposes fields the HTML does not render cleanly — without a headless browser.

Do I need a browser, a captcha solver or a proxy?

No to all three. The API is called directly with a JSON-RPC POST, there is no rendering challenge, and proxy defaults to { "useApifyProxy": false }. Enable a proxy only if you plan sustained high-volume runs.

Why is detail: true the same price as detail: false?

Because billing is per result pushed to the dataset, not per API request, and detail records cost the same as listing records. Detail mode looks expensive until you notice it batches 8 item numbers per request — 100 products cost about 13 detail requests, not 100. Turning detail off saves money only when you want fewer products; it never saves money per product.

currency says USD but I set a different countryCode. Why?

Because currency is hardcoded to "USD" on detail records. countryCode selects the storefront you query, but Newegg's response field is not authoritative across storefronts. Treat currency as a US-storefront assumption and do not use it for non-US price normalisation.

Newegg says "Sold and shipped by Newegg" but sellerType says "Marketplace". Why?

Because sellerType is derived from shipByNewegg, the seller name and sellerId — and for marketplace offers Newegg still fulfils some orders while a third party is the merchant of record. Where the badge and the merchant disagree, sellerType follows the merchant, because that's who your return window and dispute path actually run through. Trust shipByNewegg for logistics and sellerType for the merchant relationship; keep both.

What does stockStatus: "restricted" mean?

That Newegg flagged the item as restricted or region/age/blocked (WebsiteBlockMark or RestrictedItemMark). It is deliberately distinct from out_of_stock — a restricted item exists and has a price, but cannot be ordered. Don't fold it into "unavailable" in stock reporting, or you'll understate how much catalogue is gated rather than sold out.

images is empty. Did it fail?

No. The gallery is parsed from Newegg's comma-separated ImageNameList, which some listings simply don't provide. Empty images[] alongside a populated image is normal, not a parse error.

SEO Keywords

newegg scraper, newegg api, pc hardware price tracker, gpu price tracking, newegg deals, electronics price comparison, computer parts database, product catalog data, marketplace seller analysis, stock monitoring, gpu stock tracker, deal aggregator data, product price history, newegg vs marketplace, hardware market research, build a pc parts database, cross retailer price comparison, refurbished gpu prices, pc component pricing, newegg product data, ecommerce product scraping, product catalog api, price drop alerts

For AI Agents & LLM Apps

Returns Newegg products as one flat dataset with 48 fields per detail record, or 12 per listing record when detail: false.

Minimal input — smallest input that produces a valid run:

{ "searchQueries": ["rtx 4090"] }

Listing-only sweep (cheapest per product, no enrichment):

{ "searchQueries": ["nvme ssd"], "detail": false, "maxItems": 500 }

Full detail, price band:

{ "searchQueries": ["rtx 4090"], "minPrice": 1000, "maxPrice": 2500, "detail": true, "maxItems": 200 }

Specific products only:

{ "itemNumbers": ["20-147-903"], "detail": true }

Output fields — detail record (48): itemNumber, title, brand, model, manufacturerPartNumber, upc, price, listPrice, discountAmount, discountPercent, promoText, instantRebate, lowestPrice30Days, mapPrice, finalPrice, unitCost, currency, eggsRating, eggSaverMark, merchantScore, rating, reviewCount, viewCount, inStock, stockStatus, stockQuantity, limitQuantity, seller, sellerId, sellerType, shipByNewegg, sellerRating, sellerRatingCount, shipsFromCountry, shippingCost, freeShipping, shipOutTimeUnit, image, imageOriginal, images, url, category, categoryId, subcategory, isRefurbished, isOpenBoxed, availabilityRank, scrapedAt

Output fields — listing record (12): itemNumber, title, url, image, price, listPrice, discountPercent, discountText, rating, reviewCount, currency, isRefurbished

Behaviours an agent should know

  • Billing is per dataset result ($0.00085), not per API request. detail: true costs the same per product as detail: false — it just adds fields. Turn detail off only to reduce product count, never to save per-product money.
  • Detail batches 8 items per request. A 100-product detail run is ~13 detail requests. Budget by products, not calls.
  • Record shape depends on detail. Detail records have brand, stockStatus, sellerType; listing records don't. To tell them apart programmatically, test for brand or stockStatus being present.
  • Field availability is asymmetric. discountText is listing-only; discountAmount/promoText are detail-only. Don't write one parser expecting both.
  • Supply at least one of searchQueries, categoryUrls, or itemNumbers — all empty produces no products.
  • Sources union into one queue and dedupe on itemNumber, so overlapping searchQueries + categoryUrls don't duplicate rows or double-bill.
  • currency is hardcoded "USD" regardless of countryCode. Do not use it to normalise non-US storefront prices.
  • stockStatus is one of in_stock, out_of_stock, preorder, restricted. Keep restricted separate from out_of_stock — it's a gated item, not a sold-out one.
  • sellerType is "Newegg" or "Marketplace", derived from shipByNewegg / seller id. Keep shipByNewegg too; they answer different questions (merchant vs fulfilment).
  • Empty stub responses for unknown item numbers are discarded, not pushed. Missing images[] is normal.
  • Proxy is off by default. No browser is used or needed.
  • Free accounts have a small trial quota; paid accounts get full maxItems with tiered rates.

This Actor is an independent third-party tool. It is not affiliated with, endorsed by, or sponsored by Newegg, Inc.

What it actually accesses: Newegg's own published JSON-RPC tool API at apis.newegg.com — the endpoint Newegg exposes for its own AI shopping integrations — via JSON-RPC tools/call POSTs carrying an x-skill header identifying the calling skill. It does not scrape or bypass the Cloudflare-protected HTML of www.newegg.com, does not log in, does not bypass any authentication, and does not solve captchas. No browser is used.

What it does not do: it never attempts to defeat the 403 on the HTML site, never authenticates as a customer or seller, and never circumvents access controls. All data comes from the endpoint Newegg publishes for machine consumption.

Still your responsibility. Being a machine-readable endpoint does not by itself grant unrestricted commercial redistribution rights. Review Newegg's Terms of Use, its Partner/affiliate terms and your own legal advice before you resell, republish or build a competing product on this data. Newegg's own Terms restrict scraping, and their robots and API policies apply to you directly regardless of what this tool does.

Product data and trademarks. Product titles, images, specifications and brand names are Newegg's and their suppliers'. Brand names (NVIDIA, AMD, Intel, Samsung and others) are trademarks of their respective owners; use them descriptively and don't imply endorsement.

No personal data. Output is product and seller-business data. sellerRating and sellerRatingCount describe a merchant business, not an individual. There is no consumer personal data in the output.

You are solely responsible for compliance with Newegg's Terms of Use, applicable law, and any retailer agreements you have entered into.