SparkFun APIsparkfun.com ↗
Access SparkFun's electronics catalog via API. Search products, retrieve pricing, bulk tiers, stock status, category hierarchy, and today's deals.
What is the SparkFun API?
The SparkFun API covers 6 endpoints that expose product search, full product details, live pricing, stock status, category browsing, and daily deals from SparkFun's electronics catalog. The get_product_details endpoint alone returns 10 fields per product including bulk pricing tiers, review count, and image arrays. Whether you're building a parts-sourcing tool or a price tracker, the API gives structured access to SparkFun's full catalog.
curl -X GET 'https://api.parse.bot/scraper/13fda662-fc79-49a7-a8b2-70033f773694/search_products?page=1&limit=12&query=arduino&sort_by=relevance' \ -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 sparkfun-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.
"""SparkFun Electronics API — search products, browse categories, check stock."""
from parse_apis.sparkfun_electronics_api import SparkFun, Sort, ProductNotFound
client = SparkFun()
# Search for Arduino products sorted by price, capped at 5 results.
for item in client.products.search(query="arduino", sort_by=Sort.PRICE, limit=5):
print(item.name, item.price, item.slug)
# Drill into the first search result for full details.
summary = client.products.search(query="sensor", limit=1).first()
if summary:
product = summary.details()
print(product.name, product.sku, product.stock_status)
# Browse a category by constructing it from its slug.
for item in client.category(slug="audio").products(sort_by=Sort.NAME, limit=3):
print(item.name, item.price)
# Fetch product pricing and bulk tiers from a known product.
try:
detail = client.products.get(product_id="sparkfun-qwiic-buzzer")
pricing = detail.pricing()
print(pricing.price, pricing.stock_status, len(pricing.price_tiers))
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
# List available categories.
for cat in client.categories.list(limit=3):
print(cat.name, cat.slug, len(cat.subcategories))
print("exercised: products.search / summary.details / products.get / product.pricing / category.products / categories.list")
Full-text search over SparkFun's product catalog. Returns paginated results sorted by relevance, name, price, or go-live date. Each result includes product name, price, URL slug, and thumbnail. Use the slug to fetch full details via get_product_details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| limit | string | Items per page. Accepted values: 12, 24, 36, 48, all. |
| queryrequired | string | Search keyword (e.g. 'arduino', 'sensor', 'led'). |
| sort_by | string | Sort field. Accepted values: name, price, sf_golive_date, relevance. |
{
"type": "object",
"fields": {
"page": "current page number",
"limit": "items per page",
"query": "search keyword echoed back",
"products": "array of product summaries with name, sku, url, slug, price, image_url",
"total_results": "total number of matching products"
},
"sample": {
"data": {
"page": 1,
"limit": 12,
"query": "arduino",
"products": [
{
"sku": null,
"url": "https://www.sparkfun.com/arduino-fio.html",
"name": "Arduino Fio",
"slug": "arduino-fio",
"price": "$10.83",
"image_url": "https://www.sparkfun.com/media/catalog/product/cache/df4360b598d6f0c75fa659693b376bad/1/0/10116-01.jpg"
}
],
"total_results": 467
},
"status": "success"
}
}About the SparkFun API
Search and Browse the Catalog
The search_products endpoint accepts a query string and returns paginated results including each product's name, sku, price, slug, and image_url. Pagination is controlled with page and limit (accepted values: 12, 24, 36, 48, or all), and results can be sorted by name, price, sf_golive_date, or relevance. The browse_category endpoint works the same way but scopes results to a specific category — supply a category_slug obtained from list_all_categories, which returns the full SparkFun category hierarchy including nested subcategories, each with its own slug and url.
Product Detail and Pricing
Passing a product slug to get_product_details returns the full data set for that item: sku, name, price, description, images array, rating (out of 5, or null if unrated), review_count, price_tiers for bulk purchasing, and an internal product_id. The get_product_pricing_and_stock endpoint is a focused alternative — it returns the same price, price_tiers, and sku fields, plus a stock_status string and a stock_details object with extended availability data. Use this endpoint when you need current availability without fetching the full product description.
Deals and Promotions
The get_todays_deals endpoint takes no inputs and returns the current set of discounted products from SparkFun's Today's Deals page. Each deal item includes name, sku, url, slug, price, and image_url — the same shape as search and category results, making it straightforward to integrate deal monitoring into an existing product pipeline.
The SparkFun API is a managed, monitored endpoint for sparkfun.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sparkfun.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 sparkfun.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?+
- Track price changes on specific SparkFun SKUs by polling
get_product_pricing_and_stockon a schedule - Build a parts sourcing tool that searches SparkFun by component keyword and returns in-stock items with pricing
- Aggregate bulk pricing tiers from
price_tiersto calculate cost at different order quantities - Monitor
get_todays_dealsdaily to surface discounted components for a deal alert service - Construct a full category tree using
list_all_categoriesto build a site mirror or internal catalog browser - Compare SparkFun product ratings and review counts across similar components using
get_product_details
| 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 SparkFun have an official developer API?+
What does `get_product_details` return that `get_product_pricing_and_stock` does not?+
get_product_details returns the full description text, the images array, rating, review_count, and an internal product_id alongside pricing fields. get_product_pricing_and_stock returns only name, sku, price, price_tiers, stock_status, and stock_details — useful when description content is not needed and you want a lighter response.Does the API expose customer review text or only aggregate ratings?+
rating (average out of 5) and review_count from get_product_details. Individual review text and reviewer metadata are not included. You can fork the API on Parse and revise it to add an endpoint that retrieves per-review content.How does pagination work across search and category endpoints?+
search_products and browse_category accept page and limit parameters. The limit parameter accepts only discrete values: 12, 24, 36, 48, or all. search_products also echoes back total_results so you can calculate how many pages exist. browse_category does not currently return a total_results field in its response.