Thomasnet Supplier Scraper: US and Canada Industrial Suppliers
Pricing
from $2.69 / 1,000 suppliers
Thomasnet Supplier Scraper: US and Canada Industrial Suppliers
Search Thomasnet by keyword, category, state or ZIP, or paste profile links: one row per US or Canadian supplier with company type, annual sales and employee range, year founded, ISO and other certifications, address, phone, website, categories and personnel. No login.
Pricing
from $2.69 / 1,000 suppliers
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
From The Mine Works, makers of Made-in-China Scraper and B2B Leads Finder, with over 245,000 runs across 280+ public actors.
Updated 27 Oct 2026: first release. Keywords, categories by name, ID or link, supplier profile links and IDs; state, company type, certification and ZIP radius filters; deep search past Thomasnet's first 25 results; one flat row per supplier with company type, annual sales and employee range, year founded, certifications, address, phone, website, categories, industries, materials and personnel. Bookmark this Actor on its Store page so it is one click away next time.
Why choose this actor?
- The qualification fields in columns. Every row has
company_type(Manufacturer, Custom Manufacturer, Distributor, Service Company and the rest),annual_sales_rangesuch as$5 - 9.9 Mil,employee_rangesuch as50-99,year_founded, and the certifications as a list (ISO 9001:2015,AS9100D,ITAR Registered,Woman Owned) plus each one's scope and audit date. In our test runs phone was filled on 99% of 2,219 rows, website on 97%, sales range on 93% and employee range on 95%. - Past the first 25. Thomasnet shows 25 ranked results per search to a visitor who is not signed in. This actor reads every supplier listed in the matching categories, and its deep search runs the keyword again in every state and around the ZIP code of each supplier it finds, so smaller local suppliers with free listings come back too. "valves" gave 1,500 suppliers in one run; the category lists alone hold 221.
- Pay per supplier, nothing for errors. Links that are not Thomasnet links, unknown supplier IDs, duplicates found by two searches, suppliers your filters leave out and the summary row are never charged. No Thomasnet account, cookies or API key.
Part of The Mine Works Company and business data family: Company Domain Finder, GST Taxpayer Lookup, Company KYB Resolver, SEC EDGAR Filings Scraper, EU VAT Checker (VIES), Tech Stack Detector.
Guide and FAQs: Thomasnet Supplier Scraper on themineworks.com.
Try it in one minute
Paste this into the input (JSON view) and press Start. It returns 25 CNC machining suppliers from across the USA and Canada in Thomasnet's own ranked order. It took 15 seconds in our test run:
{"searchQueries": ["cnc machining"],"maxItems": 25}
Put several keywords on separate lines to run several searches at once, add regions such as Texas or Ontario to narrow them, or paste supplier profile links into profileUrls. A supplier that two of your searches find is delivered once.
Apify's free plan includes $5 of credit every month, which covers about 1,100 suppliers at this actor's price.
Copy to your AI assistant
themineworks/thomasnet-supplier-scraper on Apify. Returns one row per US or Canadian industrial supplier from Thomasnet with company type (manufacturer, distributor, service company), annual sales range, employee range, year founded, certifications (ISO and others, with scope and date), address, phone, website, product and service categories, industries served, materials, personnel with titles and the Thomasnet profile link, with no login. Call ApifyClient("TOKEN").actor("themineworks/thomasnet-supplier-scraper").call(run_input={"searchQueries": ["cnc machining"], "regions": ["Ohio"], "maxItems": 200}), then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: searchQueries (keywords or Thomasnet search links), categories (category names, IDs such as 45330503, or links such as https://www.thomasnet.com/suppliers/usa/cnc-machining-45330503), profileUrls (profile links such as https://www.thomasnet.com/company/magnatrol-valve-corp-567647/profile, or supplier IDs such as 567647; 10 per call, for one record at a time). Optional: regions (state or province names or codes; Texas reads both Thomasnet halves NT and GT), locatedInRegionsOnly (default true), companyTypes (Manufacturer, Custom Manufacturer, Distributor, Service Company, Manufacturers' Rep, Finishing Service Company, Turnkey Systems Integrator, Remanufacturer), certifications (words matched on certification names, e.g. ISO 9001, AS9100), zipCode with radiusMiles (default 50), maxItems (default 100, 1 to 10000, per keyword or category), maxCategoriesPerKeyword (default 3), includeTextSearch (default true), deepSearch (default true), readFullCategoryLists (default true). Supplier rows have no _type field and carry supplier_id, company_name, company_type, company_type_code, other_activities, activities, is_manufacturer, is_distributor, is_service_company, phone, website, street_address, city, state, state_name, zip, country, county, location, latitude, longitude, annual_sales_range, employee_range, year_founded, certifications (title, type, group, scope, date, is_active), certification_titles, iso_certifications, categories, industries_served, materials, production_scale, brands, description, description_by_company, personnel (name, title), social_links (platform, url), thomas_tier, is_thomas_verified, is_thomas_registered, is_claimed, is_xometry_partner, is_advertiser, is_top_responder, is_multi_location, main_location_id, main_location_name, logo_url, thomasnet_url, distance_miles, matched_category, matched_category_id, found_by (category_list, keyword_search or profile), search_keyword, search_category, search_category_id, search_category_url, region_code, region_name, search_zip, results_in_list, position, scraped_at. Each run also writes one row with _type "summary", one with _type "info" when suppliers were delivered, and a row with _type "error" for each input that could not be read; none of these is charged. Full spec: GET https://api.apify.com/v2/acts/themineworks~thomasnet-supplier-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Keyword, category or profile. Type keywords the way you would in the Thomasnet search box; each one is matched to Thomasnet's own categories (for "cnc machining": CNC Machining, Aircraft and Aerospace CNC Machining, Medical CNC Machining) and every supplier in those lists is read, 100 per call. Or give a category by name, ID or link, or a supplier profile link or ID.
- Ranked results first. Each keyword starts with Thomasnet's own ranked search, then adds the category lists, so a small
maxItemsreturns the suppliers Thomasnet itself puts on top. - Deep search. When the category lists run out before
maxItems, the keyword is searched again in each of Thomasnet's 71 regions and then around the ZIP code of every supplier found, 25 miles at a time. It stops atmaxItemsor as soon as new searches stop turning up new suppliers. - State, ZIP and radius.
regionstakes state and province names or codes; Thomasnet splits California, Massachusetts, New Jersey, New York, Ohio, Pennsylvania and Texas in two, and the state name reads both halves. WithlocatedInRegionsOnly(on by default) only suppliers whose own address is in those states are kept.zipCodeandradiusMilesreturn suppliers near a plant or a customer, withdistance_mileson each row. - Filters that cost nothing.
companyTypesandcertificationsdrop suppliers before they reach your dataset, and dropped suppliers are not charged. - Stops cleanly. Six failed or blocked requests in a row end the run; the run stops before its time limit and keeps every row it read. The summary row says what was read, what was skipped and why.
How to use it
Basic: suppliers for one product or service
{"searchQueries": ["hydraulic cylinders"],"maxItems": 500}
Thomasnet's ranked results, then every supplier in the matching categories, then deep search until 500. Sort by annual_sales_range or employee_range to size them, or filter is_manufacturer to drop resellers.
Sourcing shortlist: certified manufacturers in two states
{"searchQueries": ["injection molding"],"regions": ["Texas", "Ohio"],"companyTypes": ["Manufacturer", "Custom Manufacturer"],"certifications": ["ISO 9001"],"maxItems": 150}
In our test run this returned 92 suppliers, every one located in Texas or Ohio, a manufacturer by type or activity, and holding an ISO 9001 certification. 294 suppliers that did not pass the filters were left out and not charged.
Near your plant: suppliers within a radius of a ZIP code
{"searchQueries": ["sheet metal fabrication"],"zipCode": "44101","radiusMiles": 30,"maxItems": 150}
150 suppliers within 30 miles of Cleveland in our test run, each with distance_miles. Canadian postal codes work too (M5V 2T6).
Whole categories, by name, ID or link
{"categories": ["Hydraulic Cylinders","https://www.thomasnet.com/suppliers/northern-ohio/cnc-machining-45330503"],"maxItems": 1000}
A category link with a state in it reads that area only. results_in_list on each row says how many suppliers Thomasnet has in the list that was read.
One supplier at a time from Clay, n8n or an AI agent
{"profileUrls": ["https://www.thomasnet.com/company/metro-hydraulic-1082640/profile", "567647"]}
One row per profile, in the order given, about 3 seconds for a single record. A batch of 13 profiles took 4 seconds in our test.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchQueries | array of strings | empty | Keywords, one search each, for example cnc machining. Thomasnet search links work here too. |
categories | array of strings | empty | Category names, IDs or links; every supplier in the list is read. |
profileUrls | array of strings | empty | Supplier profile links or supplier IDs. |
regions | array of strings | all of USA and Canada | States and provinces by name or code (Texas, TX, Ontario), or a Thomasnet half such as Texas - North. |
locatedInRegionsOnly | boolean | true | Keep only suppliers whose own address is in those regions. |
companyTypes | array | every type | Manufacturer, Custom Manufacturer, Distributor, Service Company, Manufacturers' Rep, Finishing Service Company, Turnkey Systems Integrator, Remanufacturer. |
certifications | array of strings | none | Keep suppliers holding at least one of these, matched on the certification name. |
zipCode | string | none | US ZIP or Canadian postal code; searches return suppliers within radiusMiles. |
radiusMiles | integer | 50 | Radius around zipCode, 1 to 500 miles. |
maxItems | integer | 100 | Most suppliers per keyword or category, 1 to 10,000. Profiles are not limited by it. |
maxCategoriesPerKeyword | integer | 3 | How many matching categories each keyword reads in full, 0 to 10. |
includeTextSearch | boolean | true | Start each keyword with Thomasnet's ranked results. |
deepSearch | boolean | true | Search again by region and around supplier ZIP codes when the lists run out. |
readFullCategoryLists | boolean | true | Read category lists past the first page (see FAQ). |
Give searchQueries, categories, profileUrls or any mix. Up to 100 searches and 5,000 profiles per run.
What data do you get?
One row per supplier. Supplier rows have no _type field; the summary, info and error rows do, so a filter on _type separates them.
| Field | What it is |
|---|---|
supplier_id | Thomasnet supplier ID (tgramsId), e.g. 567647 |
company_name, thomasnet_url | Company name and its Thomasnet profile link |
company_type, company_type_code | Main type, e.g. Manufacturer (M), Distributor (D) |
other_activities, activities | Other types it also lists; main type plus the others |
is_manufacturer, is_distributor, is_service_company | True when the main type or any activity says so |
phone, website | Primary phone and company website |
street_address, city, state, state_name, zip, country, county, location | Address as Thomasnet lists it |
latitude, longitude | Coordinates of the address |
annual_sales_range, employee_range, year_founded | Size bands and founding year |
certifications | Each certification with title, type (QUALITY, REGISTRATION, DIVERSITY), group, scope, date, is_active |
certification_titles, iso_certifications | Titles only; ISO and IATF titles only |
categories | Product and service categories the supplier is listed under |
industries_served, materials, production_scale, brands | Capabilities the supplier lists |
description, description_by_company | Thomasnet's description and the company's own |
personnel, social_links | Named staff with job titles; social profiles |
thomas_tier, is_thomas_verified, is_thomas_registered | Thomas Verified or Registered badge |
is_claimed, is_xometry_partner, is_advertiser, is_top_responder | Profile flags |
is_multi_location, main_location_id, main_location_name | Branch and head office links |
logo_url | Company logo |
distance_miles | Distance from your zipCode |
matched_category, matched_category_id | Category the supplier was found in |
found_by | category_list, keyword_search or profile |
search_keyword, search_category, search_category_id, search_category_url | The search that found it |
region_code, region_name, search_zip | Area or ZIP that was searched |
results_in_list, position | Size of that Thomasnet list and the supplier's place in this search |
scraped_at | When the row was read |
Stable fields for automations
These were present in every supplier row of our test runs (2,219 rows from 3 keyword runs), and their names will not change:
| Field | What it is |
|---|---|
supplier_id | The key to store and join on |
company_name | Company name |
thomasnet_url | Profile link |
city, state, zip, country | Location |
latitude, longitude | Coordinates |
categories | Categories listed |
thomas_tier | Badge tier |
found_by, search_keyword, position | How it was found |
Optional, present only when Thomasnet shows a value: phone (99% of test rows), website (97%), employee_range (95%), annual_sales_range (93%), year_founded (83%), industries_served (69%), materials (66%), personnel (53%), certifications (51%), iso_certifications (33%), brands and social_links. Suppliers with a free listing (thomas_tier NONE, 57% of the test rows) fill fewer of these than Thomas Verified ones.
Output examples
A Thomas Verified custom manufacturer from a category list (lists shortened):
{"supplier_id": "10020412","company_name": "Jamak","company_type": "Custom Manufacturer","other_activities": ["Manufacturer", "Service Company"],"is_manufacturer": true,"is_distributor": false,"phone": "(888) 389-5955","website": "https://www.jamak.com/","street_address": "1401 N. Bowie Dr","city": "Weatherford","state": "TX","zip": "76086","country": "USA","annual_sales_range": "$50 - 99.9 Mil","employee_range": "200-499","year_founded": 1971,"certification_titles": ["ISO 14001:2015", "ISO 14644-1:2015", "ISO 9001:2015", "Made in the USA", "RoHS Compliant"],"iso_certifications": ["ISO 14001:2015", "ISO 14644-1:2015", "ISO 9001:2015"],"categories": ["Aerospace Molded Plastics & Rubber", "Compounding Services", "Contract Manufacturing"],"industries_served": ["Aerospace", "Automotive", "Medical and Dental"],"personnel": [{ "name": "Dan Thompson", "title": "President" }, { "name": "David Wilson", "title": "Sales Director" }],"thomas_tier": "VERIFIED","thomasnet_url": "https://www.thomasnet.com/company/jamak-10020412/profile","matched_category": "Aerospace Injection Molding Services","found_by": "category_list","search_keyword": "injection molding","region_code": "NT","region_name": "Texas - North","results_in_list": 9,"position": 40}
A distributor with a free listing, found by deep search around a Wisconsin ZIP code:
{"supplier_id": "452827","company_name": "CMA/Flodyne/Hydradyne, Inc.","company_type": "Distributor","other_activities": ["Custom Manufacturer", "Service Company"],"phone": "(630) 563-3600","website": "http://www.cmafh.com/","street_address": "3265 Gateway Rd., Suite 300","city": "Brookfield","state": "WI","zip": "53045","annual_sales_range": "$5 - 9.9 Mil","employee_range": "50-99","year_founded": 1974,"categories": ["Valves"],"brands": ["Balluff", "Beijer", "Casappa", "Clippard"],"thomas_tier": "NONE","thomasnet_url": "https://www.thomasnet.com/company/cma-flodyne-hydradyne-inc-452827/profile","found_by": "keyword_search","search_keyword": "valves","search_zip": "53051","position": 857}
The summary row (shortened):
{"_type": "summary","searches_requested": 1,"suppliers_read": 5676,"duplicates_skipped": 4176,"suppliers_delivered": 1500,"charged_for": 1500,"api_calls_lists": 5,"api_calls_keyword_search": 72,"api_calls_deep_search": 174,"http_blocked": 0,"run_seconds": 102}
Pricing
Pay per event: you pay for the suppliers you receive, plus a flat $0.002 per run, whatever memory you choose. Category lists, deep search, certifications, personnel and the filters cost nothing extra.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
supplier-scraped | Once per supplier row stored in your dataset | $4.49 per 1,000 | $3.79 per 1,000 | $3.19 per 1,000 | $2.69 per 1,000 |
run-start | Once per run, after the first supplier row is stored | $0.002 | $0.002 | $0.002 | $0.002 |
The price of one supplier is the price per 1,000 divided by 1,000.
Never charged:
- inputs that are not keywords, categories or Thomasnet links, unknown regions and company types (each gets an error row);
- supplier IDs Thomasnet does not have, and category names it does not know;
- a supplier that a second search of the same run finds again;
- suppliers your
regions,companyTypes,certificationsorradiusMilesleave out; - suppliers past your
maxItems; - the summary, info and error rows;
- a run that delivers no supplier: the start fee is charged only after the first supplier row is stored;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.
Run it on a schedule
- Open the actor in Apify Console, set your input and click Save as a new task.
- In the task, open Schedules, click Add schedule and pick how often (every month, every Monday at 08:00 and so on).
- Compare runs on
supplier_idto see suppliers new to your category or region, and oncertification_titlesto see new certifications. - Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.
FAQ
What does this actor read?
The same data Thomasnet's own search and category pages show to a visitor, read from the data service those pages call. For each keyword it reads Thomasnet's ranked results, the supplier lists of the best matching categories, and with deep search on, the same keyword by region and around supplier ZIP codes. Nothing is rendered in a browser.
How many suppliers can I get for a keyword?
Up to maxItems (10,000 at most) per keyword. A category list holds the suppliers that list themselves in that category, which are mostly Thomas Verified ones: 489 for CNC Machining, 239 for Valves. Deep search adds the smaller suppliers with free listings that Thomasnet's ranked search finds: "valves" reached 1,500 in 103 seconds in our test, and stops by itself when new searches stop finding new suppliers.
Why do some rows have no sales range, employees or certifications?
Thomasnet shows them only when the supplier has given them. Thomas Verified suppliers fill most fields; a free listing may have a name, address, phone and categories only. Empty fields are left out of the row rather than sent as blanks.
What do readFullCategoryLists and includeTextSearch change?
On the website, a category page asks visitors to sign in from its second page, and the ranked search shows 25 results per search. With readFullCategoryLists on (the default) the actor reads every page of each category list from the data service the pages use, 100 suppliers per call; off, it reads the first 25 of each category and region only, as a visitor sees without signing in. includeTextSearch adds Thomasnet's ranked results for the keyword at the start. The actor never logs in and reads only what that data service returns without an account.
How does the region filter work?
Thomasnet files suppliers by the areas they serve. regions asks Thomasnet for the suppliers serving those areas, and locatedInRegionsOnly (on by default) then keeps only those whose own address is in the chosen states or provinces. Turn it off to also get suppliers from elsewhere that serve your region.
How long does a run take?
About 15 seconds for 25 suppliers, 90 seconds for 700 suppliers from two keywords, and 100 seconds for 1,500 with deep search, in our test runs. A profile run takes about 3 seconds, plus well under a second for each extra profile.
Do I need a Thomasnet account, cookies or a proxy?
No. The actor reads public data over Apify Proxy, which is included. Nothing to set up.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/thomasnet-supplier-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http thomasnet-supplier-scraper "https://mcp.apify.com/?tools=themineworks/thomasnet-supplier-scraper"
Which formats can I download?
JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has four ready views: Suppliers, Contacts and address, Qualification, and Categories and capabilities. In CSV and Excel, lists such as certifications and personnel are flattened into columns such as certifications/0/title and personnel/0/name.
Is it legal to scrape Thomasnet?
The actor reads only business directory data that Thomasnet shows to any visitor without logging in: company names, addresses, phone numbers, websites and the capabilities suppliers publish to be found by buyers. It does not log in or solve CAPTCHAs, and reads only what Thomasnet's data service returns without an account. You are responsible for how you use the data, including Thomasnet's terms, data protection law such as GDPR and CCPA, and the rules on contacting businesses in your country. This is general information, not legal advice.
Integrations
- Google Sheets: send each run's suppliers to a sheet with Apify's Google Sheets integration; one row per supplier fits a sheet as is.
- Clay, Make, Zapier and n8n: call the actor once per record with a profile link, or start a search and read its dataset, for example "new ISO 9001 machine shops in Ohio every month to the CRM".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
Company and business data
- Company Domain Finder
- GST Taxpayer Lookup
- Company KYB Resolver
- SEC EDGAR Filings Scraper
- EU VAT Checker (VIES)
- Tech Stack Detector
- Bundesanzeiger Scraper
- Domain to LinkedIn URL Resolver
- World Bank Trade Scraper
- US Import Records
- Y Combinator Scraper
- Norway Company Register
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
Jobs and hiring
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
Found a keyword that returns fewer suppliers than Thomasnet shows, or a field that comes back empty when the profile has it? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.
Search Thomasnet by keyword, category, state or ZIP code and get every supplier back as one row, with company type, sales and employee range, year founded, certifications, address, phone, website and categories, no login.

