Thomasnet Supplier Scraper: US and Canada Industrial Suppliers avatar

Thomasnet Supplier Scraper: US and Canada Industrial Suppliers

Pricing

from $2.69 / 1,000 suppliers

Go to Apify Store
Thomasnet Supplier Scraper: US and Canada Industrial 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

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

1,500 Thomasnet valve suppliers with sales range, employees and certifications in 103 seconds

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_range such as $5 - 9.9 Mil, employee_range such as 50-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.

Run it on Apify

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 maxItems returns 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 at maxItems or as soon as new searches stop turning up new suppliers.
  • State, ZIP and radius. regions takes 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. With locatedInRegionsOnly (on by default) only suppliers whose own address is in those states are kept. zipCode and radiusMiles return suppliers near a plant or a customer, with distance_miles on each row.
  • Filters that cost nothing. companyTypes and certifications drop 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).

{
"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

ParameterTypeDefaultWhat it does
searchQueriesarray of stringsemptyKeywords, one search each, for example cnc machining. Thomasnet search links work here too.
categoriesarray of stringsemptyCategory names, IDs or links; every supplier in the list is read.
profileUrlsarray of stringsemptySupplier profile links or supplier IDs.
regionsarray of stringsall of USA and CanadaStates and provinces by name or code (Texas, TX, Ontario), or a Thomasnet half such as Texas - North.
locatedInRegionsOnlybooleantrueKeep only suppliers whose own address is in those regions.
companyTypesarrayevery typeManufacturer, Custom Manufacturer, Distributor, Service Company, Manufacturers' Rep, Finishing Service Company, Turnkey Systems Integrator, Remanufacturer.
certificationsarray of stringsnoneKeep suppliers holding at least one of these, matched on the certification name.
zipCodestringnoneUS ZIP or Canadian postal code; searches return suppliers within radiusMiles.
radiusMilesinteger50Radius around zipCode, 1 to 500 miles.
maxItemsinteger100Most suppliers per keyword or category, 1 to 10,000. Profiles are not limited by it.
maxCategoriesPerKeywordinteger3How many matching categories each keyword reads in full, 0 to 10.
includeTextSearchbooleantrueStart each keyword with Thomasnet's ranked results.
deepSearchbooleantrueSearch again by region and around supplier ZIP codes when the lists run out.
readFullCategoryListsbooleantrueRead 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.

FieldWhat it is
supplier_idThomasnet supplier ID (tgramsId), e.g. 567647
company_name, thomasnet_urlCompany name and its Thomasnet profile link
company_type, company_type_codeMain type, e.g. Manufacturer (M), Distributor (D)
other_activities, activitiesOther types it also lists; main type plus the others
is_manufacturer, is_distributor, is_service_companyTrue when the main type or any activity says so
phone, websitePrimary phone and company website
street_address, city, state, state_name, zip, country, county, locationAddress as Thomasnet lists it
latitude, longitudeCoordinates of the address
annual_sales_range, employee_range, year_foundedSize bands and founding year
certificationsEach certification with title, type (QUALITY, REGISTRATION, DIVERSITY), group, scope, date, is_active
certification_titles, iso_certificationsTitles only; ISO and IATF titles only
categoriesProduct and service categories the supplier is listed under
industries_served, materials, production_scale, brandsCapabilities the supplier lists
description, description_by_companyThomasnet's description and the company's own
personnel, social_linksNamed staff with job titles; social profiles
thomas_tier, is_thomas_verified, is_thomas_registeredThomas Verified or Registered badge
is_claimed, is_xometry_partner, is_advertiser, is_top_responderProfile flags
is_multi_location, main_location_id, main_location_nameBranch and head office links
logo_urlCompany logo
distance_milesDistance from your zipCode
matched_category, matched_category_idCategory the supplier was found in
found_bycategory_list, keyword_search or profile
search_keyword, search_category, search_category_id, search_category_urlThe search that found it
region_code, region_name, search_zipArea or ZIP that was searched
results_in_list, positionSize of that Thomasnet list and the supplier's place in this search
scraped_atWhen 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:

FieldWhat it is
supplier_idThe key to store and join on
company_nameCompany name
thomasnet_urlProfile link
city, state, zip, countryLocation
latitude, longitudeCoordinates
categoriesCategories listed
thomas_tierBadge tier
found_by, search_keyword, positionHow 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.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
supplier-scrapedOnce 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-startOnce 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, certifications or radiusMiles leave 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

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every month, every Monday at 08:00 and so on).
  3. Compare runs on supplier_id to see suppliers new to your category or region, and on certification_titles to see new certifications.
  4. 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.

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

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

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.