Both there and on a call we were discussing the issues of specifying parts such as nuts and bolts. Even if you give an exact product number, someone in a different country still often has problems finding parts.
Kitspace handles this nicely for electronics components using Octopart, but this is easier for electronics components as they tend to have a fixed part number that is available in most countries. Using Octopart to look for hardware like bolts was a bit of a nightmare. In GitBuilding (a program to do things like bill of material generation for hardware documentation) we are using YAML files to specify parts and this allows multiple suppliers for each part.
Problem: How to generate libraries of parts which work in lots of countries?
My thoughts so far were to crawl a couple of websites and find common hardware components and build the library. My script is here, the libraries are auto-generated and end up here (download button on right hand side).
I was able to crawl Westfield Fasteners website as they have a really detailed product site-map, and pull out lots of information. The next step was to look at other websites. So far I have tried:
- RS comonents - Painful as they are quite inconsistent in what they specify and how
- Grainger - Also quite inconsistent, not as bad as RS - Website is a bit java script heavy which made it hard to get info from in a script
- McMaster Carr - See below
I contacted McMaster Carr about using their API to get part numbers and add it to our library so they would be listed in bills of materials. There response was:
Thanks for your interest in including McMaster-Carr in your software. We wish you the best of luck with your project, but we respectfully ask that you not scrape our website as we consider our product information to be confidential.
Which seems really weird to me.
My best solution so far
My best solution so far is to stick with McMaster Carr as their stock is so complete and their website easy to use. If you add something at the end of the URL it searches for it. As screws tend to have an ISO or a DIN standard which specifies them quite precisely I used this and it works OK
Add too much information and it goes wrong:
My solution so far is to link to specify the properties such as material, thread, length, and then to link to McMaster using the standard code so the correct screw type is shown. Unfortunately McMaster only specified ISO or DIN but not both (and it changes based on product) so I am generating links for both.
Using this library I auto generated I have have specified the nuts, bolts, and washers for our Block Stage documentation. This gives outputs like:
The rendering of the information needs a bit of tidying up.
The (0) and (1) are because I cannot currently specify 2 things for the same supplier name (Issue).
Sorry for the really long post!