# DigiKey Parts Scraper - Prices and Stock (`maximedupre/digikey`) Actor

Find DigiKey parts by URL, part number, keyword, or category. Get stock, prices, product details, specs, compliance data, documents, and substitute parts.

- **URL**: https://apify.com/maximedupre/digikey.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.35 / 1,000 enriched 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/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 Parts Scraper - Prices and Stock

### 🔎 Find the parts you need

Built for buyers, engineers, and sourcing teams, this Actor finds DigiKey parts and returns prices, stock, specs, compliance data, documents, and substitute parts. Search known parts or scan a category without copying data by hand.

- Check current stock with the **[DigiKey Inventory Scraper](https://apify.com/maximedupre/digikey/examples/digikey-inventory-scraper)** task.
- Collect quantity-break prices with the **[DigiKey Price Scraper](https://apify.com/maximedupre/digikey/examples/digikey-price-scraper)** task.
- Find parts by keyword or part number with the **[DigiKey Parts Search](https://apify.com/maximedupre/digikey/examples/digikey-parts-search)** task.
- Search the DigiKey catalog with the **[DigiKey Product Search](https://apify.com/maximedupre/digikey/examples/digikey-product-search)** task.
- Get full product details with the **[DigiKey Product Scraper](https://apify.com/maximedupre/digikey/examples/digikey-product-scraper)** task.
- Collect product or category data with the **[DigiKey Scraper](https://apify.com/maximedupre/digikey/examples/digikey-scraper)** task.

#### 📦 What data is returned?

Product rows can include DigiKey and manufacturer part numbers, descriptions, category paths, stock, lead time, order limits, packaging, quantity-break prices, technical specs, compliance and trade data, images, datasheets, documents, and substitutes. A search with no exact match can return related categories. A failed submitted value is saved as a clear error row.

Each source component is saved once per run. The first eligible match is kept, and later duplicates are ignored.

#### ▶️ Run the Actor

1. Choose one Target: Products, Keyword Search, or Category Listing.
2. Fill in the fields for that Target.
3. Choose filters and a product limit if needed.
4. Click **Start**. Open the default dataset when the run ends.

#### 🧩 Input

| Field | Type | What it does |
|---|---|---|
| `target` | string | Chooses Products, Keyword Search, or Category Listing. |
| `productInputs` | array of strings | Lists DigiKey URLs, manufacturer part numbers, or DigiKey part numbers. Used only for Products. |
| `keyword` | string | Gives one part number, product name, or search phrase. Used only for Keyword Search. |
| `manufacturers` | array of strings | Keeps only these makers in a keyword search. |
| `categoryUrls` | array of objects | Lists DigiKey category or filtered listing URLs. Used only for Category Listing. |
| `categoryUrls[].url` | string | Gives one DigiKey category or filtered listing URL. |
| `enrichment` | string | Chooses fast listing data or slower full product details for category listings. |
| `inStockOnly` | boolean | Keeps only parts DigiKey marks as in stock for keyword and category discovery. |
| `maxItems` | integer | Stops after this many products. Leave it empty to return all available results until the source is exhausted. |

Example from a successful run:

```json
{
  "target": "categoryListing",
  "categoryUrls": [
    {
      "url": "https://www.digikey.com/en/products/filter/programmable-timers-and-oscillators/689"
    }
  ],
  "enrichment": "listing",
  "inStockOnly": false,
  "maxItems": 5
}
```

#### 📤 Output

Results are saved in the default dataset. Product fields that DigiKey does not show may be left out.

##### Product row

| Field | Type | What it does |
|---|---|---|
| `resultType` | string | Is `product`. |
| `productUrl` | string | Canonical DigiKey product page. |
| `digiKeyPartNumber` | string | DigiKey orderable part number. |
| `manufacturer`, `manufacturerPartNumber` | string | Maker and maker part number. |
| `name`, `description`, `detailedDescription` | string | Product names and descriptions. |
| `category`, `subcategory`, `family`, `series` | string | Catalog groups and maker series. |
| `breadcrumbs` | array of strings | Full category path. |
| `packaging` | string | Main package or supply format. |
| `lifecycleStatus` | string | Current lifecycle status. |
| `stockQuantity`, `stockText`, `stockStatus` | integer, string | Current stock number and source status. |
| `leadTime` | string | Lead time shown by DigiKey. |
| `nonStock`, `backorderAvailable` | boolean | Non-stock and backorder flags. |
| `currency`, `unitPrice` | string, number | Price currency and one-unit price. |
| `minimumOrderQuantity` | integer | Smallest order size. |
| `pricing` | array of objects | Package-specific price groups. |
| `pricing[].packageType`, `pricing[].digiKeyPartNumber` | string | Package name and orderable part number. |
| `pricing[].minimumOrderQuantity`, `pricing[].offerMessage` | integer, string | Package order limit and source note. |
| `pricing[].priceBreaks` | array of objects | Quantity-break prices. |
| `pricing[].priceBreaks[].quantity` | integer | Quantity where a price starts. |
| `pricing[].priceBreaks[].unitPrice`, `pricing[].priceBreaks[].formattedPrice` | number, string | Numeric and source-formatted unit price. |
| `specifications` | array of objects | Technical properties. |
| `specifications[].name`, `specifications[].value`, `specifications[].unit` | string | Property name, value, and unit. |
| `specifications[].numericValue` | number | Parsed number when clear. |
| `compliance` | object | Compliance, trade, and origin details. |
| `compliance.rohsStatus`, `compliance.reachStatus` | string | RoHS and REACH status. |
| `compliance.moistureSensitivityLevel` | string | Moisture sensitivity level. |
| `compliance.eccn`, `compliance.htsCode`, `compliance.countryOfOrigin` | string | Export class, tariff code, and origin. |
| `imageUrl`, `datasheetUrl` | string | Product image and main datasheet links. |
| `documents` | array of objects | Other product documents. |
| `documents[].title`, `documents[].type`, `documents[].url` | string | Document name, kind, and link. |
| `substitutes` | array of objects | Substitute or cross-reference parts. |
| `substitutes[].digiKeyPartNumber`, `substitutes[].manufacturer`, `substitutes[].manufacturerPartNumber` | string | Substitute identifiers and maker. |
| `substitutes[].productUrl`, `substitutes[].relationship` | string | Substitute page and relationship. |

```json
{
  "resultType": "product",
  "productUrl": "https://www.digikey.com/en/products/detail/diodes-incorporated/NE555S-13/2921391",
  "digiKeyPartNumber": "NE555S-13DICT-ND",
  "manufacturer": "Diodes Incorporated",
  "manufacturerPartNumber": "NE555S-13",
  "name": "NE555S-13",
  "description": "IC OSC SNGL TIMER 500KHZ 8-SOIC",
  "detailedDescription": "555 Type, Timer/Oscillator (Single) IC 500kHz 8-SO",
  "category": "Programmable Timers and Oscillators",
  "subcategory": "Clock/Timing",
  "family": "Integrated Circuits (ICs)",
  "breadcrumbs": [
    "Integrated Circuits (ICs)",
    "Clock/Timing",
    "Programmable Timers and Oscillators"
  ],
  "series": "-",
  "packaging": "Cut Tape (CT) & Digi-Reel®",
  "lifecycleStatus": "Active",
  "stockQuantity": 17870,
  "stockText": "17,870",
  "stockStatus": "In Stock",
  "leadTime": "40 Weeks",
  "nonStock": false,
  "backorderAvailable": true,
  "currency": "USD",
  "unitPrice": 0.28,
  "minimumOrderQuantity": 1,
  "pricing": [
    {
      "packageType": "Cut Tape (CT) & Digi-Reel®",
      "digiKeyPartNumber": "NE555S-13DICT-ND",
      "minimumOrderQuantity": 1,
      "priceBreaks": [
        {
          "quantity": 1,
          "unitPrice": 0.28,
          "formattedPrice": "$0.28000"
        },
        {
          "quantity": 10,
          "unitPrice": 0.189,
          "formattedPrice": "$0.18900"
        },
        {
          "quantity": 25,
          "unitPrice": 0.1672,
          "formattedPrice": "$0.16720"
        },
        {
          "quantity": 50,
          "unitPrice": 0.1538,
          "formattedPrice": "$0.15380"
        },
        {
          "quantity": 100,
          "unitPrice": 0.1429,
          "formattedPrice": "$0.14290"
        }
      ]
    },
    {
      "packageType": "Tape & Reel (TR)",
      "digiKeyPartNumber": "NE555S-13DITR-ND",
      "minimumOrderQuantity": 2500,
      "priceBreaks": [
        {
          "quantity": 2500,
          "unitPrice": 0.11272,
          "formattedPrice": "$0.11272"
        },
        {
          "quantity": 7500,
          "unitPrice": 0.10726,
          "formattedPrice": "$0.10726"
        }
      ]
    }
  ],
  "specifications": [
    {
      "name": "Manufacturer",
      "value": "Diodes Incorporated"
    },
    {
      "name": "Series",
      "value": "-"
    },
    {
      "name": "Packaging",
      "value": "Tape & Reel (TR), Cut Tape (CT), Digi-Reel®"
    },
    {
      "name": "Part Status",
      "value": "Active"
    },
    {
      "name": "Type",
      "value": "555 Type, Timer/Oscillator (Single)"
    },
    {
      "name": "Count",
      "value": "-"
    },
    {
      "name": "Frequency",
      "value": "500kHz"
    },
    {
      "name": "Voltage - Supply",
      "value": "4.5V ~ 16V"
    },
    {
      "name": "Current - Supply",
      "value": "13 mA"
    },
    {
      "name": "Operating Temperature",
      "value": "0°C ~ 70°C"
    },
    {
      "name": "Package / Case",
      "value": "8-SOIC (0.154\", 3.90mm Width)"
    },
    {
      "name": "Supplier Device Package",
      "value": "8-SO"
    },
    {
      "name": "Mounting Type",
      "value": "Surface Mount"
    },
    {
      "name": "Base Product Number",
      "value": "NE555"
    }
  ],
  "compliance": {
    "rohsStatus": "ROHS3 Compliant",
    "moistureSensitivityLevel": "1  (Unlimited)",
    "reachStatus": "REACH Unaffected",
    "eccn": "EAR99",
    "htsCode": "8542.39.0070"
  },
  "imageUrl": "https://mm.digikey.com/Volume0/opasdata/d220001/medias/images/5741/31%7E8SO-3.9%7E%7E8.jpg?hidebanner=true",
  "datasheetUrl": "https://www.diodes.com/assets/Datasheets/NE555_SA555_NA555.pdf",
  "documents": [
    {
      "title": "Datasheets",
      "url": "https://www.diodes.com/assets/Datasheets/NE555_SA555_NA555.pdf"
    },
    {
      "title": "Environmental Information",
      "url": "https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/6731/Diode%20RoHS3%20REACH%20247%20Jan%202025%20Statement.pdf"
    },
    {
      "title": "Featured Product",
      "url": "https://www.digikey.com/en/product-highlight/d/diodes/precision-timer-ics"
    },
    {
      "title": "PCN Assembly/Origin",
      "url": "https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/4884/PCN_2512_Rev1.pdf"
    },
    {
      "title": "EDA Models",
      "url": "https://www.digikey.com/en/models/2921391"
    }
  ],
  "substitutes": [
    {
      "manufacturerPartNumber": "SE555P",
      "manufacturer": "Texas Instruments",
      "productUrl": "https://www.digikey.com/en/products/detail/texas-instruments/SE555P/380221",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "FIT0242",
      "manufacturer": "DFRobot",
      "productUrl": "https://www.digikey.com/en/products/detail/dfrobot/FIT0242/25558500",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "LM321SN3T1G",
      "manufacturer": "onsemi",
      "productUrl": "https://www.digikey.com/en/products/detail/onsemi/LM321SN3T1G/6134950",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "P0915N-FC15BR100K",
      "manufacturer": "TT Electronics/BI",
      "productUrl": "https://www.digikey.com/en/products/detail/tt-electronics-bi/P0915N-FC15BR100K/5957453",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "PV36W203C01B00",
      "manufacturer": "Bourns Inc.",
      "productUrl": "https://www.digikey.com/en/products/detail/bourns-inc/PV36W203C01B00/666508",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "SA555P",
      "manufacturer": "Texas Instruments",
      "productUrl": "https://www.digikey.com/en/products/detail/texas-instruments/SA555P/380232",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "NE555DR",
      "manufacturer": "Texas Instruments",
      "productUrl": "https://www.digikey.com/en/products/detail/texas-instruments/NE555DR/372491",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "2N3904",
      "manufacturer": "Diotec Semiconductor",
      "productUrl": "https://www.digikey.com/en/products/detail/diotec-semiconductor/2N3904/13164701",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "1N4148",
      "manufacturer": "onsemi",
      "productUrl": "https://www.digikey.com/en/products/detail/onsemi/1N4148/458603",
      "relationship": "You May Also Be Interested In"
    },
    {
      "manufacturerPartNumber": "LTL-4231N",
      "manufacturer": "Lite-On Inc.",
      "productUrl": "https://www.digikey.com/en/products/detail/lite-on-inc/LTL-4231N/214440",
      "relationship": "You May Also Be Interested In"
    }
  ]
}
```

##### Category suggestion row

| Field | Type | What it does |
|---|---|---|
| `resultType` | string | Is `categorySuggestions`. |
| `keyword` | string | Search text that led to the suggestions. |
| `relatedCategories` | array of objects | Related DigiKey categories. |
| `relatedCategories[].name` | string | Category name. |
| `relatedCategories[].url` | string | Category page. |
| `relatedCategories[].productCount` | integer | Product count shown for the category. |

```json
{
  "resultType": "categorySuggestions",
  "keyword": "perovskite solar cell controller",
  "relatedCategories": [
    {
      "name": "Solar Cells",
      "url": "https://www.digikey.com/en/products/filter/solar-cells/514",
      "productCount": 1
    }
  ]
}
```

##### Failure row

| Field | Type | What it does |
|---|---|---|
| `resultType` | string | Is `error`. |
| `sourceReference` | string | Submitted value that failed. |
| `error` | string | Safe reason it failed. |
| `failedAt` | string | Time the last access attempt failed. |

```json
{
  "resultType": "error",
  "sourceReference": "THIS-PART-DOES-NOT-EXIST-XYZ",
  "error": "No matching DigiKey product was found",
  "failedAt": "2026-07-30T19:51:34.055Z"
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. A listing product is charged when a product row is saved from a category, filter, or search listing. An enriched product is charged when a product with available detail-page data is saved. Category suggestions and failure rows are not product charges.

#### 🔌 Integrations

Send dataset rows to Google Sheets, Make, Zapier, Slack, webhooks, or your own app with Apify integrations and API tools.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Does this use the official DigiKey API?

No. It reads public DigiKey catalog pages. Use DigiKey's official API when you need an official, key-based service.

##### Can I look up a BOM?

Yes. Choose Products and add the known manufacturer or DigiKey part numbers. Each source part is saved at most once per run.

##### Can I scan a whole category?

Yes. Choose Category Listing and add category or filtered listing URLs. Leave `maxItems` empty to return all available results until the source is exhausted.

##### What happens when a keyword has no exact part match?

The dataset can include related DigiKey category suggestions instead of silently dropping the search.

##### Does it buy parts or track price history?

No. It does not handle carts, checkout, quotes, alerts, or price history. It returns the data shown during the run.

### 📝 Changelog

#### 0.1: Expanded DigiKey product discovery

- Search by URL, part number, keyword, or category and filter discovery results by manufacturer and stock availability.
- Choose fast listing results or enriched product details with pricing, specifications, compliance data, documents, and substitutes.
- Resume interrupted runs safely and return clear category suggestions or failure rows when no product match is available.

#### 0.0: Initial release

- Find DigiKey products by URL, part number, keyword, or category listing.
- Export stock, quantity-break prices, technical specifications, compliance data, documents, and substitute parts.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~digikey/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Digikey Parts Scraper - Electronic Components, Prices and Stock](https://apify.com/jungle_synthesizer/digikey-parts-scraper) offers another way to collect DigiKey parts and sourcing data.
- [DigiKey Product Scraper — MPN, Pricing Tiers, Stock & Specs](https://apify.com/crawloop/digikey-product-scraper) offers another DigiKey product-detail workflow.
- [Mouser Parts Scraper](https://apify.com/axlymxp/mouser-parts-scraper) collects parts from another electronics distributor.
- [LCSC Listings Scraper](https://apify.com/piotrv1001/lcsc-listings-scraper) collects LCSC listings for sourcing comparisons.
- [RS Online Listings Scraper](https://apify.com/piotrv1001/rs-online-listings-scraper) collects parts listed by RS Online.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `target` (type: `string`):

Choose how to find products.

## `productInputs` (type: `array`):

Enter DigiKey product URLs, manufacturer part numbers, or DigiKey part numbers. You can mix these values in one list. Used only for the Products Target.

## `keyword` (type: `string`):

Enter one part number, product name, or search phrase. Used only for the Keyword Search Target.

## `manufacturers` (type: `array`):

Return only products from these manufacturer names. Used only for the Keyword Search Target.

## `categoryUrls` (type: `array`):

Add DigiKey category or filtered listing URLs. Used only for the Category Listing Target.

## `enrichment` (type: `string`):

Choose fast listing data or slower full product details. Used only for the Category Listing Target.

## `inStockOnly` (type: `boolean`):

Return only products that DigiKey marks as in stock. Used for Keyword Search and Category Listing.

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

Stop after saving this many products. Used for Keyword Search and Category Listing. Leave it empty to return all available results until the source is exhausted.

## Actor input object example

```json
{
  "target": "categoryListing",
  "categoryUrls": [
    {
      "url": "https://www.digikey.com/en/products/filter/programmable-timers-and-oscillators/689"
    }
  ],
  "enrichment": "listing",
  "inStockOnly": false,
  "maxItems": 5
}
```

# Actor output Schema

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

Open product records and category suggestions in the default dataset.

# 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 = {
    "target": "categoryListing",
    "categoryUrls": [
        {
            "url": "https://www.digikey.com/en/products/filter/programmable-timers-and-oscillators/689"
        }
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/digikey").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 = {
    "target": "categoryListing",
    "categoryUrls": [{ "url": "https://www.digikey.com/en/products/filter/programmable-timers-and-oscillators/689" }],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/digikey").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 '{
  "target": "categoryListing",
  "categoryUrls": [
    {
      "url": "https://www.digikey.com/en/products/filter/programmable-timers-and-oscillators/689"
    }
  ],
  "maxItems": 5
}' |
apify call maximedupre/digikey --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/WOnyDfvIqBNQIebqp/builds/BSKezqi1jgyBAWNC0/openapi.json
