# ThomasNet Scraper \[$0.9/1K💰] | Supplier Data | B2B Leads (`ahmed_jasarevic/thomasnet-scraper`) Actor

Extract ThomasNet supplier profiles with certifications, diversity designations, and contact data for B2B procurement and lead generation

- **URL**: https://apify.com/ahmed\_jasarevic/thomasnet-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## ThomasNet Industrial Supplier Scraper

> Extract structured supplier data from ThomasNet — the leading industrial supplier directory for manufacturers, distributors, and service providers across North America.

Scrape ThomasNet supplier profiles, certifications, product categories, and contact details at scale. This ThomasNet scraper automates B2B industrial lead generation by pulling structured supplier firmographics including ISO certifications, diversity credentials, location data, and service capabilities — perfect for procurement teams, supply chain analysts, and sales professionals targeting the industrial sector.

### Use Cases

- **Supplier Qualification** — Identify ISO 9001, AS9100, ISO 13485, and other certified suppliers to meet compliance requirements for manufacturing and procurement workflows
- **Diversity Sourcing** — Discover MBE, WBE, DBE, and HUBZone-certified diverse suppliers to fulfill corporate diversity procurement mandates and government contracting goals
- **Market Mapping** — Analyze supplier density across industries, geographies, and product categories to understand competitive landscapes and sourcing opportunities
- **Contact & RFQ Enrichment** — Enrich CRM records with verified supplier contacts, addresses, phone numbers, and capabilities for targeted RFQ outreach
- **Brand & Distributor Intelligence** — Track brand presence, distributor networks, and product listings across ThomasNet for competitive intelligence and channel analysis
- **Procurement Lead Generation** — Build qualified supplier prospect lists with firmographics, certifications, and capability data for strategic sourcing campaigns

### How It Works

1. **Provide ThomasNet listing or profile URLs** — point the scraper to specific supplier pages or search result listings on ThomasNet.com
2. **Configure scrape depth** — set max items per listing, pages per listing, and whether to enrich with full profile data
3. **Run the Actor** — it navigates ThomasNet pages, extracts structured supplier data, and optionally follows profile links for deeper enrichment
4. **Receive structured JSON** — get clean, ready-to-use supplier data in your Apify dataset for CRM import, analysis, or RFQ automation

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `startUrls` | `array` | Yes | — | ThomasNet supplier listing or profile URLs to scrape (e.g., `https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562`) |
| `maxItems` | `integer` | No | `50` | Maximum number of supplier results to return per listing (1–500) |
| `maxPagesPerListing` | `integer` | No | `3` | Maximum number of pages to crawl per listing URL (1–20) |
| `scrapeProfilePages` | `boolean` | No | `true` | Visit each supplier's detail page for full profile data (slower but richer) |
| `proxyConfiguration` | `object` | Yes | — | Proxy configuration for request routing |

#### Example Input

```json
{
  "startUrls": [
    { "url": "https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562" },
    { "url": "https://www.thomasnet.com/suppliers/usa/cnc-machining-services-30349308-1.html" }
  ],
  "maxItems": 50,
  "maxPagesPerListing": 3,
  "scrapeProfilePages": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Output

Each dataset item represents one supplier extracted from ThomasNet.

#### Listing Fields (always included)

| Field | Description |
|-------|-------------|
| `name` | Supplier / company name |
| `url` | ThomasNet profile URL |
| `location` | Headquarters address |
| `city` | City |
| `state` | State |
| `zip` | Postal code |
| `phone` | Phone number |
| `website` | Company website URL |
| `employeeCount` | Employee count range |
| `yearFounded` | Year established |
| `annualRevenue` | Annual revenue range (if listed) |
| `categories` | Product/service categories |
| `description` | Short company description |
| `logoUrl` | Company logo URL |

#### Profile Detail Fields (when `scrapeProfilePages: true`)

| Field | Description |
|-------|-------------|
| `fullDescription` | Complete company description |
| `certifications` | ISO, AS9100, IATF, and other certifications |
| `diversityStatus` | MBE, WBE, DBE, HUBZone, SDVOB certifications |
| `capabilities` | Listed manufacturing/service capabilities |
| `productLines` | Products and product lines offered |
| `brands` | Brands distributed or manufactured |
| `serviceAreas` | Geographic service coverage |
| `contactPerson` | Primary contact name and title |
| `contactEmail` | Contact email (if available) |
| `socialLinks` | Social media profile links |
| `distributorOf` | OEM brands carried |

#### Example Output

```json
[
  {
    "name": "Precision Manufacturing Co.",
    "url": "https://www.thomasnet.com/profile/precision-manufacturing-co-12345678",
    "location": "123 Industrial Blvd, Detroit, MI 48201",
    "city": "Detroit",
    "state": "MI",
    "zip": "48201",
    "phone": "+1 313-555-0100",
    "website": "https://www.precisionmfg.com",
    "employeeCount": "50-99",
    "yearFounded": "1987",
    "annualRevenue": "$5M-$10M",
    "categories": ["CNC Machining", "Metal Fabrication", "Precision Grinding"],
    "description": "Precision Manufacturing Co. provides CNC machining and metal fabrication services...",
    "certifications": ["ISO 9001:2015", "AS9100D", "ITAR Registered"],
    "diversityStatus": [],
    "capabilities": ["5-Axis CNC Machining", "Waterjet Cutting", "Welding", "Assembly"],
    "productLines": ["Aerospace Components", "Medical Device Parts", "Automotive Prototypes"],
    "brands": [],
    "serviceAreas": ["Michigan", "Ohio", "Indiana"],
    "contactPerson": "John Smith, VP Sales",
    "contactEmail": "jsmith@precisionmfg.com"
  }
]
```

### Tasks

Pre-configured tasks for common ThomasNet supplier research workflows:

| Task | Description |
|------|-------------|
| `tn-supplier-qualification` | Find suppliers by certification type (ISO, AS9100, IATF) |
| `tn-diversity-sourcing` | Discover MBE, WBE, DBE, and HUBZone-certified diverse suppliers |
| `tn-market-mapping` | Category-level market mapping across supplier segments |
| `tn-contact-enrichment` | Enrich supplier records with contacts and RFQ-ready data |
| `tn-brand-intelligence` | Track brand presence and distributor networks |
| `tn-full-profiles` | Full profile enrichment with certifications and capabilities |
| `tn-procurement-leads` | Generate procurement-ready supplier lead lists |
| `tn-multi-category` | Multi-category supplier scan across industrial segments |

### Integrations

- **Google Sheets** — Export supplier lists to spreadsheets for team collaboration and RFQ distribution
- **HubSpot / Salesforce** — Push supplier contacts into CRM pipelines for procurement outreach
- **Slack** — Get notified when scraping runs complete or new suppliers matching criteria are found
- **Zapier / Make** — Connect to 5,000+ apps for automated procurement workflows
- **REST API** — Access dataset items via the Apify API for custom ERP and sourcing system integrations

### Related Actors

| Actor | Description |
|-------|-------------|
| [Dun & Bradstreet Scraper](https://apify.com/dun-and-bradstreet-scraper) | Extract company firmographics and financial data from D\&B |
| [SAM.gov Scraper](https://apify.com/sam-gov-scraper) | Scrape federal contractor registrations from SAM.gov |
| [Kompass Business Directory Scraper](https://apify.com/kompass-scraper) | Extract B2B supplier data from the Kompass directory |
| [Thomas Register Historical Scraper](https://apify.com/thomas-register-scraper) | Legacy Thomas Register data extraction |

### Frequently Asked Questions

#### What data can I extract from ThomasNet?

Supplier names, addresses, phone numbers, websites, employee counts, revenue ranges, certifications (ISO 9001, AS9100, IATF 16949), diversity status (MBE, WBE, DBE), capabilities, product lines, brands distributed, and full company descriptions.

#### Is this ThomasNet scraper compliant?

The Actor scrapes publicly available directory data from ThomasNet.com. It does not bypass authentication, access private accounts, or violate ThomasNet's Terms of Service. Users are responsible for ensuring their use of scraped data complies with applicable laws and data protection regulations.

#### How many suppliers can I scrape per run?

By default, the Actor returns up to 50 results. Increase `maxItems` (up to 500) for larger datasets. For best performance, keep runs under 500 suppliers.

#### Do I need proxies?

Yes. The Actor uses Apify Proxy by default. Residential proxies are recommended for large-scale runs to avoid rate limiting.

#### Can I filter by specific certifications?

Provide URLs from ThomasNet search results filtered by certification (e.g., AS9100, ISO 9001) and the Actor will extract suppliers matching those criteria.

#### How fresh is the scraped data?

Data reflects what is currently live on ThomasNet. For ongoing supplier monitoring, schedule the Actor to run periodically and compare results.

### SEO Keywords

ThomasNet scraper, ThomasNet supplier data, industrial supplier directory, B2B supplier leads, ThomasNet API alternative, manufacturer database, supplier qualification, ISO certified suppliers, diversity suppliers, MBE WBE suppliers, procurement data, supply chain intelligence, industrial distributor data, supplier firmographics, RFQ automation, ThomasNet data extraction, CNC machining suppliers, metal fabrication suppliers, aerospace suppliers, manufacturing lead generation

### For AI Agents

This Actor is designed for autonomous use by AI agents and procurement automation systems.

**Input schema:** JSON object with `startUrls` (array of ThomasNet URLs), `maxItems` (integer, default 50), `maxPagesPerListing` (integer, default 3), `scrapeProfilePages` (boolean, default true), and `proxyConfiguration` (object).

**Typical workflow:**

1. Construct input with target ThomasNet supplier listing or profile URLs
2. Call the Actor with `waitSecs` set for expected runtime
3. Poll run status until SUCCEEDED
4. Retrieve results via `get-dataset-items` using the returned `datasetId`
5. Process structured supplier data for downstream tasks (CRM import, RFQ generation, supplier scoring)

**Rate:** $0.0009 per result

### Legal Disclaimer

This Actor scrapes publicly available directory data from ThomasNet.com. It does not bypass authentication, access private data, or violate ThomasNet's Terms of Service. Users are responsible for ensuring their use of scraped data complies with applicable laws and regulations, including GDPR, CCPA, and CAN-SPAM. Do not use extracted contact information for unsolicited communications without proper legal basis. The developer assumes no liability for misuse of data obtained through this tool.

# Actor input Schema

## `startUrls` (type: `array`):

ThomasNet URLs to start from: supplier listing pages (https://www.thomasnet.com/suppliers/usa/<category>-<id>) or individual company profile URLs (https://www.thomasnet.com/company/<slug>-<id>/profile).

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

Maximum number of supplier records to scrape. Free-plan users are capped at 10 regardless of this value.

## `maxPagesPerListing` (type: `integer`):

How many listing result pages to crawl per start URL (25 suppliers per page; hard cap 20).

## `scrapeProfilePages` (type: `boolean`):

When true (recommended), fetches each supplier's profile for full detail: brands, personnel, social links, certification counts. When false, builds lighter records directly from listing results (much faster).

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

Proxy settings. The Apify RESIDENTIAL proxy group is the default and recommended: Cloudflare fronts thomasnet.com and may block datacenter IPs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562"
    }
  ],
  "maxItems": 50,
  "maxPagesPerListing": 3,
  "scrapeProfilePages": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/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 = {
    "startUrls": [{ "url": "https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/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 '{
  "startUrls": [
    {
      "url": "https://www.thomasnet.com/suppliers/usa/as9100-consulting-services-97007562"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/thomasnet-scraper --silent --output-dataset

```

## MCP server setup

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