DigiKey APIdigikey.com ↗
Search DigiKey's component catalog by keyword, part number, category, or manufacturer. Get pricing, stock, and specs for electronic components via 4 endpoints.
What is the DigiKey API?
The DigiKey API gives access to DigiKey's electronic component catalog across 4 endpoints, returning pricing, stock levels, and specifications for millions of parts. The keyword_search endpoint accepts a search term plus an optional category_id filter and returns paginated product arrays with unit price, stock quantity, and both DigiKey and manufacturer part numbers. Lookup by specific part number, category browsing, and manufacturer listing are also supported.
curl -X GET 'https://api.parse.bot/scraper/cfe8081d-8583-4960-aaa7-b407547a0c0b/keyword_search?page=1&limit=5&query=resistor&category_id=48' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace digikey-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""DigiKey electronic component search — bounded, re-runnable walkthrough."""
from parse_apis.digikey_product_search_api import DigiKey, ProductNotFound
client = DigiKey()
# Search for resistors — limit caps total items fetched across pages.
for product in client.products.search(query="capacitor 100nF", limit=3):
print(product.digikey_part_number, product.manufacturer, product.unit_price)
# Lookup a specific part number and inspect matching variants.
lookup = client.products.lookup(part_number="ATmega328P-PU")
print(lookup.manufacturer_part_number, lookup.product_url)
for match in lookup.matching_products:
print(match.digikey_part_number, match.product_url)
# Construct a category by ID and list its manufacturers.
category = client.category(id="3")
for mfr in category.manufacturers.list(limit=5):
print(mfr.name, mfr.count)
# Typed error handling on a lookup that may not exist.
try:
result = client.products.lookup(part_number="NONEXISTENT_XYZ_999")
print(result.digikey_part_number)
except ProductNotFound as exc:
print(f"Part not found: {exc.part_number}")
print("exercised: products.search / products.lookup / category.manufacturers.list / ProductNotFound")Full-text keyword search across DigiKey's electronic component catalog. Returns products with pricing, stock levels, and specification data. Filterable by category. Paginates via integer page counter; each page returns up to `limit` items.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| limit | integer | Maximum number of results to return per page |
| queryrequired | string | Search keyword or term (e.g. 'resistor', 'capacitor 100nF', '10k ohm') |
| category_id | string | Category ID to filter results within a specific category |
{
"type": "object",
"fields": {
"query": "search query string echoed back",
"products": "array of product objects with digikey_part_number, manufacturer_part_number, manufacturer, description, unit_price, stock, price_breaks, product_url, image_url, datasheet_url",
"category_id": "category ID used for filtering",
"category_name": "display name of the category",
"total_results": "total number of matching products (string with possible comma formatting)"
}
}About the DigiKey API
Search and Product Lookup
The keyword_search endpoint accepts a required query string (e.g. 'ATmega328' or 'capacitor 100nF') and optional category_id, page, and limit parameters. Each product in the response includes digikey_part_number, manufacturer_part_number, manufacturer, description, unit_price, stock, and price_b. The total_results field indicates how many products match across all pages, allowing you to implement standard offset pagination.
The get_product_details endpoint takes a part_number string — either a DigiKey part number or a manufacturer part number (MPN) — and returns the best-match product's digikey_part_number, manufacturer_part_number, and product_url, plus a matching_products array for cases where the same MPN is stocked by multiple suppliers. This is useful for resolving ambiguous MPNs before pulling further catalog data.
Category and Manufacturer Data
The get_categories endpoint accepts an optional category_id (e.g. '3' for Capacitors) and returns a category object containing id, name, description, product_count, and sub_categories. The response also includes a breadcrumb array and related_categories, making it straightforward to traverse the category hierarchy from top level down to specific component families.
The get_manufacturers endpoint lists all manufacturers with products in a given category, returning an array of objects with id, name, and count. Combined with keyword_search's category_id filter, this enables building category-scoped supplier directories or filtering searches to a specific manufacturer's portfolio.
The DigiKey API is a managed, monitored endpoint for digikey.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when digikey.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official digikey.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a BOM (bill of materials) pricer that resolves each MPN via
get_product_detailsand pullsunit_priceandstockfor every line item. - Monitor stock availability for critical components by polling
keyword_searchfor specific part numbers and alerting whenstockdrops below a threshold. - Generate a category-scoped manufacturer directory using
get_manufacturerswith a targetcategory_idto list all suppliers and their part counts. - Populate a component selection tool that lets users browse the category tree via
get_categoriesand then search within a chosen category. - Cross-reference
manufacturer_part_numbervalues from datasheets against DigiKey availability to validate sourcing options. - Build pricing comparison tables by querying
keyword_searchfor a component type and surfacingunit_priceacross multiple matching products. - Audit which manufacturers supply a given component category using the
countfield returned byget_manufacturers.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does DigiKey have an official developer API?+
What does `get_product_details` return when multiple suppliers carry the same MPN?+
digikey_part_number, manufacturer_part_number, and product_url, plus a matching_products array that lists each matching product separately. This handles cases where the same MPN appears under different DigiKey part numbers, such as variant packaging options.Does the API return historical pricing or price break tables beyond `unit_price`?+
keyword_search response includes unit_price and price_b per product but does not expose full quantity price-break tables (e.g. pricing at 10, 100, 1000 units). You can fork this API on Parse and revise it to add an endpoint that retrieves the complete price-break schedule from a product detail page.Is there a way to filter `keyword_search` results by manufacturer?+
keyword_search endpoint supports filtering by category_id but does not currently accept a manufacturer filter parameter directly. You can retrieve manufacturer IDs via get_manufacturers and then apply client-side filtering on the manufacturer field in the response array. Alternatively, you can fork the API on Parse and revise it to add a manufacturer filter parameter.How does pagination work in `keyword_search`?+
page and limit integer parameters. The total_results field in the response is returned as a string and reflects the full count of matching products, not just the current page. Divide total_results by your limit value to calculate the number of pages available.