Search Industries (NAICS / SIC)
RESOLVER: find industry codes (HG industry_id, NAICS, SIC) by keyword so you can feed them into search_companies (industry_ids, naics_codes, sic_codes). Searches and translates across HG industry (23 buckets), NAICS 2012 (~2,200 codes), and SIC 1987 (~1,500 codes) in one call. Use this when you have an industry NAME or colloquial sector term ("fintech", "software publishers") and need its numeric code(s) before an industry-scoped company search — resolve the code here first. Do NOT use this to actually find companies — that is search_companies (pass the industry_ids/naics_codes/sic_codes you resolved here). Do NOT use this to find what industry a specific company belongs to — call company_firmographic (pass companyDomain or hg_id). This tool searches taxonomy definitions, not company records, and returns no revenue, headcount, or company counts. When chaining codes downstream: pass industry_id integers to industry_ids; pass sic.sic_standard_code (e.g. "7372"), NOT sic.sic_code (the "I7372" HG-extended form has an internal letter prefix and will not match); and prefer leaf NAICS (is_leaf=true), since rollups will not match a single company's classification. The response includes alias_expansions (colloquial terms rewritten server-side) and, when results is empty on a near-miss, a suggestions array of the closest taxonomy names — check it before retrying; if it is absent too, rephrase to a broader category. Free — no credits consumed.
Credits
Free — No credits consumed. See the full credit table for how AI Credits work.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
q | string | - | Optional. Text input → case-insensitive substring match against industry/NAICS/SIC name columns. A known code works as a translation lookup ("541511", "7372") returning the full crosswalk. All-digit input → prefix match against code columns only (e.g. q=52 returns NAICS sector 52 and its descendants, not codes that merely contain "52" like 1152). Multi-term: comma-separated (software,publishing,saas) runs the union (OR). Colloquial terms (fintech, saas, ecommerce, healthcare, cybersecurity, cleantech, ev, biotech, gaming, streaming, logistics, adtech, proptech, insurtech, edtech, airline, hospitality, renewable, semiconductor, …) are expanded server-side into the substrings actually present in NAICS/SIC names; the response's alias_expansions shows what ran. Minimum 2 characters. |
taxonomy | string | - | Optional. Restricts matching to one taxonomy AND groups results by its primary key — one row per distinct entity with crosswalk counts (naics_count, sic_count) on the matched block; other blocks become {}. Pick the taxonomy your downstream filter needs: industry → search_companies.industry_ids, naics → naics_codes, sic → sic_codes. Prefer this grouped mode for most use-cases. Omit it only when you need the raw NAICS↔SIC crosswalk table (unscoped mode repeats the same NAICS once per SIC partner). Each naics block exposes hierarchy_level (sector|subsector|industry_group|naics_industry|national_industry), is_leaf, and display_name_with_level (disambiguates same-named adjacent levels, e.g. "Commercial Banking (subsector 5221)" vs "(national_industry 522110)"). |
naics_leaf_only | boolean | false | Only meaningful when taxonomy=naics. When true, drops 2/3/4/5-digit NAICS rollup codes and returns only the 6-digit leaf codes (1,590 of 2,209) — the safe codes to chain into search_companies.naics_codes, since rollups will not match a single company's classification. Silently ignored for other taxonomies. |
limit | integer | 50 | Page size, 1–500. Default 50. |
offset | integer | 0 | Page offset, ≥ 0. Default 0. If you page past the end, pagination.offset_exceeds_total is true (disambiguates empty results with has_more=false). |
Required Integrations
This tool is only available when your organization has the following integration configured in the Phoenix Integrations settings:
- HG Insights (v2) (
hginsights_v2)
Use Cases
- Resolve an industry name to codes before an industry-scoped company search — pass the returned industry_id / naics_code / sic_standard_code to search_companies
- Translate a known code to its full crosswalk — pass a NAICS or SIC code as
qto see the matching HG industry, NAICS, and SIC - Expand a colloquial sector term (fintech, saas, cybersecurity) into real taxonomy matches — check
alias_expansionsto see what ran - List one de-duplicated row per code in a taxonomy — pass
taxonomy=naics(withnaics_leaf_only=truefor chainable 6-digit leaves) ortaxonomy=sic - Self-heal a typo or near-miss — when
resultsis empty, readsuggestionsfor the closest taxonomy names before retrying
Example Usage
Resolve "software publishers" to leaf NAICS codes for search_companies
{
"tool": "search_industries_naics_sic",
"arguments": {
"q": "software publishers",
"taxonomy": "naics",
"naics_leaf_only": true
}
}
Expand the colloquial term "fintech" into HG industry matches
{
"tool": "search_industries_naics_sic",
"arguments": {
"q": "fintech"
}
}
Translate NAICS code 541511 into its full crosswalk
{
"tool": "search_industries_naics_sic",
"arguments": {
"q": "541511"
}
}
Response Format
| Field | Type | Description |
|---|---|---|
results | array | Crosswalk rows. In unscoped mode, one row per match across taxonomies. In grouped mode, one row per distinct entity in the requested taxonomy. |
results[].matched_on | string | Which taxonomy produced the match. Present when q is set. |
results[].industry | object | HG industry block. {} when not the matched/populated taxonomy. |
results[].industry.industry_id | number | |
results[].industry.industry_name | string | |
results[].industry.naics_count | number | Crosswalk count — populated only in grouped mode (taxonomy=industry). |
results[].industry.sic_count | number | Crosswalk count — populated only in grouped mode (taxonomy=industry). |
results[].naics | object | NAICS 2012 block. {} when not the matched/populated taxonomy. |
results[].naics.naics_code | string | |
results[].naics.naics_name | string | |
results[].naics.naics_top_parent_code | string | |
results[].naics.naics_top_parent_name | string | |
results[].naics.hierarchy_level | string | NAICS level derived from code length (2/3/4/5/6 digits). |
results[].naics.is_leaf | boolean | True iff hierarchy_level == "national_industry". Only leaves are safe to chain into downstream code-based filters. |
results[].naics.display_name_with_level | string | Disambiguating label, e.g. "Commercial Banking (subsector 5221)". |
results[].naics.sic_count | number | Crosswalk count — populated only in grouped mode (taxonomy=naics). |
results[].sic | object | SIC 1987 block. {} when not the matched/populated taxonomy. |
results[].sic.sic_code | string | HG-extended SIC code (carries an internal letter prefix, e.g. "I7372"). Do NOT pass to downstream APIs — use sic_standard_code instead. |
results[].sic.sic_standard_code | string | Standard SIC-1987 code (e.g. "7372"). This is the value to pass to downstream APIs. Empty for sector-level rows. |
results[].sic.sic_name | string | |
results[].sic.is_hg_extension | boolean | True when sic_code carries an HG-internal letter prefix (currently true for every SIC row). |
results[].sic.naics_count | number | Crosswalk count — populated only in grouped mode (taxonomy=sic). |
pagination | object | |
pagination.total | number | Total rows matching the filter (not just this page). |
pagination.limit | number | |
pagination.offset | number | |
pagination.has_more | boolean | |
pagination.total_pages | number | ceil(total / limit). |
pagination.offset_exceeds_total | boolean | True when offset >= total and total > 0 — diagnostic for paging-past-end bugs. |
alias_expansions | array | Present only when one or more q terms were rewritten server-side. Each entry shows the colloquial term and the substrings it expanded to. |
alias_expansions[].term | string | |
alias_expansions[].expanded_to | array | |
suggestions | array | Present only when results is empty AND q contained a text term. Up to 5 closest taxonomy names by trigram distance — use to self-heal typos / near-misses before retrying. |