# IQSDirectory Industrial Supplier Scraper (`compute-edge/iqsdirectory-scraper`) Actor

Scrape industrial supplier listings from IQSDirectory.com. Extracts company name, address, phone, website, description, categories, and video URLs from category listing and company profile pages.

- **URL**: https://apify.com/compute-edge/iqsdirectory-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 18 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## IQS Industrial Supplier Directory Scraper

**Extract industrial supplier and manufacturer data from IQSDirectory.com** -- one of the largest B2B industrial directories in the United States. This Apify Actor scrapes company names, addresses, phone numbers, websites, descriptions, product categories, and YouTube video URLs from IQS Directory category listings and company profile pages.

IQS Directory is a comprehensive resource for sourcing **industrial suppliers**, **manufacturers**, and **service providers** across hundreds of product categories. Whether you need data on **CNC machining companies**, **metal fabrication shops**, **plastic injection molding providers**, or **custom manufacturing services**, this scraper extracts structured business data ready for lead generation, market research, and supply chain analysis.

The scraper operates in two modes: a fast listing-only mode that extracts basic company information from category pages, and a detailed mode that visits each company's profile page to collect the full set of data fields including complete descriptions, website URLs, video content, and category classifications.

### What data can you scrape from IQS Directory?

| Field | Description |
|-------|-------------|
| **name** | Company name |
| **address** | Full address (street, city, state, ZIP) |
| **phone** | Phone number |
| **website** | Company website URL |
| **description** | Full company description from profile page |
| **categories** | Industrial product categories the company is listed under |
| **videoUrl** | YouTube video embed URL (when available) |
| **profileUrl** | IQS Directory profile page URL |

### Why Scrape IQS Directory? Top Use Cases

- **No login required** -- all data is publicly accessible on IQS Directory
- **Hundreds of industrial categories** -- CNC machining, metal fabrication, plastic molding, and more
- **Structured data extraction** -- uses schema.org markup and semantic selectors for high accuracy
- **Fast and efficient** -- uses CheerioCrawler (no browser needed), keeping compute costs extremely low
- **Pagination support** -- automatically follows multi-page category listings
- **Two scraping modes** -- quick listing scan or detailed profile extraction
- **Safety limits** -- configurable max pages and max requests to control costs

### How to scrape IQS Directory

1. Go to the [IQS Directory Scraper](https://apify.com/seatsignal/iqsdirectory-scraper) page on Apify Store
2. Click **Try for free**
3. Enter a **Category** slug (e.g., `cnc-machining`, `metal-fabrication`, `plastic-injection-molding`)
4. Set **Max Pages** to control how many listing pages to scrape (each page has 10-30 companies)
5. Toggle **Scrape Detail Pages** on for full data (description, website, video, categories) or off for a quick list
6. Set **Max Requests** as a safety limit to prevent runaway costs
7. Click **Start** and wait for results
8. Download results as JSON, CSV, or Excel from the **Dataset** tab

#### Finding category slugs

Visit [iqsdirectory.com](https://www.iqsdirectory.com/) and browse to any category page. The slug is the URL path segment -- for example:
- `https://www.iqsdirectory.com/cnc-machining/` --> slug is `cnc-machining`
- `https://www.iqsdirectory.com/metal-fabrication/` --> slug is `metal-fabrication`
- `https://www.iqsdirectory.com/plastic-injection-molding/` --> slug is `plastic-injection-molding`

### Input example

```json
{
    "category": "cnc-machining",
    "maxPages": 5,
    "scrapeDetails": true,
    "maxRequestsPerCrawl": 500
}
````

### Output example

Each company listing returns a JSON object like this:

```json
{
    "profileUrl": "https://www.iqsdirectory.com/profile/grovtec-machining-78574/",
    "category": "cnc-machining",
    "name": "GrovTec Machining",
    "address": "23555 NE Halsey Street, Wood Village, OR, 97060",
    "phone": "503-557-4689",
    "website": "https://www.grovtecmachining.com/",
    "description": "At GrovTec Machining, we manufacture precision screw machine products and CNC machined components engineered to meet demanding dimensional and performance requirements...",
    "categories": ["CNC Machining", "Screw Machine Products"],
    "videoUrl": "https://www.youtube.com/embed/6BvFSIdFohI"
}
```

### How much does it cost to scrape IQS Directory?

This Actor uses **CheerioCrawler** (no browser), so compute costs are very low.

| Scenario | Pages | Results | Est. Compute | Est. Actor Fee |
|----------|-------|---------|-------------|----------------|
| One category, listing only | 5 | ~100 | ~$0.01 | ~$0.20 |
| One category, with details | 5 | ~100 | ~$0.03 | ~$0.20 |
| Multiple categories | 25 | ~500 | ~$0.10 | ~$1.00 |
| Large-scale extraction | 100 | ~2,000 | ~$0.40 | ~$4.00 |

Actor pricing: **$0.002 per result** + minimal compute costs. A typical run of 5 pages costs under $0.25 total.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `category` | string | Yes | `cnc-machining` | IQS category slug from the URL |
| `maxPages` | integer | No | `5` | Max listing pages to scrape (1-100) |
| `scrapeDetails` | boolean | No | `true` | Visit profile pages for full data |
| `maxRequestsPerCrawl` | integer | No | `500` | Safety limit on total HTTP requests |

### Tips for best results

- **Start small** -- test with `maxPages: 1` and `maxRequestsPerCrawl: 20` to verify the category works before scaling up
- **Quick mode** -- set `scrapeDetails` to `false` for a fast list of company names, locations, and profile URLs without visiting each detail page
- **Large scrapes** -- increase both `maxPages` and `maxRequestsPerCrawl` together. Each listing page contains 10-30 companies, and each company detail page is one additional request.
- **Popular categories** -- `cnc-machining`, `metal-fabrication`, `plastic-injection-molding`, `precision-machining`, `contract-manufacturing`, `sheet-metal-fabrication`

### Integrations

Connect IQS Directory data with your workflow:

- **API** -- Access results programmatically via the [Apify API](https://docs.apify.com/api/v2)
- **Webhooks** -- Get notified when a scrape completes
- **Zapier / Make** -- Pipe results into Google Sheets, CRMs, or databases
- **Python / Node.js** -- Use the [Apify SDK](https://docs.apify.com/sdk/js) to run and retrieve data

### FAQ

#### Is it legal to scrape IQS Directory?

IQSDirectory.com is a publicly accessible B2B industrial directory. This scraper only extracts publicly available business information that companies have voluntarily listed. Always review the site's Terms of Service before use.

#### How much does it cost to scrape IQS Directory?

Actor pricing is $0.002 per result plus Apify compute costs. A typical run of 5 pages (~100 companies) costs under $0.25 total. See the pricing table above for detailed estimates.

#### Can I export IQS Directory data to Excel or CSV?

Yes. Apify datasets can be exported in JSON, CSV, Excel, and other formats directly from the platform. You can also connect via Zapier or Make for automatic exports to Google Sheets or CRMs.

#### What industrial categories does IQS Directory cover?

IQS Directory covers hundreds of industrial categories including CNC machining, metal fabrication, plastic injection molding, precision machining, contract manufacturing, and sheet metal fabrication.

#### How do I find suppliers in a specific industrial niche?

Browse [iqsdirectory.com](https://www.iqsdirectory.com/) to find your category, then use the URL slug as the `category` input parameter. For example, `cnc-machining` or `metal-fabrication`.

### Other Scrapers by SeatSignal

- [Hotfrog Business Directory Scraper](https://apify.com/seatsignal/hotfrog-scraper) — Business listings from 18+ countries
- [SBIR Government Grants Scraper](https://apify.com/seatsignal/sbir-awards-scraper) — 220,000+ government grant awards with contact info
- [SEC EDGAR Financials Scraper](https://apify.com/seatsignal/sec-edgar-scraper) — Public company financial data and SEC filings
- [OSHA Inspections Scraper](https://apify.com/seatsignal/osha-inspections-scraper) — Workplace safety inspection and violation data
- [EPA ECHO Compliance Scraper](https://apify.com/seatsignal/epa-echo-scraper) — Environmental compliance and enforcement data

### Legal disclaimer

This Actor extracts publicly available business information from IQSDirectory.com. It does not extract private user data, bypass authentication, or access protected content. The scraped data consists of business listings that companies have voluntarily published on IQS Directory's public industrial supplier directory.

Users are responsible for ensuring their use of scraped data complies with applicable laws, including GDPR and CCPA. For questions about data usage, consult a legal professional.

### Support

- **Issues?** Open an issue on the Actor's Apify page
- **Custom data needs?** Contact us for enterprise solutions

# Actor input Schema

## `category` (type: `string`):

IQS category slug (e.g., 'cnc-machining', 'metal-fabrication', 'plastic-injection-molding'). Find slugs at iqsdirectory.com.

## `maxPages` (type: `integer`):

Maximum number of listing pages to scrape per category.

## `scrapeDetails` (type: `boolean`):

If true, visits each company's profile page for full details. Slower but more complete data.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum total HTTP requests. Safety limit to prevent runaway costs.

## Actor input object example

```json
{
  "category": "cnc-machining",
  "maxPages": 5,
  "scrapeDetails": true,
  "maxRequestsPerCrawl": 500
}
```

# 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 = {
    "category": "cnc-machining"
};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/iqsdirectory-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 = { "category": "cnc-machining" }

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

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

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

```

## CLI example

```bash
echo '{
  "category": "cnc-machining"
}' |
apify call compute-edge/iqsdirectory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=compute-edge/iqsdirectory-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IQSDirectory Industrial Supplier Scraper",
        "description": "Scrape industrial supplier listings from IQSDirectory.com. Extracts company name, address, phone, website, description, categories, and video URLs from category listing and company profile pages.",
        "version": "0.1",
        "x-build-id": "anPi71ar8nwoeLp4I"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~iqsdirectory-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-iqsdirectory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/compute-edge~iqsdirectory-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-iqsdirectory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/compute-edge~iqsdirectory-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-iqsdirectory-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "category"
                ],
                "properties": {
                    "category": {
                        "title": "Category",
                        "type": "string",
                        "description": "IQS category slug (e.g., 'cnc-machining', 'metal-fabrication', 'plastic-injection-molding'). Find slugs at iqsdirectory.com."
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of listing pages to scrape per category.",
                        "default": 5
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "If true, visits each company's profile page for full details. Slower but more complete data.",
                        "default": true
                    },
                    "maxRequestsPerCrawl": {
                        "title": "Max Requests",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum total HTTP requests. Safety limit to prevent runaway costs.",
                        "default": 500
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
