Skip to main content
skill CX Codex

element14 — Claude Code skill: part search and datasheets

Looks up components in Newark, Farnell and element14 by MPN or distributor SKU, checks pricing and stock, and pulls datasheets into a KiCad project folder.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add aklofas/kicad-happy --skill element14 -a claude-code
Open on GitHub

What element14 does

One API covers three storefronts: Newark for North America, Farnell for the UK and Europe, element14 for Asia-Pacific. The catalog and datasheets are shared, only pricing and stock differ by region. You can search by keywords, by manuPartNum:<mpn>, or by distributor part number with id:<sku>.

Auth is a query parameter, not an OAuth flow. The key is free from partner.element14.com and goes into the ELEMENT14_API_KEY environment variable before you run the scripts. Datasheets sit on the farnell.com CDN and download directly with no bot protection, which is the main reason to reach for this over DigiKey or Mouser.

The skill can sync and maintain a local datasheets directory for a KiCad project. For bulk work without a project, there is batch seeding from an MPN list via --mpn-list. Keep in mind the free key comes with a courtesy usage allowance, so the scripts advise spacing out calls. Package cross-reference tables and BOM workflows live in the bom skill.

What it helps with

  • find a part by MPN on Newark or Farnell
  • compare pricing and stock across regions
  • download a datasheet without fighting bot protection
  • build a local datasheets folder for a KiCad project
  • seed a batch of MPNs without opening a project

Example prompts for the agent

  • look up GRM155R71C104KA88D on Farnell and show me the price
  • download datasheets for every component in this KiCad schematic
  • run the MPN list from this file and build a price table by region

How to install element14

1Skills CLI (Vercel)

npx skills add aklofas/kicad-happy --skill element14 -a claude-code

2Manually: put the files in place

~/.claude/skills/element14/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/element14/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about element14

How do I install element14 in Claude?

Run npx skills add aklofas/kicad-happy --skill element14 -a claude-code. The skill file then lands at ~/.claude/skills/element14/SKILL.md.

What does element14 do?

It searches Newark, Farnell and element14 for electronic components, checks pricing and stock, downloads datasheets and reads out specifications. A single API covers all three storefronts.

What do I need before using it?

A free API key from partner.element14.com and the ELEMENT14_API_KEY environment variable. The key comes with a limited courtesy usage allowance.

Source text

SKILL.md · MIT
---
name: element14
description: 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.
---

# element14 / Newark / Farnell — Component Search, Datasheets & Ordering

## Related Skills

| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic analysis — extracts MPNs for part lookup |
| `bom` | BOM management — orchestrates sourcing across distributors |
| `spice` | 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 | `www.newark.com` |
| **Farnell** | UK / Europe | `uk.farnell.com` |
| **element14** | Asia-Pacific | `au.element14.com` |

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** — `responseGroup=medium` includes `datasheets[].url`

## API Credential Setup

1. **Register** at [partner.element14.com/member/register](https://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)
2. **Register an application** — after logging in, go to [My API Keys](https://partner.element14.com/apps/mykeys) 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"
3. **Copy your API key** — a 24-character alphanumeric string shown on the My API Keys page
4. **Set the environment variable** `ELEMENT14_API_KEY` before running the scripts:
   ```bash
   export ELEMENT14_API_KEY=your_api_key_here
   ```
   If credentials are stored in a central secrets file (e.g., `~/.config/secrets.env`), load them first:
   ```bash
   export $(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** | `any:<keywords>` | `term=any:100nF 0402 X7R` |
| **MPN** | `manuPartNum:<mpn>` | `term=manuPartNum:GRM155R71C104KA88D` |
| **Distributor PN** | `id:<sku>` | `term=id:94AK6874` |

### 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 |
|-------|--------|
| `small` | SKU, displayName, brandName, MPN, attributes |
| `medium` | + datasheets[], prices[], stock |
| `large` | + images, related products, country of origin |
| `prices` | Tiered pricing only |
| `inventory` | Stock levels by warehouse/region |

### Response Format

With `responseGroup=medium`, the response looks like:

```json
{
  "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:
- `sku` — Newark/Farnell/element14 part number
- `translatedManufacturerPartNumber` — MPN
- `brandName` — manufacturer
- `datasheets[].url` — **direct PDF URL** (farnell.com CDN, no bot protection)
- `datasheets[].type` — usually `TechnicalDataSheet`
- `prices[]` — tiered pricing with `from`, `to`, `cost`
- `stock.level` — quantity in stock
- `stock.statusMessage` — human-readable availability
- `attributes[]` — parametric specs (label, unit, value)
- `rohsStatusCode` — RoHS compliance (`YES`/`NO`)

### Store IDs

Common store IDs for the `storeInfo.id` parameter:

| Store ID | Region |
|----------|--------|
| `www.newark.com` | US (default) |
| `uk.farnell.com` | UK |
| `www.farnell.com` | EU |
| `au.element14.com` | Australia |
| `sg.element14.com` | Singapore |
| `in.element14.com` | 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:
- `resultsSettings.refinements.filter=rohsCompliant` — RoHS parts only
- `resultsSettings.refinements.filter=inStock` — in-stock only

### Pagination

- `resultsSettings.offset` — starting index (0-based)
- `resultsSettings.numberOfResults` — max 50 per page
- 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.

```bash
# 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 checked unconditionally at startup, so
`--dry-run` still requires the env var to be set even though no
network calls are made.

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** (`manuPartNum:`) for exact match — falls back to keyword search
- **Downloads from farnell.com CDN** — direct PDF URLs, no bot protection
- **Writes `manifest.json` manifest** — same format as DigiKey/Mouser/LCSC skills
- **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.

```bash
# 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` → `playwright` fallback chain
- **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**:
  - `pip install requests` (recommended; urllib fallback works fine for element14)
  - `pip install playwright && playwright install chromium` (optional; rarely needed)

## 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 `responseGroup=medium` — includes datasheets and pricing without the overhead of `large`
- Use `manuPartNum:` prefix for exact MPN matches; `any:` for keyword search
- Cross-reference using `translatedManufacturerPartNumber` (MPN) across DigiKey/Mouser/LCSC
- Useful for international users where DigiKey/Mouser shipping is expensive

© aklofas · MIT · aklofas/kicad-happy

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set12

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor