Thomasnet Scraper | US Industrial Suppliers avatar

Thomasnet Scraper | US Industrial Suppliers

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Thomasnet Scraper | US Industrial Suppliers

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

0

Monthly active users

2 days ago

Last modified

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 (plaintext primaryPhone + phones[])
  • Optional zip + radius and filterIds
  • 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:

  1. Validates your input (mode, query, heading, company identifiers)
  2. Enforces free-tier caps when you are on a free Apify plan
  3. Fetches public Thomasnet listing and profile pages through a managed scrape backend (Unlocker — bare HTTP is Cloudflare 403)
  4. Normalizes supplier / company rows into a clean Dataset, including Lead / Contact fields
  5. Writes INPUT_ECHO, RUN_SUMMARY (and ERROR_SUMMARY on 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?

DataSupplier searchHeading listCompany profileBrowse
tgramsId / profile URL
company nameheading titles
website
city / state / zip
annualSales / employees / yearFounded
capabilities / headingsheading links
tier / advertiser / claimed flags
primaryPhone + phones[] (plaintext)
address.street / unit (门牌)
person (name + role)list: 本站无; enrich onlist: 本站无; enrich onoptional
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.

FieldTypeMeaning 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.
leadSourceenumsearch (browse headings) | detail (supplier / enriched profile).
leadRevealenumvisible 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.
leadAbsencesobjectPer-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, in tel: hrefs.
  • The View Phone Number button is Google Analytics only (Phone_Number_Revealed). It does not open an overlay, does not call /graphql for 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. a sales@… string inside a factory-tour caption) as a structured email field.
  • Browse mode has no company phones, emails, or street — heading titles only. leadAbsences records 本站无. Do not use a browse run as a contact-quality check.
  • person is optional. Profiles without personnel[] return person.name=null and leadAbsences.person=本站无.
  • web.socials[] may be empty while social[] has LinkedIn. Read social[].accountId (example: Boker's http://www.linkedin.com/company/bokers/). Do not assume web.socials is always filled.
  • JSON-LD is not the phone source. Company LocalBusiness JSON-LD can have street and no telephone. 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). Set redactPhones: true only if you want primaryPhone masked; phones[] stays plaintext for outreach. Empty means the public page did not publish that subfield (see leadAbsences).

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

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

Real Estate

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)

  1. Create a free Apify account
  2. Open Thomasnet Scraper
  3. Choose a mode: supplier_search, heading, company, or browse
  4. Enter a query (e.g. precision castings) — or headingSlug + headingId, or a companyUrl / tgramsId
  5. Leave enrichDetails and includeStreet on (defaults). Leave redactPhones off unless you want primaryPhone masked. Optionally set zip / radius, maxResults / maxPages
  6. 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:

EventPrice
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,000per 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 collectedApprox. 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

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

DimensionCoverage
Marketusa (www.thomasnet.com)
Modessupplier_search · heading · company · browse
List/suppliers/search · /suppliers/usa/{slug}-{headingId}
Detail/company/{slug}-{tgramsId}/profile
PaginationFirst page SSR (~25); extra pages via UI click (maxPages) — do not rely on ?page=
EnrichenrichDetails default true → company profile person / raw social[] on list rows
Geooptional zip + radius
Filtersoptional filterIds[] passthrough
Leadphones + 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 maxResults modest first; list pages return ~25 suppliers per SSR page
  • Leave enrichDetails on (default) when you want profile person / social[] on list rows; turn it off only for thin cards
  • Leave includeStreet on (default) so address.street / unit (门牌) stay on the row
  • Leave redactPhones off (default) for outreach numbers
  • For headings, pass both headingSlug and headingId when you have them
  • Do not use mode=browse as 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 input
  • GET /openapi.json — OpenAPI document
  • POST /search — optional Live-view preview (capped maxResults); 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

SettingValue
Default memory1024 MB
Timeout default3600 s
StandbyEnabled (lightweight Live-view)
Free plan caps10 runs / 200 results per run

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss