# ThomasNet Industrial Supplier Scraper (`parseforge/thomasnet-scraper`) Actor

Search and extract supplier data from ThomasNet.com, the largest North American industrial directory. Returns each supplier as a flat row with contact details, certifications, employee count, and year founded.

- **URL**: https://apify.com/parseforge/thomasnet-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Lead generation, Developer tools
- **Features:** Limited permissions
- **Stats:** 35 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $16.99 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

## 🏭 ThomasNet Industrial Supplier Scraper

> 🚀 **Pull qualified B2B suppliers from ThomasNet in seconds.** Filter by product, geography, certifications, and ownership type. No API key, no registration, no manual CSV wrangling.

ThomasNet is the largest industrial directory in North America, indexing more than 500,000 manufacturers, distributors, and service providers across 70,000 product categories. The catalog is the standard reference for procurement, sourcing, and supplier discovery in industries from aerospace to plumbing. Each supplier profile carries firmographic data (year founded, employee band, annual sales), contact info, geographic coverage, certifications, and product taxonomy, but the catalog itself is gated by DataDome bot protection and is not available as a downloadable feed.

This Actor turns any ThomasNet supplier search into a structured dataset. Provide a product query (or a company name in name mode), narrow with the native ThomasNet filters (geographic area, company type, employee size band, year founded, diversity ownership, industry certifications), and the Actor walks the live results, parses each supplier card, and writes one row per company to your Apify dataset. The bypass uses Camoufox plus Apify residential proxies and rotates session IPs across **US, CA, GB, and DE** to keep the success rate high even during peak hours.

| 👥 Target Audience | 🎯 Primary Use Cases |
|---|---|
| Procurement and sourcing teams | Build qualified vendor lists for RFQs |
| B2B sales and lead-gen operators | Generate outbound prospect lists by region or industry |
| Industrial market analysts | Map supplier concentration, certifications, and capabilities |
| Manufacturing intelligence platforms | Backfill firmographic data for industrial company datasets |

### 📋 What the ThomasNet Industrial Supplier Scraper does

- 🔍 **Product or company-name search.** Run the same queries you would use on the ThomasNet site, with the same matching semantics.
- 🗺️ **Geographic filters.** All 50 US states, all Canadian provinces, and regional buckets (East Midwest, West PA, Greater Toronto, and more).
- 🏷️ **Company-type filters.** Restrict to Manufacturer, Distributor, Custom Manufacturer, or Service Company.
- 🎖️ **Certification filters.** Limit to ISO 9001, AS9100, IATF 16949, ISO 13485, NADCAP, FDA registered, and 8 more codes.
- 🤝 **Diversity-ownership filters.** Minority-owned, women-owned, veteran-owned, LGBTQ-owned, small business, and disabled-veteran-owned.
- 📏 **Size and age filters.** Minimum and maximum employee count plus year-founded range.

Each record captures the supplier identity (tgramsId, name, logo, description), business classification (type, tier, year founded, employee band, annual sales), contact channel (primary phone, website), trust signals (claimed profile, advertiser status, Xometry verification, multi-location flag), and full postal address with latitude and longitude. The structured `headings` array preserves the upstream ThomasNet taxonomy so downstream pipelines can re-group results by category without re-fetching.

> 💡 **Why it matters:** Manual ThomasNet sourcing is a tab-by-tab exercise. A team can spend a full afternoon collecting 150 qualified leads. This Actor turns that into a 5-minute run and writes the same data as a clean CSV, JSON, or Excel file ready to drop into your CRM.

### 📊 Data fields

Each record includes: `address`, `annualSales`, `description`, `heading`, `headings`, `isAdvertiser`, `isClaimed`, `isMultiLocation`, `logoUrl`, `name`, `numberEmployees`, `primaryPhone`, `scrapedAt`, `searchMode`, `sourceUrl`, `tgramsId`, `tier`, `type`, `website`, `xometryVerified`, `yearFounded`. All 21 field names come from a real production run, so what you see here is what lands in your dataset.

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Find the ThomasNet Industrial Supplier Scraper page on the Apify Store.
3. 🎯 **Set input.** Type your product or company query, pick geography and filters, set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor walk the supplier search.
5. 📥 **Download.** Grab the dataset as CSV, Excel, JSON, or XML from the **Dataset** tab.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

### 🔗 Recommended Actors

- [**🇨🇳 Made In China Scraper**](https://apify.com/parseforge/made-in-china-scraper) - Extract supplier data from Made-in-China.com for Asian sourcing alongside North American leads
- [**👔 LinkedIn Company Profiles Scraper**](https://apify.com/parseforge/linkedin-company-profiles-scraper) - Enrich ThomasNet suppliers with LinkedIn firmographics and employee counts
- [**🚛 FMCSA Carrier Safety Scraper**](https://apify.com/parseforge/fmcsa-carrier-safety-scraper) - Pull carrier safety records for supplier logistics due diligence
- [**🌴 Sunbiz Florida Business Scraper**](https://apify.com/parseforge/sunbiz-florida-business-scraper) - Verify Florida-incorporated suppliers against the state registry
- [**🇬🇧 UK Companies House Scraper**](https://apify.com/parseforge/uk-companies-house-scraper) - Cross-reference suppliers with their UK corporate filings

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more B2B sourcing scrapers.

> ⚠️ **Disclaimer.** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by ThomasNet or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

### 🆘 Need Help?

If you hit a bug, have questions about setup, or need a scraper we haven't built yet, open our [contact form](https://tally.so/r/BzdKgA) or write to parseforge@protonmail.com. We also take on paid custom data projects.

For faster answers, join our [Discord](https://parseforge.co/discord). It's the best place to get support and suggest new actors.

# Actor input Schema

## `query` (type: `string`):

Product, service, or company name to search for (e.g. 'hydraulic pumps', 'CNC machining', 'Siemens').

## `maxItems` (type: `integer`):

How many suppliers to collect per run.

## `searchMode` (type: `string`):

How to search: 'all' searches by product/category across all suppliers; 'name' searches by company name.

## `area` (type: `string`):

Filter by US state, Canadian province, or region. Use 'NA' for all North America.

## `companyType` (type: `string`):

Filter by supplier business type. Manufacturer makes finished products, Distributor resells, Custom Manufacturer builds to spec, Service is industrial services.

## `ownership` (type: `array`):

Filter by diversity-owned business classification. Select one or more to only include certified diversity suppliers.

## `minEmployees` (type: `integer`):

Only include suppliers with at least this many employees.

## `maxEmployees` (type: `integer`):

Only include suppliers with at most this many employees.

## `yearFoundedFrom` (type: `integer`):

Only include suppliers founded in or after this year.

## `yearFoundedTo` (type: `integer`):

Only include suppliers founded in or before this year.

## `certifications` (type: `array`):

Only include suppliers holding one or more of the selected industry certifications.

## Actor input object example

```json
{
  "query": "hydraulic pumps",
  "maxItems": 10,
  "searchMode": "all",
  "area": "NA",
  "companyType": "any",
  "ownership": [],
  "certifications": []
}
```

# Actor output Schema

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

Dataset with scraped supplier profiles from ThomasNet

# 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 = {
    "query": "hydraulic pumps",
    "maxItems": 10,
    "searchMode": "all",
    "area": "NA",
    "companyType": "any"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/thomasnet-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 = {
    "query": "hydraulic pumps",
    "maxItems": 10,
    "searchMode": "all",
    "area": "NA",
    "companyType": "any",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/thomasnet-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 '{
  "query": "hydraulic pumps",
  "maxItems": 10,
  "searchMode": "all",
  "area": "NA",
  "companyType": "any"
}' |
apify call parseforge/thomasnet-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/thomasnet-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/yJcv57wys3pTeXnaZ/builds/xg4P3sx7zdnMYdcgf/openapi.json
