Improved Part Searches For JLCPCB Parts

Finding the JLCPCB component parts library frustrating to navigate, [Jan Mrázek] took matters into his own hands and made an open-source parametric search utility. We’ve all probably wasted time before trying to track down a particular flavor of a part, and this tool promises to make the process easier.  It downloads data from the JLCPCB parts site upon initialization and presents the user with typical selection filters for categories and parameter values. You can install it yourself on GitHub Pages, or [Jan] provides a link to his site.

For the curious, the details of how to pull parts information from the JLBPCB site can be found in the project’s source code.  We like it when a distributor provides this level of access to their part details and parameters, allowing others to sort and filter the parts in ways not originally envisioned by the site design team.  We think this is a win-win situation — distributors can’t sell parts that designers can’t find.

If [Jan]’s name sounds familiar, it should be.  We have written about several of his projects before, two of them are also PCB designer tools ( KiCad Board Renderings and KiCad Panelization ).

26 thoughts on “Improved Part Searches For JLCPCB Parts

  1. Access to cheap PCA services like JLCPCB is a game-changer, so projects like this are very welcome.

    Sure, OSHPark can do me a board and stencils for a board with a QFP-100 part. But it’s a pain to assemble, and LCSC is often cheaper than Digikey, so…yeah…

  2. Will give this a try as I use JLPCB and LCSC a lot due to the tight integration to EasyEDA, reliable service and some nice niche parts they carry.

    A shame JLPCB and LCSC are only doing courier deliveries at the moment so you need to add US$22 minimum to any order and also you used to be able to combine shipping on JLPCB and LCSC but no longer the case so I find myself going back to RS or digikey for small orders as they have free delivery in most cases and that courier money saved buys a lot of stuff.

  3. Thank ou. JLCPCB is my current favorite, but their component selection is a bit painful. Getting from Kicad to JLCPCB was a bit trying so I wrote a simple conversion aplication to ease the paths from Kicad’s pos file to JLC’s cpl and bom files.
    A text based conversion file converts from popular Kicad footprint names to JLC footprint names. Additionally a rotational offset can be introduced to correct for rotational variations.
    correction for the top and bottom location formats is also provided.

    Get your version here.
    Open source.

    1. JLCPCB is using a subset of LCSC parts. My catalog works by fetching list of available components from JLCPCB and then fetching component properties from LCSC, where at least some parameters are in semi-machine-readable form. JLCPCB offers nothing but a text description. So in theory, it is possible – right now it is just a catalog of a subset of LCSC components. However, in practice it would be much more complicated to build LCSC catalog. LCSC has no public API, so all data have to be scraped and they don’t allow you to make more than 100 requests per minute. That’s why my JLCPCB catalog uses incremental updates, since it took me 3,5 days just to download the initial database from LCSC. And currently, I have no idea how to obtain all LCSC order codes/product pages from their page.

  4. It doesn’t work for me, I entered ESP8266EX and got back a forever-spinning doughnut. I am not seeing any blocked scripts. I know the ESP8266EX is on the JLPCB site, I searched for it successfully there. I’m using the latest mainstream Firefox browser on a laptop.

      1. I have a secondary Firefox Profile with “never remember history” setting. I think that disallowes indexDB usage – even temporarily. So it doesn’t work on that profile. (Works well with my regular Profile).

        1. Then I am afraid I can’t do anything about it. Since I didn’t want to complicate my life with having a backend which scales well, I decided to make the project without a backed – it is just a static site rebuilt every night by Travis. Therefore, IndexedDB is must have for using the project.

          But you are right – my code does not check if the browser supports IndexedDB. I should add such check.

  5. Is there an advantage over using the API versus downloading the CSV? Currently I just download the CSV and filter in Libreoffice which works 3x as well als using the JLCPCB website. But this is soooooooo much better.

        1. Oh right, I mean that table. Maybe it was a CSV before and I didn’t notice they switched to xls.

          So you use the API from LCSC? Didn’t you say they don’t have any? Or just no public API?

          1. They have no public API. This was all reverse engineered. Given a LCSC number of a component I know how to get its attributes (but there is a limit of 100 requests/minute, so it is really slow). However, I have no efficient way to query all LCSC codes on LCSC. That is why my tool does not work with LCSC.

        1. Thanks! This might be a solid foundation. However, to make it work out-of-the-box in my setup, daily update should be completed within 40 minutes (Travis timeout). And I guess there’s no easy way to detect newly added components or fetch new stock.

          1. There is but I kinda doubt it is complete. I kinda remember seeing a getStock API somewhere, but I can’t find it anymore. If you are interested and can do something good with it, I might crawl the stock maybe once a week and push to github (or whatever).

            40 Minutes means you only need like 20 Proxy servers. Maybe you can get away with using different ipv6 addresses. Then it is trivial to circumvent the rate limiting… I’m not sure if they’d like that though.

            If you just want the JLCPCB stock, the xls will be the easiest option.
            Although returns up to 50 results and doesn’t look rate limited…

            Let me know if I can help in any way (maybe we should find somewhere else to talk)

          2. Mathias: Thanks for the insight. JLC PCB stock is working (well, the whole post above is about it). There were just a few people in the comments who were interested in my solution over all components from LCSC. I am not sure if it is necessary, since LCSC already has UI for parametric search.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.