Adafruit APIadafruit.com ↗
Access Adafruit's full electronics catalog via API. Fetch product details, stock status, pricing, datasheets, category listings, and search results.
What is the Adafruit API?
The Adafruit API gives developers access to 7 endpoints covering the full Adafruit electronics catalog, including product details, availability, and category browsing. The get_product_details endpoint returns over 10 fields per product — name, price, stock status, variants, datasheet links, breadcrumb path, and related products — identified by numeric SKU. Search, browse by category, and track new or featured arrivals are all supported.
curl -X GET 'https://api.parse.bot/scraper/d90c84cb-2f18-4b41-ab40-8e2a52aa0116/get_product_details?product_id=1819' \ -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 adafruit-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.
"""Walkthrough: Adafruit Shop SDK — search products, browse categories, check stock."""
from parse_apis.adafruit_shop_api import Adafruit, Sort, ProductNotFound
client = Adafruit()
# Search for Arduino products sorted by best match
for product in client.products.search(query="sensor", sort=Sort.BEST_MATCH, limit=3):
print(product.product_name, product.price, product.stock_status)
# Get full details for one product via drill-down
item = client.products.search(query="raspberry pi", limit=1).first()
if item:
detail = item.details()
print(detail.product_name, detail.price)
print("Specs:", len(detail.technical_specifications), "sections")
for ds in detail.datasheet_links:
print(" Datasheet:", ds.name)
# Browse a category by constructing it from its ID
category = client.category(category_id="105")
for p in category.products(limit=3):
print(p.product_name, p.price)
# List all categories and inspect featured products
cat = client.categories.list(limit=1).first()
if cat:
print(cat.category_name)
for fp in cat.featured_products:
print(" Featured:", fp.product_name, fp.product_id)
# Typed error handling for a missing product
try:
missing = client.products.get(product_id="9999999")
print(missing.product_name)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.search / details / products.get / category.products / categories.list")
Fetch full details for a single product by product ID. Returns product name, pricing, stock status, technical specifications, images, variants, quantity discounts, datasheets, related products, and breadcrumb path. Returns stale_input with kind 'input_not_found' if the product page does not exist.
| Param | Type | Description |
|---|---|---|
| product_idrequired | string | Numeric product ID (SKU) to fetch details for. |
{
"type": "object",
"fields": {
"price": "string — formatted price with dollar sign",
"variants": "array of variant objects with product_id and name",
"image_urls": "array of full-size image URLs",
"product_id": "string — numeric SKU",
"description": "string — full product description",
"product_name": "string — product title",
"stock_status": "string — availability text",
"breadcrumb_path": "array of category breadcrumb strings",
"datasheet_links": "array of objects with name and url",
"related_products": "array of related product objects with product_name, product_id, price",
"quantity_discounts": "array of discount objects with quantity and price",
"technical_specifications": "array of specification strings"
}
}About the Adafruit API
Product Data and Stock Lookups
The get_product_details endpoint accepts a product_id (numeric SKU) and returns a full record: product_name, price, stock_status, description, image_urls, variants, datasheet_links, related_products, and a breadcrumb_path array that shows where the product sits in the category hierarchy. For lighter-weight availability checks, get_product_stock_status returns stock_status, current_price, and a quantity_discounts array with tier-based pricing — useful for monitoring a specific part number without fetching the full product record.
Search and Category Browsing
The search_products endpoint accepts a query string and optional filters: sort (best match or most recent), availability (in stock, out of stock, or discontinued, passed as a JSON array string), price_ranges (five tiers from under $5 to $25+), and category_id to scope results to a specific department. The get_category_products endpoint browses a category directly by category_id and returns the category_name alongside a paginated product list. Both endpoints return product objects with product_name, product_id, price, stock_status, thumbnail_image_url, description, and url. The list_all_categories endpoint requires no inputs and returns all top-level categories with their category_id, category_name, and a sample of featured_products.
New Arrivals and Featured Products
get_new_products and get_featured_products provide catalog discovery without a search query. Both return the same product object shape. get_new_products accepts a limit parameter to control how many recent additions are returned. get_featured_products reflects whatever Adafruit is currently highlighting on their featured page. These endpoints are useful for building inventory monitors or alerting systems for new hardware releases.
The Adafruit API is a managed, monitored endpoint for adafruit.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when adafruit.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 adafruit.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?+
- Monitor stock status and quantity discount tiers for specific Adafruit SKUs using
get_product_stock_status - Build a component search tool filtered by price range and availability using
search_products - Track new hardware releases by polling
get_new_productswith alimitparameter - Construct a category browser by fetching all top-level departments via
list_all_categoriesthen drilling into products withget_category_products - Pull datasheet URLs and technical specs for a parts database using the
datasheet_linksfield fromget_product_details - Aggregate related product suggestions for a recommendation widget using the
related_productsarray - Sync featured product listings to an external storefront or newsletter using
get_featured_products
| 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 Adafruit have an official developer API?+
How do availability filters work in `search_products`?+
availability parameter takes a JSON array string. Pass '["i"]' for in-stock items, '["o"]' for out of stock, or '["d"]' for discontinued. The price_ranges parameter follows the same pattern: '["0"]' returns items under $5, '["1"]' covers $5–$9.99, '["2"]' $10–$24.99, and '["3"]' $25 and above. Both filters can be combined with a category_id to narrow results further.Does the API return customer reviews or Q&A for products?+
What does `breadcrumb_path` contain and why is it useful?+
breadcrumb_path field in get_product_details is an array of category label strings representing the product's position in the Adafruit category hierarchy — for example, ["Electronics", "Microcontrollers", "Arduino"]. It lets you infer category membership for a product without making a separate category lookup.