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
3
Total users
0
Monthly active users
2 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 / 门牌. 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 for heading discovery (category names only — no company phones)
- 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[]) - 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 handles Cloudflare / DataDome 403 unlock.
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
- Fetches public Thomasnet listing and profile pages through a managed scrape backend (Unlocker — bare HTTP is Cloudflare 403)
- Normalizes supplier / company rows into a clean Dataset, including Lead / Contact fields
- Writes
INPUT_ECHO,RUN_SUMMARY(andERROR_SUMMARYon failure) to the key-value store
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 + 门牌 from address.address1 / address2. unit = 门牌 (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. That is the extra cost on list modes: one company-profile fetch per row (up to min(maxResults, 20)), which is how person and raw social[] land on search/heading rows. You do not pay a second PPE event for the enrich itself — you are still charged once per Dataset item.
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.
Bare HTTP to Thomasnet is Cloudflare 403 (DataDome shell, no __NEXT_DATA__). The hosted worker uses an Unlocker. You do not pass proxyUrl or bring your own proxy.
?page= on search/heading does not paginate SSR — the first ~25 companies stay the same. Extra pages need UI pagination (maxPages > 1). Keep smoke / first runs at maxPages: 1.
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 — heading titles 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. Cloudflare / DataDome 403 is handled in the worker. Do not paste Unlocker keys into Actor input.
- 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 / 门牌, 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, orbrowse - 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 per 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.
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 |
| List | /suppliers/search · /suppliers/usa/{slug}-{headingId} |
| Detail | /company/{slug}-{tgramsId}/profile |
| Pagination | First page SSR (~25); extra pages via UI click (maxPages) — do not rely on ?page= |
| 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 = headings 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?
Thomasnet’s SSR ?page= query does not change the first-page company list. Extra pages require UI pagination (maxPages). GraphQL pagination is not exposed as a public Actor input.
Do I need to bring a proxy?
No. Bare HTTP to Thomasnet returns Cloudflare / DataDome 403. The hosted worker Unlocker is already configured. 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 per run (limits set by the Actor developer). Paying Apify users are not capped by those run quotas; PPE event prices still apply.
Tips for better runs
- Prefer specific industrial keywords (
precision castings,cnc machining) over single vague words - Keep
maxResultsmodest first; list pages return ~25 suppliers per SSR page - Leave
enrichDetailson (default) when you want profileperson/social[]on list rows; turn it off only for thin cards - Leave
includeStreeton (default) soaddress.street/unit(门牌) stay 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 is headings 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 per 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