# DigiKey Product Scraper — MPN, Pricing Tiers, Stock & Specs (`crawloop/digikey-product-scraper`) Actor

DigiKey product scraper for MPN lookup, PDP enrichment, and category listings. Extract quantity-break pricing, stock, lead time, attributes, RoHS/REACH/ECCN, datasheets and substitutes. Keyword exact-match, filter pagination, sticky residential proxy — fast HTTP, no browser.

- **URL**: https://apify.com/crawloop/digikey-product-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** E-commerce, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 digikey product details

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

## DigiKey Product Scraper — MPN, Pricing Tiers, Stock & Specs

> **Electronics distributor data** — DigiKey and RS Online catalog enrichment for BOM, pricing, and procurement workflows.

| DigiKey | RS Online | Rockwell Products |
| :--- | :--- | :--- |
| **DigiKey Product Scraper** ◄── you are here | [RS Online Scraper](https://apify.com/crawloop/rs-online-scraper) | [Rockwell Product Scraper](https://apify.com/crawloop/rockwell-product-scraper) |

> **Disclaimer:** Unofficial Actor for publicly accessible DigiKey product and catalog pages. **DigiKey** and related names are trademarks of Digi-Key Electronics. Not affiliated with, sponsored by, or endorsed by Digi-Key Electronics. Provided for informational and research purposes only. You are responsible for complying with applicable laws and DigiKey terms of use.

Scrape **DigiKey electronic components** by **product URL**, **manufacturer part number (MPN)**, **keyword**, or **category filter page**. Export **quantity-break pricing**, **stock**, **lead time**, **technical attributes**, **RoHS / REACH / ECCN / HTSUS**, **datasheets**, **images**, and **substitutes** as clean JSON — a DigiKey scraper / API alternative for **BOM enrichment**, **price monitoring**, and **MCP** / Python / Node pipelines.

***

### Key Features

- **Product detail enrichment** — full DigiKey PDP fields from product URLs
- **MPN / keyword resolution** — exact-match search → automatic PDP scrape
- **Category / filter listings** — crawl DigiKey filter pages with pagination (25 products per page)
- **Optional PDP enrich from listings** — turn listing rows into full product records
- **Pricing & packaging** — Cut Tape, Tape & Reel, Digi-Reel tiers with MOQ and fee messages
- **Compliance block** — RoHS, REACH, ECCN, HTSUS, MSL when present on the PDP
- **Substitutes & documents** — cross-references, datasheets, media (toggleable)
- **Fast HTTP scraping** — `curl_cffi` Chrome TLS impersonation; no headless browser
- **Sticky residential proxy** — Apify RESIDENTIAL US sessions with warmup and challenge rotation

***

### Use Cases

| Use case | What you get | Why it helps |
| :--- | :--- | :--- |
| **BOM enrichment** | MPN → DigiKey PNs, specs, datasheet | Fill ERP / PLM component libraries |
| **Price monitoring** | Quantity-break tables by packaging | Track unit cost vs volume |
| **Stock & lead time** | Available qty, standard lead time, backorder flag | Sourcing and shortage checks |
| **Compliance screening** | RoHS / REACH / ECCN / HTSUS | Export-control and green status |
| **Category harvest** | Filter listing rows at scale | Build MCU / connector / passive shortlists |

***

### When to use this Actor

- DigiKey **product detail** enrichment from known URLs or Digi-Key part numbers
- **MPN lookup** when you need the matching DigiKey PDP (exact match → full specs)
- **Filter / category crawls** for listing-level price and stock without opening every PDP
- **Procurement research** — packaging options, MOQ, Digi-Reel fees, substitute parts

### When not to use this Actor

- **Official DigiKey Partner / Product API** workflows that require DigiKey API keys
- **Real-time cart / checkout / quote** automation
- **Other electronics distributors** — this Actor covers DigiKey only
- **Bulk PDF file download** — returns datasheet URLs in the dataset; does not store PDF binaries in the Key-Value Store by default

***

### Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `productUrls` | Array | — | DigiKey product detail page URLs |
| `keywords` | Array | — | Keywords or MPNs (exact-match → PDP) |
| `filterUrls` | Array | — | DigiKey filter / category listing URLs |
| `maxItems` | Integer | `50` | Maximum dataset items per run |
| `maxPages` | Integer | `1` | Max filter pages per `filterUrls` entry (1–40) |
| `enrichListingProducts` | Boolean | `false` | Fetch full PDP for each listing row |
| `includeSubstitutes` | Boolean | `true` | Include substitute / cross-reference rows |
| `includeDocuments` | Boolean | `true` | Include documents and media links |
| `includeSuggestions` | Boolean | `true` | Emit suggestion record when keyword has no exact match |
| `requestDelaySecs` | Number | `1.0` | Delay between requests on the sticky session |
| `proxyConfiguration` | Object | Residential US | Apify Proxy — sticky RESIDENTIAL recommended |

#### Input Example — PDP + MPN

```json
{
  "productUrls": [
    "DIGIKEY_PDP_URL"
  ],
  "keywords": ["STM32F407VGT6"],
  "maxItems": 10,
  "includeSubstitutes": true,
  "includeDocuments": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

#### Input Example — category listing

```json
{
  "filterUrls": [
    "DIGIKEY_FILTER_URL"
  ],
  "maxItems": 500,
  "maxPages": 20,
  "enrichListingProducts": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

***

### Output Format

Dataset records use `recordType`:

| `recordType` | Meaning |
| :--- | :--- |
| `product` | Full DigiKey product detail enrichment |
| `listing` | Filter / category table row |
| `suggestion` | Keyword with no exact match (related categories) |
| `error` | Fetch or parse failure |

#### Key product fields

| Field | Description |
| :--- | :--- |
| `productId` | DigiKey numeric product id (canonical) |
| `manufacturerProductNumber` | Manufacturer part number (MPN) |
| `manufacturer` | Brand / manufacturer name |
| `digikeyProductNumbers` | Digi-Key PNs by packaging (TR / CT / Digi-Reel) |
| `qtyAvailable` / `qtyAvailableValue` | Stock text and parsed integer |
| `standardLeadTime` | Manufacturer lead time when shown |
| `unitPrice` / `unitPriceValue` / `currency` | Primary unit price |
| `packagingOptions` | Pricing tiers, MOQ, packaging messages |
| `attributes` | Technical specifications |
| `compliance` | RoHS, REACH, ECCN, HTSUS, MSL |
| `datasheetUrl` | Primary datasheet link |
| `substitutes` | Cross-reference rows (optional) |
| `documents` / `images` | Media and document links (optional) |
| `url` | Canonical product URL |
| `scrapedAt` | ISO-8601 timestamp |

#### Output Example (abbreviated)

```json
{
  "source": "digikey",
  "recordType": "product",
  "productId": "1231577",
  "manufacturerProductNumber": "74LVC2G125DP,125",
  "manufacturer": "Nexperia USA Inc.",
  "qtyAvailable": "12,000",
  "qtyAvailableValue": 12000,
  "unitPrice": "$0.37000",
  "unitPriceValue": 0.37,
  "currency": "USD",
  "standardLeadTime": "20 Weeks",
  "packagingOptions": [
    {
      "digikeyProductNumber": "1727-5989-1-ND",
      "packaging": "Cut Tape (CT) & Digi-Reel®",
      "minOrderQuantity": 1,
      "tiers": [
        { "breakQty": "1", "unitPrice": "$0.37000", "unitPriceValue": 0.37 }
      ]
    }
  ],
  "compliance": {
    "RoHS Status": "ROHS3 Compliant",
    "ECCN": "EAR99",
    "HTSUS": "8542.39.0070"
  }
}
```

***

### Integration examples

#### Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/digikey-product-scraper').call({
  keywords: ['STM32F407VGT6'],
  maxItems: 10,
  includeSubstitutes: true,
  includeDocuments: true,
  proxyConfiguration: {
    useApifyProxy: true,
    apifyProxyGroups: ['RESIDENTIAL'],
    apifyProxyCountry: 'US',
  },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient(token)
run = client.actor("crawloop/digikey-product-scraper").call(
    run_input={
        "keywords": ["STM32F407VGT6"],
        "maxItems": 10,
        "includeSubstitutes": True,
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"],
            "apifyProxyCountry": "US",
        },
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("manufacturerProductNumber"), item.get("unitPrice"), item.get("qtyAvailable"))
```

#### cURL

```bash
curl "https://api.apify.com/v2/acts/crawloop~digikey-product-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords":["STM32F407VGT6"],"maxItems":10,"includeSubstitutes":true,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}}'
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp). Connect your Apify account, then call `crawloop/digikey-product-scraper`.

Example prompts:

- "Run DigiKey Product Scraper for MPN STM32F407VGT6 and return pricing tiers, stock, and datasheetUrl"
- "Scrape DigiKey by keyword and summarize RoHS/ECCN compliance fields"
- "Chain DigiKey then RS Online Scraper to compare distributor prices for the same MPN"

### Suite next step

For RS Components / RS Online catalog enrichment, use [RS Online Scraper](https://apify.com/crawloop/rs-online-scraper). For Rockwell Automation catalog products, use [Rockwell Product Scraper](https://apify.com/crawloop/rockwell-product-scraper).

### Related Actors — Components & industrial

| Focus | Actor |
| :--- | :--- |
| **DigiKey MPN / stock / specs** | **DigiKey Product Scraper** ◄── you are here |
| RS Online stock# / prices | [RS Online Scraper](https://apify.com/crawloop/rs-online-scraper) |
| Rockwell Automation products | [Rockwell Product Scraper](https://apify.com/crawloop/rockwell-product-scraper) |

### Notes

- Prefer **sticky Apify RESIDENTIAL** proxies (US). Datacenter egress often hits Cloudflare challenges.
- The **numeric product id** in a DigiKey URL is canonical; the MPN slug in the path can be outdated or wrong.
- Filter pagination uses DigiKey’s encoded `s` state (`pagination.p` / `pagination.pp`), not bare `?page=` alone.
- `suggestion` and `error` rows are not billed as product/listing results.

# Actor input Schema

## `productUrls` (type: `array`):

DigiKey product detail page (PDP) URLs. The numeric product id in the path is the canonical identifier.

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

Search keywords or manufacturer part numbers. Resolved via DigiKey exact-match results, then each match is enriched from the PDP.

## `filterUrls` (type: `array`):

DigiKey filter (PLP) URLs such as /en/products/filter/.../{id}. Returns listing rows; enable Enrich listing products to also fetch full PDP data.

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

Stop after this many dataset items (PDP and/or listing rows).

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

Maximum PLP pages per filter URL (25 products per page). Uses DigiKey s-param pagination.

## `enrichListingProducts` (type: `boolean`):

When scraping filter URLs, also fetch full PDP data for each listed product.

## `includeSubstitutes` (type: `boolean`):

Include substitute / cross-reference rows from the PDP.

## `includeDocuments` (type: `boolean`):

Include datasheets, documents and media links from the PDP.

## `includeSuggestions` (type: `boolean`):

When a keyword has no exact match, push a suggestion record with related categories instead of skipping silently.

## `requestDelaySecs` (type: `number`):

Pause between HTTP requests on the same sticky session to reduce Cloudflare challenges.

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

Apify Proxy settings. Sticky RESIDENTIAL US sessions are required for stable DigiKey access.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.digikey.com/en/products/detail/nexperia-usa-inc/74LVC2G125DP-125/1231577"
  ],
  "keywords": [
    "STM32F407VGT6"
  ],
  "maxItems": 50,
  "maxPages": 1,
  "enrichListingProducts": false,
  "includeSubstitutes": true,
  "includeDocuments": true,
  "includeSuggestions": true,
  "requestDelaySecs": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

Default dataset items.

# 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 = {
    "productUrls": [
        "https://www.digikey.com/en/products/detail/nexperia-usa-inc/74LVC2G125DP-125/1231577"
    ],
    "keywords": [
        "STM32F407VGT6"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/digikey-product-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 = {
    "productUrls": ["https://www.digikey.com/en/products/detail/nexperia-usa-inc/74LVC2G125DP-125/1231577"],
    "keywords": ["STM32F407VGT6"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawloop/digikey-product-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 '{
  "productUrls": [
    "https://www.digikey.com/en/products/detail/nexperia-usa-inc/74LVC2G125DP-125/1231577"
  ],
  "keywords": [
    "STM32F407VGT6"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call crawloop/digikey-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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