Thomasnet Scraper | US Industrial Suppliers
Pricing
from $2.20 / 1,000 results
Thomasnet Scraper | US Industrial Suppliers
Scrape Thomasnet (www.thomasnet.com) US industrial B2B suppliers via keyword search, heading categories, and company profiles. Extract tgramsId, location, sales, employees, capabilities, and profile URLs. Export Excel, CSV, or JSON. Unofficial — not affiliated with Thomas Publishing / Thomasnet.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Thomasnet Scraper | US Supplier Phones & Street
Scrape Thomasnet US industrial B2B suppliers — public phones and street addresses, heading categories, and company profiles — then download structured manufacturer data as Excel, CSV, or JSON.
Use this Actor as a practical Thomasnet data API for US supplier discovery, procurement shortlists, industrial market research, and lead enrichment. Guest search and company-profile pages already show plaintext phones and street + unit. Emails are usually absent on those guest surfaces (emails=[] with leadAbsences.emails=本站无) — this Actor does not invent mailboxes. Choose a mode, set a keyword / heading / company URL, and get Dataset rows with tgramsId, company name, phones, street, sales band, employee count, capabilities, headings, and profile URLs.
- Scrape supplier keyword search (
/suppliers/search) - Browse heading / category lists (
/suppliers/usa/{slug}-{headingId}) - Pull company profile pages (
/company/{slug}-{tgramsId}/profile) - Optional browse mode to walk the category tree: sub-categories at upper levels, headings at the leaves (names only — no company phones). Pass a category
slugback asqueryto go one level down. - Extract tgramsId, name, website, phones, street, city/state/zip, annualSales, numberEmployees, yearFounded, capabilities, headings, tier flags
- Defaults:
enrichDetails: true,includeStreet: true,redactPhones: false(plaintextprimaryPhone+phones[]) - One billed entity per Dataset row: suppliers use
rowType: "supplier"and each embedded supplier product usesrowType: "product" - Optional
zip+radiusandfilterIds - Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or the Apify API
- Pay per event — Actor start + each Dataset result; platform usage is included (you do not pay separate Apify compute on top)
Unofficial tool. This Actor is not affiliated with, endorsed by, or sponsored by Thomas Publishing / Thomasnet.com. It collects publicly reachable listing and profile surfaces and does not log in, auto-click Contact Supplier / Claim / Register / Sign In, or access private accounts. You do not bring a proxy — the hosted worker reads Thomasnet's own public GraphQL endpoint directly.
What does the Thomasnet Scraper do?
Thomasnet Scraper lets you extract structured US industrial supplier data from www.thomasnet.com without running your own anti-bot browser fleet. Give it a keyword (e.g. precision castings, cnc machining), a heading slug + id, or a company profile URL / tgramsId, then start a run.
Under the hood, the Actor:
- Validates your input (mode, query, heading, company identifiers)
- Enforces free-tier caps when you are on a free Apify plan
- Reads the same public data Thomasnet's website loads, from its GraphQL endpoint (no browser, no proxy)
- Normalizes supplier / company rows into a clean Dataset, including Lead / Contact fields
- Writes suppliers and products as separate Dataset rows, then stores
INPUT_ECHO,RUN_SUMMARY(andERROR_SUMMARYon failure)
You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.
What Thomasnet data can I extract?
| Data | Supplier search | Heading list | Company profile | Browse |
|---|---|---|---|---|
| tgramsId / profile URL | ✅ | ✅ | ✅ | — |
| company name | ✅ | ✅ | ✅ | heading titles |
| website | ✅ | ✅ | ✅ | — |
| city / state / zip | ✅ | ✅ | ✅ | — |
| annualSales / employees / yearFounded | ✅ | ✅ | ✅ | — |
| capabilities / headings | ✅ | ✅ | ✅ | heading links |
| tier / advertiser / claimed flags | ✅ | ✅ | ✅ | — |
primaryPhone + phones[] (plaintext) | ✅ | ✅ | ✅ | — |
address.street / unit | ✅ | ✅ | ✅ | — |
person (name + role) | list: 本站无; enrich on | list: 本站无; enrich on | optional | — |
emails[] | 本站无 | 本站无 | 本站无 | 本站无 |
web.website | ✅ | ✅ | ✅ | — |
redactPhones defaults false — you get the real number (sample: Boker's (612) 729-9365). includeStreet defaults true (sample: 3104 Snelling Ave). enrichDetails defaults true so list rows pick up profile personnel when Thomasnet publishes it. Contact Supplier / Claim / Register are never auto-clicked.
Lead / Contact fields
Every Dataset item carries the following contact / clue keys. Empty top-level lead keys are paired with a leadAbsences reason (本站无 / 闸门锁 / 未验证) so you know why a field is missing.
| Field | Type | Meaning on Thomasnet |
|---|---|---|
phones | [{value, type, e164?}] | Guest-visible landline from SSR primaryPhone (search/heading cards and company profile). Sample: Magister (973) 344-5313; WRK smoke: Boker's (612) 729-9365 / e164 +16127299365. List cards have no tel: in the DOM; the number is already in __NEXT_DATA__. |
emails | [{value, type}] | 本站无 on guest search and guest company profile. There is no email / primaryEmail key and no mailto:. Always emails=[] with leadAbsences.emails=本站无. Do not invent addresses from video copy or the company website. |
address | {street, unit, locality, region, postalCode, country, full} | Street + unit from address.address1 / address2 (e.g. Magister street 45 Montgomery street, unit Unit A, Belleville NJ 07109). WRK smoke: Boker's street 3104 Snelling Ave, unit null. |
geo | {lat, lng} | address.latitude / longitude in addition to street, not instead (Boker's 44.941…, -93.223…). |
person | {name, role?} | First personnel[] entry on the company profile (name + title). Optional — can be null + leadAbsences.person=本站无 (e.g. Modern Fluid Power). List cards have no personnel until enrichDetails (default on). Sample: Boker's Pete Flodquist / Sales Manager; recon: Alex Konotopov / General Manager. |
org | {name, id?} | Company name + tgramsId (Boker's 1160254). |
web | {website, socials[]} | website is filled when the listing publishes it. web.socials[] is often empty even when the raw social[] array has LinkedIn: Thomasnet stores the URL in social[].accountId (not url), so the mapped web.socials list may stay []. Use raw social[] for LinkedIn / Facebook / Twitter / YouTube. Some profiles have social: null. |
leadSource | enum | search (browse headings) | detail (supplier / enriched profile). |
leadReveal | enum | visible when phones[] is non-empty (number already in SSR). absent on browse (no company phones) or when the card has no number. Not xhr — see Reveal cost. |
leadAbsences | object | Per-subfield reason. Guest supplier rows: emails=本站无. Browse heading rows: phones / emails / street / person = 本站无. |
Legacy primaryPhone, website, and address.address1 / city / state / zip stay on the row so older Dataset views keep working.
Reveal cost
enrichDetails defaults on and enriches the same supplier rows without adding billed rows. By default, supplier modes return one Dataset row per supplier and do not request product lists. Turn on includeProducts to add one row per supplier product; every added product row is billed, and supplier plus product rows share that input's maxResults budget. Supplier rows keep a source-provided productCount when available and never embed a products list. Product rows copy the supplier id, name, profile URL, and location. In catalog mode, catalog items are the searched entities and remain rows whether includeProducts is on or off.
On the page itself there is no click-to-unlock XHR for phones:
- Numbers are already in SSR JSON (
primaryPhone) and, on the profile, intel:hrefs. - The View Phone Number button is Google Analytics only (
Phone_Number_Revealed). It does not open an overlay, does not call/graphqlfor a new number, and does not change the digits. The worker does not click it — there is no extra click cost for phones. - Never Contact Supplier / Claim / Register / Sign In. Those flows are not a lead channel for this Actor.
The hosted worker calls Thomasnet's public GraphQL endpoint directly. You do not pass proxyUrl or bring your own proxy.
Pages follow each input's maxResults budget (catalog 30 per page, enumerate 25 per page); maxPages above 1 caps them. Guest limits: keyword search returns up to 25 suppliers per keyword, heading lists up to 50 (pages 1–2).
Honest limitations
- Guest emails are 本站无. Search cards and company profiles have no mailbox field and no
mailto:. Clicking View Phone Number does not reveal email either. Do not treat video descriptions (e.g. asales@…string inside a factory-tour caption) as a structured email field. - Browse mode has no company phones, emails, or street — category and heading names only.
leadAbsencesrecords 本站无. Do not use a browse run as a contact-quality check. personis optional. Profiles withoutpersonnel[]returnperson.name=nullandleadAbsences.person=本站无.web.socials[]may be empty whilesocial[]has LinkedIn. Readsocial[].accountId(example: Boker'shttp://www.linkedin.com/company/bokers/). Do not assumeweb.socialsis always filled.- JSON-LD is not the phone source. Company
LocalBusinessJSON-LD can have street and notelephone. Home-page JSON-LD is Thomas / Xometry platform HQ, not a supplier. The worker uses__NEXT_DATA__. - No login, no RFQ. Whether Contact Supplier after login adds email or a second phone is 未验证 and will not be auto-clicked.
- You do not bring a proxy. The worker reads the public GraphQL endpoint directly; there is nothing to configure.
- Contact fields are not redacted by default (
redactPhones: false). SetredactPhones: trueonly if you wantprimaryPhonemasked;phones[]stays plaintext for outreach. Empty means the public page did not publish that subfield (seeleadAbsences).
Why scrape Thomasnet?
Thomasnet is a major US industrial B2B directory covering manufacturers, custom fabricators, distributors, and service providers across metals, plastics, machining, electronics, and more. Teams scrape Thomasnet for supplier discovery, procurement shortlists, competitor monitoring, and industrial lead generation:
- Monitor keyword supplier search results for a commodity or process
- Follow heading categories (e.g. CNC Machining, Precision Castings) with stable heading IDs
- Pull company profiles with public phones, street + unit, sales bands, employee counts, and capability tags
- Optionally filter by ZIP + radius or pass-through
filterIds - Feed CRM, BI dashboards, Google Sheets, BigQuery, or AI agents with clean rows
Compared with generic URL scrapers, this Actor returns Thomasnet-specific fields (tgramsId, heading IDs, sales/employee bands, capability tags) across search, heading, company, and browse modes.
More Actors like this
Need another B2B marketplace, industrial directory, or a different vertical? Use a dedicated Actor below for structured fields. Use this Actor for Thomasnet (www.thomasnet.com) US industrial suppliers.
Similar e-commerce & B2B scrapers
- Europages Scraper
- GlobalSources Scraper
- IndiaMART Scraper
- iPROS Scraper
- Kompass Scraper
- 1688 Global Product Search Scraper
- Shopee Search Scraper
- Amazon Search Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Coupang Product Scraper
- Walmart Product Scraper
- Etsy Scraper
- Allegro Scraper
- Lazada Scraper
- Rakuten Japan Scraper
Prefer another specialized scraper?
If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Indeed Jobs Scraper
- Upwork Jobs Scraper
- Glassdoor Scraper
- Fiverr Gigs Scraper
- Bayt Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- Apartments.com Rental Scraper
- Rightmove Scraper
- Idealista Scraper
- realestate.com.au Scraper
Travel & Stays
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to scrape Thomasnet (no code required)
- Create a free Apify account
- Open Thomasnet Scraper
- Choose a mode:
supplier_search,heading,company,browse,enumerate, orcatalogenumeratesweeps the full company directory (26 letter buckets + a symbol bucket — ~23K companies) via the/browseindex; usequerylikeA,Bto restrict to letters andmaxResultsto cap rows.catalogdeep-pages product-catalog results (totalCountis not guest-capped the way company search is); rows carrycatalogId/thomasUrlplus the supplier'stgramsId/website.- Optional
fieldsprojects output and plans worker collection surfaces precisely — e.g.["tgramsId","name","website"]skips detail enrichment entirely;["*"]requests the full catalog (introspect via workerGET /v1/fields).
- Enter a query (e.g.
precision castings) — or headingSlug + headingId, or a companyUrl / tgramsId - Leave
enrichDetailsandincludeStreeton (defaults). LeaveredactPhonesoff unless you wantprimaryPhonemasked. Optionally setzip/radius,maxResults/maxPages - Click Start and download the Dataset as JSON, CSV, Excel, or JSONL
Start with maxResults: 5–15 to verify the query, then scale up.
How much does it cost to scrape Thomasnet?
This Actor uses pay-per-event pricing. You are charged for:
| Event | Price |
|---|---|
Actor Start (apify-actor-start) | $0.005 per start |
Result (apify-default-dataset-item) | $3.00 / 1,000 results ($0.003 each on FREE/BRONZE) |
Platform usage costs are included — you do not pay separate Apify compute/proxy usage for this Actor on top of the event prices above (User pays platform usage costs = No).
Volume discount tiers (per result)
| Tier | $/1,000 | per result |
|---|---|---|
| FREE* | $3.00 | $0.003 |
| BRONZE | $3.00 | $0.003 |
| SILVER | $2.60 | $0.0026 |
| GOLD | $2.20 | $0.0022 |
| PLATINUM | $2.00 | $0.002 |
| DIAMOND | $1.60 | $0.0016 |
*FREE matches BRONZE for this Actor.
Example cost estimates (FREE/BRONZE)
| Results collected | Approx. event cost* |
|---|---|
| 100 | ~$0.31 |
| 1,000 | ~$3.01 |
| 10,000 | ~$30.01 |
*Assumes one Actor start at default memory billing for start events, plus $0.003 per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).
Free plan limits
On a free Apify plan, this Actor enforces developer limits of 10 runs and 200 results for the whole run. Upgrade to a paid Apify plan for unlimited runs (event prices still apply). These limits are set by the Actor developer, not by Apify.
maxResults is the row limit for each input, not one shared limit for the whole run. Each value in searchQueries, startUrls, or detailUrls gets its own budget; a scalar query, company, heading, browse category, or enumerate selection counts as one input. The default is 70. Larger values continue in parts of up to 70 through the existing cursor, while the complete run also stops at your maximum total charge. Supplier and product row types share the applicable input budget.
Input examples
Supplier keyword search
{"mode": "supplier_search","query": "precision castings","maxResults": 20,"maxPages": 1,"enrichDetails": true,"includeStreet": true,"redactPhones": false}
Heading / category list
{"mode": "heading","headingSlug": "cnc-machining","headingId": "45330503","maxResults": 25}
Company profile
{"mode": "company","companyUrl": "https://www.thomasnet.com/company/electro-plastics-30989688/profile"}
ZIP + radius filter (search)
{"mode": "supplier_search","query": "sheet metal fabrication","zip": "44114","radius": "50","maxResults": 15}
Output example
{"recordType": "supplier_enriched","tgramsId": "1160254","name": "Boker's, Inc.","title": "Boker's, Inc.","url": "https://www.thomasnet.com/company/boker-s-inc-1160254/profile","website": "https://www.bokers.com/","annualSales": "$25 - 49.9 Mil","numberEmployees": "100-199","yearFounded": "1919","primaryPhone": "(612) 729-9365","phones": [{ "value": "(612) 729-9365", "type": "landline", "e164": "+16127299365" }],"emails": [],"address": {"street": "3104 Snelling Ave","unit": null,"locality": "Minneapolis","region": "MN","postalCode": "55406","country": "USA","full": "3104 Snelling Ave, Minneapolis, MN, 55406, USA"},"geo": { "lat": 44.94125611, "lng": -93.2233606 },"person": { "name": "Pete Flodquist", "role": "Sales Manager" },"org": { "name": "Boker's, Inc.", "id": "1160254" },"web": { "website": "https://www.bokers.com/", "socials": [] },"social": [{ "type": "LINKEDIN", "accountId": "http://www.linkedin.com/company/bokers/" }],"leadSource": "detail","leadReveal": "visible","leadAbsences": { "emails": "本站无" },"source": "thomasnet.com"}
web.socials is empty here on purpose — the LinkedIn URL lives on raw social[].accountId. Guest emails stay [] with leadAbsences.emails=本站无. Common fields also include capabilities, headings, and tier / advertiser flags when present on the page.
Coverage matrix
| Dimension | Coverage |
|---|---|
| Market | usa (www.thomasnet.com) |
| Modes | supplier_search · heading · company · browse · enumerate · catalog |
| List | /suppliers/search · /suppliers/usa/{slug}-{headingId} |
| Detail | /company/{slug}-{tgramsId}/profile |
| Pagination | Follows maxResults; search 25 per keyword, heading 50, catalog and enumerate page through |
| Enrich | enrichDetails default true → company profile person / raw social[] on list rows |
| Geo | optional zip + radius |
| Filters | optional filterIds[] passthrough |
| Lead | phones + street on search/heading/company; emails 本站无; browse = category and heading names only |
FAQ
Is this affiliated with Thomasnet?
No. This is an unofficial third-party Actor. It is not affiliated with, endorsed by, or sponsored by Thomas Publishing / Thomasnet.
Do you collect emails or click Contact Supplier?
Emails: guest search and guest company profiles are 本站无 (emails=[], leadAbsences.emails=本站无). There is no mailbox field and no mailto:. The Actor does not invent emails.
Clicks: it does not auto-click Contact Supplier, Claim, Register, Sign In, or View Phone Number.
Phones: redactPhones defaults false. You get plaintext primaryPhone and phones[]. View Phone Number is analytics-only — the digits are already in SSR, so there is no extra click cost for phones.
Why is pagination limited?
Set maxResults and the Actor pages for each input: catalog and enumerate read as many pages as needed, keyword search is capped at 25 suppliers per keyword and heading lists at 50 for guests. Use several searchQueries to give each keyword its own row budget.
Do I need to bring a proxy?
No. The worker uses Thomasnet's public GraphQL endpoint, which needs no proxy. Do not pass proxy credentials in Actor input.
Can I use this from the API / Standby?
Yes. Use normal Actor runs for production Dataset output. Standby exposes lightweight /health, /input-example, /openapi.json, and optional preview routes — see the Standby OpenAPI schema packaged with the Actor.
What are the free plan limits?
You get up to 10 runs of this Actor and 200 results across each run (limits set by the Actor developer). Paying Apify users are not capped by those run quotas; PPE event prices and your maximum total charge still apply.
Tips for better runs
- Prefer specific industrial keywords (
precision castings,cnc machining) over single vague words - Keep
maxResultsmodest first; keyword search returns up to 25 suppliers per keyword - Leave
enrichDetailson (default) when you want profileperson/social[]on list rows; turn it off only for thin cards - Leave
includeStreeton (default) soaddress.street/unitstay on the row - Leave
redactPhonesoff (default) for outreach numbers - For headings, pass both
headingSlugandheadingIdwhen you have them - Do not use
mode=browseas a phone/street quality check — it returns category and heading names only - Do not reuse README sample inputs for acceptance tests — use fresh random-valid queries
Integrations
- Apify API / client — start runs and pull Dataset items programmatically
- Schedules — re-run keyword monitors daily/weekly
- Webhooks — notify your stack when a run finishes
- Make / Zapier / n8n — push rows to Sheets, CRM, Slack, or warehouses
Standby (Live view)
When Standby is enabled:
GET //GET /health— Actor readiness (no scrape)GET /input-example— safe low-cost example inputGET /openapi.json— OpenAPI documentPOST /search— optional Live-view preview (cappedmaxResults); persist production results with a normal Actor run
Full jobs should be launched as normal Apify Actor runs so Dataset rows plus INPUT_ECHO, RUN_SUMMARY, and ERROR_SUMMARY are persisted.
Runtime
| Setting | Value |
|---|---|
| Default memory | 1024 MB |
| Timeout default | 3600 s |
| Standby | Enabled (lightweight Live-view) |
| Free plan caps | 10 runs / 200 results across each run |
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss