Kicad-happy element14
Search Newark, Farnell, and element14 for electronic components — find parts by MPN or distributor part number, check pricing/stock, download datasheets, analyze specifications. One unified API covers all three storefronts (Newark for US, Farnell for UK/EU, element14 for APAC). Free API key, simple query-parameter auth, no OAuth. Datasheets download directly from farnell.com CDN with no bot protection. Sync and maintain a local datasheets directory for a KiCad project, or use batch MPN-list seeding (`--mpn-list`) for bulk workflows without a project. Use this skill when the user mentions Newark, Farnell, element14, needs parts from a non-US distributor, wants to compare pricing across regions, or needs datasheets from a source that doesn't require complex API auth. For package cross-reference tables and BOM workflow, see the `bom` skill.
git clone https://github.com/aklofas/kicad-happy
T=$(mktemp -d) && git clone --depth=1 https://github.com/aklofas/kicad-happy "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/element14" ~/.claude/skills/aklofas-kicad-happy-element14 && rm -rf "$T"
skills/element14/SKILL.mdelement14 / Newark / Farnell — Component Search, Datasheets & Ordering
Related Skills
| Skill | Purpose |
|---|---|
| Schematic analysis — extracts MPNs for part lookup |
| BOM management — orchestrates sourcing across distributors |
| Uses element14 parametric data for behavioral SPICE models |
One API covers three regional storefronts — same catalog, same datasheets, only pricing/stock vary by region:
| Storefront | Region | Store ID |
|---|---|---|
| Newark | North America | |
| Farnell | UK / Europe | |
| element14 | Asia-Pacific | |
For BOM management and export workflows, see
bom.
Key Differences from DigiKey/Mouser
- Simple auth — API key as a query parameter, no OAuth flow
- Free API key — register at partner.element14.com, courtesy usage allowance
- Global coverage — same API covers US (Newark), EU (Farnell), APAC (element14)
- Unprotected PDFs — datasheets hosted on farnell.com CDN, download freely with no bot protection
- Datasheet URL in API response —
includesresponseGroup=mediumdatasheets[].url
API Credential Setup
- Register at partner.element14.com/member/register
- Free account — just username, email, password. No credit card needed.
- Provides a "courtesy usage allowance" (2 calls/sec, 1,000 calls/day — sufficient for normal use)
- Register an application — after logging in, go to My API Keys and click "Get API Keys"
- App name: anything (e.g., "kicad-happy")
- Type: "Desktop application"
- Users: "1-10"
- Commercial: No
- Advertising: No
- Check "Issue a new key for Product Search API" → select "Basic" tier
- Agree to Terms of Service and click "Register Application"
- Copy your API key — a 24-character alphanumeric string shown on the My API Keys page
- Set the environment variable
before running the scripts:ELEMENT14_API_KEY
If credentials are stored in a central secrets file (e.g.,export ELEMENT14_API_KEY=your_api_key_here
), load them first:~/.config/secrets.envexport $(grep -v '^#' ~/.config/secrets.env | grep -v '^$' | xargs)
Product Search API
Base URL:
https://api.element14.com/catalog/products
All requests use GET with query parameters. Authentication is via
callInfo.apiKey.
Search Modes
The
term parameter supports three search types:
| Mode | Format | Example |
|---|---|---|
| Keyword | | |
| MPN | | |
| Distributor PN | | |
Full Example
GET https://api.element14.com/catalog/products ?term=manuPartNum:GRM155R71C104KA88D &storeInfo.id=www.newark.com &resultsSettings.offset=0 &resultsSettings.numberOfResults=10 &resultsSettings.responseGroup=medium &callInfo.responseDataFormat=JSON &callInfo.apiKey=YOUR_KEY
Response Groups
| Group | Fields |
|---|---|
| SKU, displayName, brandName, MPN, attributes |
| + datasheets[], prices[], stock |
| + images, related products, country of origin |
| Tiered pricing only |
| Stock levels by warehouse/region |
Response Format
With
responseGroup=medium, the response looks like:
{ "manufacturerPartNumberSearchReturn": { "numberOfResults": 5, "products": [ { "sku": "94AK6874", "displayName": "Murata GRM155R71C104KA88D", "translatedManufacturerPartNumber": "GRM155R71C104KA88D", "brandName": "Murata Electronics", "datasheets": [ { "type": "TechnicalDataSheet", "description": "Datasheet", "url": "https://www.farnell.com/datasheets/74273.pdf" } ], "prices": [ { "from": 1, "to": 9, "cost": 0.156 } ], "stock": { "level": 45000, "leastLeadTime": 0, "status": 4, "statusMessage": "In Stock" }, "attributes": [ {"attributeLabel": "Capacitance", "attributeUnit": "", "attributeValue": "100nF"}, {"attributeLabel": "Voltage Rating", "attributeUnit": "V", "attributeValue": "16"} ], "rohsStatusCode": "YES" } ] } }
Key fields:
— Newark/Farnell/element14 part numbersku
— MPNtranslatedManufacturerPartNumber
— manufacturerbrandName
— direct PDF URL (farnell.com CDN, no bot protection)datasheets[].url
— usuallydatasheets[].typeTechnicalDataSheet
— tiered pricing withprices[]
,from
,tocost
— quantity in stockstock.level
— human-readable availabilitystock.statusMessage
— parametric specs (label, unit, value)attributes[]
— RoHS compliance (rohsStatusCode
/YES
)NO
Store IDs
Common store IDs for the
storeInfo.id parameter:
| Store ID | Region |
|---|---|
| US (default) |
| UK |
| EU |
| Australia |
| Singapore |
| India |
Rate Limits
No documented rate limits beyond the courtesy usage allowance. Be respectful — use 0.5s delays between calls.
Filters
Add to query parameters:
— RoHS parts onlyresultsSettings.refinements.filter=rohsCompliant
— in-stock onlyresultsSettings.refinements.filter=inStock
Pagination
— starting index (0-based)resultsSettings.offset
— max 50 per pageresultsSettings.numberOfResults- Only the first 100 results are reliably pageable
Datasheet Download & Sync
element14's farnell.com CDN serves datasheet PDFs directly — no bot protection, no special headers needed. Datasheet URLs come from the API response (
datasheets[].url).
Datasheet Directory Sync
Use
sync_datasheets_element14.py to maintain a datasheets/ directory alongside a KiCad project. Same workflow and manifest.json format as the DigiKey, Mouser, and LCSC skills.
# Sync datasheets for a KiCad project python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> # Preview what would be downloaded python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> --dry-run # Retry previously failed downloads python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> --force # Use a specific store (default: www.newark.com) python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> --store uk.farnell.com # Custom output directory python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> -o ./my-datasheets # Parallel downloads (3 workers) python3 <skill-path>/scripts/sync_datasheets_element14.py <file.kicad_sch> --parallel 3 # Batch mode — sync from a plain MPN list (no KiCad project required) python3 <skill-path>/scripts/sync_datasheets_element14.py --mpn-list mpns.txt --output ./datasheets
MPN-list batch mode (KH-312) — when you have a list of MPNs but no KiCad project to point at. One MPN per line; blank lines and
#
comments (full-line and inline) are skipped; generic values are filtered
via is_real_mpn() and de-duplicated. Output defaults to ./datasheets/
in the current working directory when --output is omitted. Note:
ELEMENT14_API_KEY is still required even in dry-run mode; see the
v1.4 follow-up in the issue tracker if dry-run credential-independence
matters for your workflow.
The script:
- Runs the kicad schematic analyzer to extract components, MPNs, and distributor PNs
- Accepts any identifier — MPN, Newark/Farnell PN, or other distributor PNs from KiCad symbol properties
- Prefers MPN search (
) for exact match — falls back to keyword searchmanuPartNum: - Downloads from farnell.com CDN — direct PDF URLs, no bot protection
- Writes
manifest — same format as DigiKey/Mouser/LCSC skillsmanifest.json - Verifies PDF content — checks MPN, manufacturer, and description keywords
- Rate-limited — 0.5s between API calls (configurable with
)--delay - Saves progress incrementally — safe to interrupt
Single Datasheet Download
Use
fetch_datasheet_element14.py for one-off downloads.
# Search by MPN python3 <skill-path>/scripts/fetch_datasheet_element14.py --search "GRM155R71C104KA88D" -o datasheet.pdf # Search by Newark/Farnell part number python3 <skill-path>/scripts/fetch_datasheet_element14.py --search "94AK6874" -o datasheet.pdf # Direct URL download python3 <skill-path>/scripts/fetch_datasheet_element14.py "https://www.farnell.com/datasheets/74273.pdf" -o datasheet.pdf # JSON output python3 <skill-path>/scripts/fetch_datasheet_element14.py --search "GRM155R71C104KA88D" --json
The script:
- OS-agnostic — uses
→requests
→urllib
fallback chainplaywright - Validates PDF headers — rejects HTML error pages
- Falls back to alternative manufacturer sources when element14 URL fails
- Exit codes: 0 = success, 1 = download failed, 2 = search/API error
- Dependencies:
(recommended; urllib fallback works fine for element14)pip install requests
(optional; rarely needed)pip install playwright && playwright install chromium
Web Search Fallback
If the API is unavailable, search by fetching product pages directly:
https://www.newark.com/search?st=<query> https://uk.farnell.com/search?st=<query>
Tips
- Use
— includes datasheets and pricing without the overhead ofresponseGroup=mediumlarge - Use
prefix for exact MPN matches;manuPartNum:
for keyword searchany: - Cross-reference using
(MPN) across DigiKey/Mouser/LCSCtranslatedManufacturerPartNumber - Useful for international users where DigiKey/Mouser shipping is expensive