# Findchips Scraper - Electronic Parts Price, Stock & MOQ (`rel8ble/findchips-scraper`) Actor

Findchips scraper and API for electronic component prices and BOM quotes. Enter part numbers; one result = one distributor offer: distributor, stock, MOQ, quantity price breaks, lead time, packaging, RoHS, authorized flag, buy link. Quote any order quantity. No login. $0.45 per 1,000.

- **URL**: https://apify.com/rel8ble/findchips-scraper.md
- **Developed by:** [Giovanni Rich](https://apify.com/rel8ble) (community)
- **Categories:** E-commerce, Lead generation, Business
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.45 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Findchips Scraper - Electronic Parts Price, Stock & MOQ

**Findchips scraper** for electronics buyers, procurement and sourcing teams, EMS / contract manufacturers, component brokers and BOM-costing tools: enter a manufacturer part number such as `STM32F103C8T6`, `NE555P` or `GRM188R71H104KA93D` and get every distributor offer Findchips shows for it as clean JSON, CSV or Excel. Each row is one offer from one distributor (Newark, Mouser, Arrow, TME, Verical, Future, brokers ...) with **stock, MOQ, order multiple, quantity price breaks, currency, lead time, packaging, RoHS, date code, country of origin**, an **authorized-distributor flag** and the buy link. Set an **order quantity** and every row also gets the unit and extended price at that quantity and whether the stock covers it. Use it as an **electronic component price checker**, a **part availability / stock monitor**, a **BOM quote** tool, or an unofficial **Findchips API** from your own code, Make, Zapier or n8n.

It works over plain HTTP, with **no browser and no login**. One part number is one request (usually 20 to 250 offers); the default 20-row input took 21.9 seconds in a cloud run on 1 Nov 2026.

### What you get

- **Part**: manufacturer part number, manufacturer, description, exact-match flag (the result's MPN equals your search, so packaging variants like `...TR` can be dropped).
- **Distributor**: name, Findchips distributor ID, distributor stock number (DISTI #), authorized distributor flag, direct-from-manufacturer flag, ECIA member flag, badges, sponsored flag.
- **Availability**: stock (summed over regional warehouses), per-warehouse stock when listed (e.g. DE / US / HK), in-stock flag, **minimum order quantity**, order multiple, packaging (Tray, Reel, Cut Tape ...), lead time, date code, RoHS, country of origin, ECCN.
- **Prices**: currency and every **quantity price break** (`[{"quantity":1,"price":8.6},{"quantity":10,"price":6.52}, ...]`), price at MOQ, lowest unit price and the quantity it needs. With `orderQuantity`: unit price, extended price and "enough stock" for that quantity.
- **Links**: buy link to the distributor's page (empty on RFQ offers), Findchips part details page.

### Sample output

Real rows from the 1 Nov 2026 cloud run with the default input (`STM32F103C8T6`, 20 results):

| Part # | Distributor | Stock | MOQ | Price @ MOQ | Lowest price (qty) | Authorized | Buy |
|---|---|---|---|---|---|---|---|
| STM32F103C8T6 | Newark | 124,388 | 1 | CAD 8.60 | CAD 5.06 (500) | yes | Buy Now |
| STM32F103C8T6TR | Newark | 3,933 | 100 | CAD 3.37 | CAD 2.94 (5,000) | yes | Buy Now |
| STM32F103C8T6 | STMicroelectronics (direct) | 13,672 | 1 | USD 7.96 | USD 4.20 (500) | direct | Buy Now |
| STM32F103C8T6 | TME | 1,454 | 1 | USD 6.40 | USD 4.13 (100) | yes | Buy Now |
| STM32F103C8T6 | Bristol Electronics | 466 | 1 | USD 6.38 | USD 2.75 (250) | no | Buy Now |
| STM32F103C8T6 | Chip Stock | 117,500 | - | RFQ | - | no | RFQ |

On those 20 rows: distributor, stock, currency and buy action 100%; manufacturer 85%; MOQ 65%; price breaks 60% (the rest are broker RFQ offers with stock but no public price); distributor stock number 50%. On a home-IP run of the same part (1 Nov 2026) Findchips listed 60 offers from 20 distributors, including Mouser, Arrow, Verical and Future; the distributor mix varies with the exit IP and the moment, so run a part again if a distributor you expect is missing.

### Use cases

- **BOM costing and quotes**: price a bill of materials at your build quantity (`orderQuantity`) across every distributor and pick the cheapest offer with enough stock.
- **Shortage and stock monitoring**: schedule daily runs on critical parts and alert when stock drops or a distributor sells out.
- **Authorized vs broker sourcing**: `authorizedOnly` keeps franchised distributors; leave it off to see broker stock for hard-to-find parts.
- **Price history**: store `lowestUnitPrice` per part and distributor over time.
- **Competitive intelligence for distributors and brokers**: see who stocks a part and at what price breaks.
- **AI agents**: an agent can call this actor with part numbers and read back stock and prices (see the MCP note below).

### Pricing

**$0.45 per 1,000 results** (pay per result; one result = one distributor offer). Apify platform usage is included in that price. Filtered rows, duplicate offers and failed requests are never charged, and there is no start fee. A 20-row run costs $0.009, and Apify's free plan ($5 of monthly credit) covers about 11,000 rows.

The other Findchips actor we found on the Store (crawloop, 4 users, read 7 Nov 2026) charges $0.49 per flat offer row or $0.99 per part record with nested offers, also with no start fee. crawloop's Octopart actor is $1.59 / $2.19. Single-distributor actors cost $0.90 and up per row (maximedupre DigiKey $0.90 listing / $1.35 enriched, crawloop DigiKey $1.00 / $1.50, getascraper LCSC $1.80, fetchfinch DigiKey $1.90 + $0.10 start, jungle_synthesizer DigiKey $2.00 + $0.10 start, axlymxp Mouser $4.00 + $0.01 start).

### FAQ

**Why one part at a time?**
Findchips' robots.txt (read 5 Nov 2026) asks crawlers to wait 10 seconds between requests, and the actor respects that. Each request returns every distributor offer for the part, so a 100-part BOM takes at least 100 x 10 seconds (about 17 minutes) and still costs only the rows you keep.

**Can I search by description ("100nF 0603")?**
No. Findchips matches part numbers; a description returns unrelated fuzzy matches, which the actor treats as "no results" and does not charge. Prefixes work: `LM358` returns LM358N, LM358DR, LM358P and so on.

**Why are some prices in CAD or EUR?**
Each distributor block on Findchips carries its own currency; the actor keeps it in `currency` and does not convert.

**Why are some rows without a price?**
Brokers often list stock with "RFQ" (request for quote) and no public price. Use `withPriceOnly` or `authorizedOnly` to drop them.

**For AI agents (MCP):** input is a list of manufacturer part numbers plus an optional order quantity and filters; output is one JSON row per distributor offer with stock, MOQ, price breaks, currency and an authorized flag; typical cost is $0.009 for 20 rows; use it when you need current price and availability of a specific electronic component.

### Example inputs for common jobs

One part, every offer (default is 20):

```json
{ "partNumbers": ["STM32F103C8T6"], "maxResultsPerSearch": 0 }
```

Quote a BOM at 1,000 pieces, in-stock authorized offers only, exact part numbers:

```json
{
  "partNumbers": ["STM32F103C8T6", "NE555P", "GRM188R71H104KA93D", "LM358DR"],
  "maxResultsPerSearch": 0,
  "orderQuantity": 1000,
  "exactMatchOnly": true,
  "inStockOnly": true,
  "authorizedOnly": true
}
```

Only some distributors, at least 5,000 units in stock:

```json
{ "partNumbers": ["NE555P"], "maxResultsPerSearch": 0, "distributors": ["Mouser", "Arrow", "Newark"], "minStock": 5000 }
```

All variants of a part family (prefix search) with a price:

```json
{ "partNumbers": ["LM358"], "maxResultsPerSearch": 0, "withPriceOnly": true, "manufacturer": "Texas" }
```

Findchips URLs work too:

```json
{ "partNumbers": ["https://www.findchips.com/search/LM358", "https://www.findchips.com/detail/NE555P/Texas-Instruments"] }
```

### How to use

1. Open the actor and paste one or more part numbers (or Findchips search / detail URLs) into **Part numbers**.
2. Set **Max offers per search** (default 20; 0 = every offer Findchips shows).
3. Optionally set an **order quantity** and filters (exact match, in stock, authorized, with price, distributors, manufacturer, minimum stock, maximum unit price).
4. Click **Start**. Download the dataset as JSON, CSV, Excel or HTML, or read it through the API.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `partNumbers` | array | `["STM32F103C8T6"]` | Manufacturer part numbers, part-number prefixes (`LM358`) or Findchips search / detail URLs. Findchips searches part numbers, not descriptions. |
| `maxResultsPerSearch` | integer | 20 | Offer rows per part number. 0 = all. |
| `orderQuantity` | integer | 0 | Adds unit price, extended price and "enough stock" for this quantity to every row. 0 = off. |
| `exactMatchOnly` | boolean | false | Only rows whose MPN equals the search (ignoring case and dashes). |
| `inStockOnly` | boolean | false | Only offers with stock > 0. |
| `authorizedOnly` | boolean | false | Only authorized distributors and direct-from-manufacturer offers. |
| `withPriceOnly` | boolean | false | Skip RFQ offers without a public price. |
| `skipSponsored` | boolean | false | Drop paid placements. |
| `minStock` | integer | 0 | Minimum units in stock. |
| `maxUnitPrice` | string | - | Maximum unit price (at `orderQuantity`, else the lowest break), in the offer currency. |
| `distributors` | array | - | Keep only these distributors (partial names, case-insensitive). |
| `manufacturer` | string | - | Keep only this manufacturer (partial name). |
| `requestDelaySecs` | integer | 10 | Pause between part numbers. Findchips asks crawlers for 10 seconds, so 10 is the minimum. |
| `maxRequestRetries` | integer | 6 | Retries per failed request, each on a new proxy session. |
| `proxyConfiguration` | object | Apify Proxy | Datacenter proxy works; switch to RESIDENTIAL only if the log shows repeated blocks. |

Inputs that are not part numbers or Findchips URLs are skipped and listed in the `RUN_SUMMARY` record; a part number with no results is reported in the log. Neither is charged.

### Output example

One real row from the same run:

```json
{
  "searchTerm": "STM32F103C8T6",
  "position": 1,
  "partNumber": "STM32F103C8T6",
  "manufacturer": "STMicroelectronics",
  "description": "Mcu Arm, 72Mhz, Arm Cortex-M3, 32 Bit, |Stmicroelectronics STM32F103C8T6",
  "exactMatch": true,
  "distributor": "Newark",
  "distributorId": "1561",
  "distributorPartNumber": "59M2182",
  "authorizedDistributor": true,
  "directManufacturer": false,
  "eciaMember": true,
  "distributorBadges": "ECIA (NEDA) Member • Authorized Distributor",
  "sponsored": false,
  "stock": 124388,
  "inStock": true,
  "stockByRegion": [],
  "minOrderQty": 1,
  "packageMultiple": 1,
  "container": "Bulk",
  "rohs": "Compliant",
  "leadTime": null,
  "dateCode": null,
  "countryOfOrigin": null,
  "eccn": null,
  "currency": "CAD",
  "priceBreaks": [
    { "quantity": 1, "price": 8.6 },
    { "quantity": 10, "price": 6.52 },
    { "quantity": 25, "price": 5.88 },
    { "quantity": 50, "price": 5.5 },
    { "quantity": 100, "price": 5.27 },
    { "quantity": 250, "price": 5.16 },
    { "quantity": 500, "price": 5.06 }
  ],
  "unitPriceAtMinQty": 8.6,
  "lowestUnitPrice": 5.06,
  "lowestPriceBreakQty": 500,
  "orderQuantity": null,
  "unitPriceAtOrderQty": null,
  "extendedPriceAtOrderQty": null,
  "stockCoversOrderQty": null,
  "buyAction": "Buy Now",
  "buyUrl": "https://www.newark.com/stmicroelectronics/stm32f103c8t6/mcu-arm-72mhz-arm-cortex-m3-32/dp/59M2182?CMP=afc-synd-nwk-fc-buynow-invf",
  "partDetailsUrl": "https://www.findchips.com/detail/STM32F103C8T6/STMicroelectronics",
  "note": null,
  "sourceUrl": "https://www.findchips.com/search/STM32F103C8T6",
  "scrapedAt": "2026-11-01T18:44:34.659Z"
}
```

The dataset has three table views in the Apify console: **Offers** (stock, MOQ, prices), **Quote at order quantity** and **Part details**. A `RUN_SUMMARY` record lists per-part counts, ignored inputs and stop reasons.

### Integrations

Run it on an Apify schedule, through the Apify REST API, the JavaScript / Python clients, Make, Zapier, n8n, Google Sheets, or from AI agents via the Apify MCP server. Join runs on `partNumber` + `distributorId` to track stock and price over time.

This actor is not affiliated with Findchips or Supplyframe. It reads public search pages that Findchips' robots.txt allows (read 5 Nov 2026), at the crawl delay it asks for.

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble

# Actor input Schema

## `partNumbers` (type: `array`):

Provide at least one. Manufacturer part numbers ("STM32F103C8T6", "NE555P", "GRM188R71H104KA93D") or findchips.com URLs (https://www.findchips.com/search/LM358 or /detail/<part>/<maker>). A part-number prefix also works: "LM358" returns LM358N, LM358DR, LM358P ... Findchips searches part numbers, not descriptions, so "100nF 0603" finds nothing. One search per line. Default \["STM32F103C8T6"] (demo).

## `maxResultsPerSearch` (type: `integer`):

Optional. Offer rows saved per part number, integer >= 0. Default 20; 0 = every offer Findchips shows (often 50-250 for a popular part). You pay per row.

## `orderQuantity` (type: `integer`):

Optional. Set e.g. 1000 to get unitPriceAtOrderQty, extendedPriceAtOrderQty and stockCoversOrderQty for every offer. 0 = off (default).

## `exactMatchOnly` (type: `boolean`):

Optional. Keep only rows whose part number equals the search (ignoring case and dashes), e.g. drop "STM32F103C8T6TR" when searching "STM32F103C8T6". Default false.

## `inStockOnly` (type: `boolean`):

Optional. Skip offers with zero or unknown stock. Default false.

## `authorizedOnly` (type: `boolean`):

Optional. Keep only authorized (franchised) distributors and direct-from-manufacturer offers; drops brokers and independents. Default false.

## `withPriceOnly` (type: `boolean`):

Optional. Skip RFQ / price-on-request offers. Default false.

## `skipSponsored` (type: `boolean`):

Optional. Drop paid placements. Default false.

## `minStock` (type: `integer`):

Optional. Keep offers with at least this many units in stock. Default 0 (off).

## `maxUnitPrice` (type: `string`):

Optional. Keep offers whose unit price (at orderQuantity when set, else the lowest price break) is at or below this number, in the offer currency, e.g. "5.50". Empty = off.

## `distributors` (type: `array`):

Optional. Keep only these distributors (case-insensitive, partial names work), e.g. \["Mouser", "Digi-Key", "Arrow"]. Empty = all.

## `manufacturer` (type: `string`):

Optional. Keep only parts from this manufacturer (partial name, e.g. "Texas" or "STMicro").

## `requestDelaySecs` (type: `integer`):

Optional, advanced. Findchips asks crawlers for 10 seconds between requests, so 10 is the minimum. Default 10.

## `maxRequestRetries` (type: `integer`):

Optional, advanced. Retries per failed request (each on a new proxy session), 0-20. Default 6.

## `proxyConfiguration` (type: `object`):

Optional, advanced. Default Apify Proxy (datacenter), which works for Findchips. Switch to {"useApifyProxy": true, "apifyProxyGroups": \["RESIDENTIAL"]} only if the log shows repeated blocks.

## Actor input object example

```json
{
  "partNumbers": [
    "STM32F103C8T6"
  ],
  "maxResultsPerSearch": 20,
  "orderQuantity": 0,
  "exactMatchOnly": false,
  "inStockOnly": false,
  "authorizedOnly": false,
  "withPriceOnly": false,
  "skipSponsored": false,
  "minStock": 0,
  "requestDelaySecs": 10,
  "maxRequestRetries": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per distributor offer: part, manufacturer, distributor, stock, MOQ, price breaks.

## `summary` (type: `string`):

Per-search counts, ignored inputs and stop reasons.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "partNumbers": [
        "STM32F103C8T6"
    ],
    "maxResultsPerSearch": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/findchips-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "partNumbers": ["STM32F103C8T6"],
    "maxResultsPerSearch": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/findchips-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "partNumbers": [
    "STM32F103C8T6"
  ],
  "maxResultsPerSearch": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rel8ble/findchips-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rel8ble/findchips-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8HAlSvWad8OUbxpQ4/builds/chyDPtcsw5eIpuNjf/openapi.json
