Function Repository Resource:

AdafruitProductData

Source Notebook

Get Adafruit Industries electronics DIY products and components data

Contributed by: Daniel de Souza Carvalho

ResourceFunction["AdafruitProductData"]["Products"]

returns a Dataset of all electronic components and products from Adafruit Industries.

ResourceFunction["AdafruitProductData"][productID]

returns a Dataset with data on the electronic component with the given productID.

ResourceFunction["AdafruitProductData"]["Categories"]

returns a Dataset of categories of electronic components.

ResourceFunction["AdafruitProductData"]["Categories", categoryID]

returns a Dataset of data on the specified categoryID.

Details

ResourceFunction["AdafruitProductData"] gives access to all electronics components, categories and kits from Adafruit Industries for engineering, robotics, IoT, makers, hobbyists, prototyping and fun.
ResourceFunction["AdafruitProductData"][] is equivalent to AdafruitProductData["Products"]. ResourceFunction["AdafruitProductData"]["Products", productID] is equivalent to ResourceFunction["AdafruitProductData"][productID].
All Adafruit Industries product IDs and category IDs are integer numbers.

Examples

Basic Examples (4) 

Calling AdafruitProductData[] gives all data about electronics products from Adafruit as a Dataset:

In[1]:=
afelectronics = ResourceFunction["AdafruitProductData"][]
Out[1]=

Check all the dataset fields available, looking at the first record as an example:

In[2]:=
afelectronics[1]
Out[2]=

View all the dataset keys (fields):

In[3]:=
Normal[Keys[afelectronics[1]]]
Out[3]=

Get just one specific product by the product ID:

In[4]:=
raspBerryPi = ResourceFunction["AdafruitProductData"][998]
Out[4]=

Get the product image:

In[5]:=
Import[raspBerryPi["product_image"]]
Out[5]=

Specify that we are looking for a product:

In[6]:=
ResourceFunction["AdafruitProductData"]["Products", 2012]
Out[6]=

Get the full list of categories:

In[7]:=
categories = ResourceFunction["AdafruitProductData"]["Categories"];

Check the category dataset fields:

In[8]:=
categories[1]
Out[8]=

Find information on just one category by ID:

In[9]:=
ResourceFunction["AdafruitProductData"]["Categories", 5]
Out[9]=

Applications (2) 

Investigate the "Arduino" related electronic products available:

In[10]:=
afeletronics = ResourceFunction["AdafruitProductData"][];
afarduino = afeletronics[Select[StringContainsQ[#"product_name", "Arduino" ] &]]
Out[11]=

View just image, name and price of the first 10 "Arduino" electronic products:

In[12]:=
afarduino[
 1 ;; 10, {Image[Import[#"product_image"], ImageSize -> Small] &, "product_name", "product_price"}]
Out[12]=

Possible Issues (3) 

Asking for a product that does not exist returns an empty dataset:

In[13]:=
ResourceFunction["AdafruitProductData"]["Products", 3033]
Out[13]=

Asking for a category that does not exist returns an empty dataset:

In[14]:=
ResourceFunction["AdafruitProductData"]["Categories", 1111]
Out[14]=

Asking for a product that does not exist returns an empty dataset:

In[15]:=
ResourceFunction["AdafruitProductData"][33]
Out[15]=

Neat Examples (4) 

Get the electronics products dataset:

View the first 10 LED related products:

In[16]:=
afelectronics[Select[StringContainsQ[#"product_name", "LED" ] &]];
%[1 ;; 10, {Image[Import[#"product_image"], ImageSize -> Small] &, "product_name", "product_price"}]
Out[17]=

View ESP32 microcontroller related products:

In[18]:=
afelectronics[Select[StringContainsQ[#"product_name", "ESP32" ] &]][
 1 ;; 10, {Image[Import[#"product_image"], ImageSize -> Small] &, "product_name", "product_price"}]
Out[18]=

Find the category for "Arduino":

In[19]:=
categories = ResourceFunction["AdafruitProductData"]["Categories"];
In[20]:=
categories[
 Select[StringContainsQ[#"category_name", "Arduino"] &], {"category_id", "category_name"}]
Out[20]=

We can create a small interactive application to see all "Arduino" related projects in a interactive Manipulate:

In[21]:=
af = afelectronics[Select[#"product_manufacturer" == "Adafruit" & ]];
In[22]:=
Manipulate[Column[{
   af[seq, "product_id"],
   af[seq, "product_name"],
   af[seq, "product_price"],
   Image[Import[af[seq, "product_image"], ImageSize -> Medium]]},
  Frame -> All],
 {seq, 1, Length[af], 1},
 SaveDefinitions -> True]
Out[22]=

Create a card for an electronic product:

In[23]:=
Column[Normal[ResourceFunction["AdafruitProductData"][3964][{
     Import[#"product_image"],
     #"product_price",
     #"product_name",
     WordCloud[Import[#"product_url"]]} &]],
 Frame -> All]
Out[23]=

Get an AI summary of the electronic product webpage text:

In[24]:=
TextSummarize[
 Import[First[
   Normal[ResourceFunction["AdafruitProductData"][
      3022][{#"product_url" &}]]]]]
Out[25]=

Try improving the language with LLMSynthesize:

In[26]:=
LLMSynthesize[
 "Create a paragraph with specification about the electronic components highlighted at this WEB page text:\n"
  <> Import[
   First[Normal[
     ResourceFunction["AdafruitProductData"][3022][{#"product_url" &}]]]]]
Out[27]=

Publisher

Daniel de Souza Carvalho

Requirements

Wolfram Language 14.0 (January 2024) or above

Version History

  • 1.0.0 – 07 April 2025

Source Metadata

Related Resources

Author Notes

This function is a wrapper for Adafruit WEB API; it requires an internet connection. It is possible to do an initial request for electronic products data and use the dataset for computation. Be kind with multiple sequential requests to the Adafruit WEB API. Limit your rate of usage to 5 requests per minute or less.

License Information