{
  "openapi": "3.0.1",
  "info": {
    "title": "Thomasnet Supplier Scraper: US and Canada Industrial Suppliers",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "u4pTZnh18551BloaA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/themineworks~thomasnet-supplier-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-themineworks-thomasnet-supplier-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/themineworks~thomasnet-supplier-scraper/runs": {
      "post": {
        "operationId": "runs-sync-themineworks-thomasnet-supplier-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/themineworks~thomasnet-supplier-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-themineworks-thomasnet-supplier-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQueries": {
            "title": "Keywords",
            "type": "array",
            "description": "Products or services, one per line, as you would type them in the Thomasnet search box. Example: cnc machining, ball valves, injection molding. Each keyword reads Thomasnet's ranked results and the supplier lists of its best matching categories. A Thomasnet search link works here too. Up to 100 searches per run.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories (optional)",
            "type": "array",
            "description": "Thomasnet product or service categories, by name (Hydraulic Cylinders), ID (21650809) or link (https://www.thomasnet.com/suppliers/usa/hydraulic-cylinders-21650809). Every supplier in the category list is read, 100 per call. A link with a state in it (https://www.thomasnet.com/suppliers/northern-ohio/cnc-machining-45330503) reads that area only.",
            "items": {
              "type": "string"
            }
          },
          "profileUrls": {
            "title": "Supplier profile links or IDs (optional)",
            "type": "array",
            "description": "Thomasnet supplier profile links, for example https://www.thomasnet.com/company/magnatrol-valve-corp-567647/profile, or the supplier ID alone (567647). Each one returns that supplier's row, 10 per call. Built for one record at a time from Clay, n8n or an AI agent.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "States or regions (optional)",
            "type": "array",
            "description": "Narrow keywords and categories to US states and Canadian provinces, by name or code: Texas, TX, Ohio, Ontario, ON. Thomasnet splits seven states in two (California, Massachusetts, New Jersey, New York, Ohio, Pennsylvania, Texas); the state name reads both halves, a half reads one (Texas - North, northern-ohio). Empty: all of the USA and Canada.",
            "items": {
              "type": "string"
            }
          },
          "locatedInRegionsOnly": {
            "title": "Only suppliers located in those regions",
            "type": "boolean",
            "description": "On: keep only suppliers whose own address is in the states you chose. Off: also keep suppliers from elsewhere that Thomasnet lists as serving those regions. Has no effect without regions.",
            "default": true
          },
          "companyTypes": {
            "title": "Company types (optional)",
            "type": "array",
            "description": "Keep only these company types. A supplier matches when its main type or one of its other activities is in the list. Empty: every type.",
            "items": {
              "type": "string",
              "enum": [
                "Manufacturer",
                "Custom Manufacturer",
                "Distributor",
                "Service Company",
                "Manufacturers' Rep",
                "Finishing Service Company",
                "Turnkey Systems Integrator",
                "Remanufacturer"
              ]
            }
          },
          "certifications": {
            "title": "Certifications (optional)",
            "type": "array",
            "description": "Keep only suppliers that hold at least one of these certifications, matched on the certification name: ISO 9001, AS9100, ISO 13485, IATF 16949, ITAR, Woman Owned, Veteran Owned. Empty: no certification filter.",
            "items": {
              "type": "string"
            }
          },
          "zipCode": {
            "title": "Near this ZIP or postal code (optional)",
            "type": "string",
            "description": "A US ZIP code (44101) or Canadian postal code (M5V 2T6). Searches then return suppliers within the radius below, with distance_miles on each row. Used instead of regions."
          },
          "radiusMiles": {
            "title": "Radius in miles",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How far from the ZIP code to search, 1 to 500 miles. Only used with a ZIP code.",
            "default": 50
          },
          "maxItems": {
            "title": "Max suppliers per keyword or category",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most suppliers to return for each keyword or category, 1 to 10,000. Profile links are not limited by this. Example: 500.",
            "default": 100
          },
          "maxCategoriesPerKeyword": {
            "title": "Categories read per keyword",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "How many of the best matching Thomasnet categories each keyword reads in full, 0 to 10. For cnc machining, 3 reads CNC Machining, Aircraft and Aerospace CNC Machining and Medical CNC Machining. 0 reads only the ranked keyword results.",
            "default": 3
          },
          "includeTextSearch": {
            "title": "Include Thomasnet's ranked keyword results",
            "type": "boolean",
            "description": "On: each keyword first returns Thomasnet's own ranked search results (the first 25 per region, the most Thomasnet shows without a login), then the category lists. These results also hold smaller suppliers with free listings. Off: category lists only.",
            "default": true
          },
          "deepSearch": {
            "title": "Deep search past the first 25 results",
            "type": "boolean",
            "description": "On: when a keyword's category lists run out before Max suppliers, the keyword is searched again in every region and then around the ZIP code of each supplier found (25 miles), to reach smaller local suppliers, free listings included. It stops at Max suppliers or when new searches stop finding new suppliers. With a ZIP code it searches around suppliers inside the radius only. Every supplier is delivered and charged once.",
            "default": true
          },
          "readFullCategoryLists": {
            "title": "Read category lists past the first page",
            "type": "boolean",
            "description": "On: every supplier in each category list is read, 100 per call, through the data API that Thomasnet's own pages use. On the website itself, pages after the first ask visitors to sign in. Off: only the first 25 of each category and region, as a visitor sees without signing in.",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}