ThomasNet APIthomasnet.com ↗
Search ThomasNet's industrial supplier directory via API. Get company profiles, revenue ranges, certifications, and bulk lead lists for manufacturers and distributors.
What is the ThomasNet API?
The ThomasNet API gives programmatic access to the ThomasNet industrial supplier directory across 3 endpoints. Use search_suppliers to query by keyword and location and get back paginated supplier summaries — including annual sales, employee count, year founded, and phone — or use get_supplier_profile to pull full company detail by profile URL, or get_bulk_leads to collect flat lead lists across multiple pages in a single call.
curl -X GET 'https://api.parse.bot/scraper/3eee7814-a3b8-4263-ab86-caf00068b4f4/search_suppliers?page=1&query=metal+fabrication&location=Illinois' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace thomasnet-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
ThomasNet API - Industrial Supplier Directory
Search for suppliers and retrieve detailed company profiles.
"""
from parse_apis.thomasnet_api import ThomasNet, SupplierSummary, Supplier, Lead, Address
client = ThomasNet()
# Search for supplier summaries by keyword and location
for summary in client.suppliersummaries.search(query="metal fabrication", location="Illinois", limit=5):
print(summary.name, summary.location, summary.annual_sales, summary.phone)
# Navigate from summary to full supplier detail
detail = summary.details()
print(detail.name, detail.website, detail.year_founded, detail.business_type)
if detail.address:
print(detail.address.city, detail.address.state, detail.address.zip)
# Extract bulk leads for prospecting
for lead in client.leads.bulk_extract(query="plastic injection molding", max_pages=2, limit=10):
print(lead.name, lead.phone, lead.location, lead.annual_sales)
Search for industrial suppliers by keyword and optional location. Returns paginated results from the ThomasNet directory with company summary info including contact details and revenue. Each result includes a profile_url for fetching full details via get_supplier_profile. Paginates via integer page number. Server-side filtering is limited to keyword and location.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword or category (e.g. 'metal fabrication', 'plastic injection molding'). |
| location | string | Location filter such as city, state, or ZIP code. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"count": "integer, total number of matching suppliers",
"query": "string, the search query used",
"results": "array of SupplierSummary objects with tgrams_id, name, phone, location, annual_sales, employee_count, year_founded, website, profile_url",
"location": "string, location filter applied"
},
"sample": {
"data": {
"page": 1,
"count": 23398,
"query": "metal fabrication",
"results": [
{
"name": "Chicago Metal Fabricators",
"phone": "+1 (555) 012-3456",
"website": "https://chicagometal.com/",
"location": "Chicago, IL",
"tgrams_id": "436170",
"profile_url": "https://www.thomasnet.com/profile/436170/company.html",
"annual_sales": "$25 - 49.9 Mil",
"year_founded": "1908",
"employee_count": "50-99"
}
],
"location": "Illinois"
},
"status": "success"
}
}About the ThomasNet API
Search and Profile Endpoints
The search_suppliers endpoint accepts a required query string (e.g. 'metal fabrication' or 'plastic injection molding') and an optional location filter — city, state, or ZIP code. Results are paginated via the page parameter. Each item in the results array contains a tgrams_id, name, phone, location, annual_sales, employee_count, year_founded, website, and a prof field linking to the full profile. The response also surfaces count — the total number of matching suppliers for that query.
Detailed Company Profiles
The get_supplier_profile endpoint accepts a full ThomasNet profile URL or path and returns a richer record: address (broken into address1, city, state, zip, country), description, logo_url, annual_sales, year_founded, business_type, and the tgrams_id that ties back to search results. This is the endpoint to use when you need structured address data or the company description field rather than just summary info.
Bulk Lead Extraction
The get_bulk_leads endpoint wraps the search functionality to iterate automatically across pages. Pass a query string and optionally cap the run with max_pages. The response is a flat leads array — each entry has tgrams_id, name, phone, location, annual_sales, and website — along with a total count. This makes it practical to build targeted supplier lists without manually stepping through pagination.
The ThomasNet API is a managed, monitored endpoint for thomasnet.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when thomasnet.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official thomasnet.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a supplier shortlist for a specific manufacturing category using
search_supplierswith keyword and state filters - Enrich a CRM with structured address, phone, and annual sales data pulled from
get_supplier_profile - Generate bulk outreach lists of manufacturers by running
get_bulk_leadsacross multiple query categories - Track year-founded and employee-count trends across a set of suppliers in a given industry vertical
- Cross-reference
tgrams_idvalues from search results with profile records to deduplicate supplier databases - Filter potential vendors by business type using the
business_typefield returned in full profiles - Identify sourcing alternatives by running keyword queries for specific fabrication processes and comparing
annual_salesranges
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ThomasNet have an official developer API?+
What does `get_supplier_profile` return beyond what `search_suppliers` includes?+
address object (address1, city, state, zip, country), a description field, logo_url, and business_type. The search endpoint returns summary fields only — no description, no broken-out address components.Does the API return supplier certifications such as ISO or AS9100?+
How does pagination work across the endpoints?+
search_suppliers endpoint takes an integer page parameter and returns a count of total matches, so you can calculate total pages client-side. The get_bulk_leads endpoint handles pagination internally up to the max_pages limit you supply, returning a single flat leads array.