naics b2b-sales data-enrichment

NAICS Codes for B2B Sales: 4 Use Cases, Pitfalls and AI Workflow

How NAICS codes work for RevOps: reading the hierarchy, where SIC causes problems, 4 real use cases, why your CRM codes are often wrong, and how to get clean NAICS data without manual lookups.

Amir Nurmagomedov
Amir Nurmagomedov

Co-Founder & CEO of CompanyEnrich

· 17 min read

Summarize this blog post with

What is a NAICS code?

A NAICS code is a 6-digit number that classifies a business by what it actually does. NAICS stands for North American Industry Classification System. It's maintained by the U.S. Census Bureau in coordination with Canada and Mexico, and it's the official industry taxonomy the U.S. government uses to segment the economy for statistics, regulation, and reporting.

For RevOps and sales teams, none of that matters on its own. What matters is that NAICS is also the dominant way B2B data is sliced up in CRMs, enrichment tools, and ICP models. When you filter a list for "SaaS companies with 50 to 200 employees in the US," the "SaaS companies" part is almost always a NAICS code under the hood (usually 541511 or 518210). Every major B2B data provider tags their records with NAICS. Your CRM probably has a NAICS field whether you use it or not.

This post covers how NAICS codes actually work for RevOps use cases: how to read the hierarchy, where SIC still causes problems in your data, what RevOps teams do with NAICS day to day, why the codes in your CRM are often wrong, and how to get clean NAICS data on your accounts without burning hours on manual lookups.

If you've ever built an ICP filter that returned 10,000 "software companies" including a dental practice and a law firm, this is for you.

How the 6-digit hierarchy works

NAICS codes are hierarchical, getting more specific as you add digits. Think of it like a file system. Each extra digit narrows the scope.

The structure goes five levels deep:

  • 2 digits: Sector. The broadest economic segment. "Information" is 51. "Manufacturing" is 31-33.
  • 3 digits: Subsector. First layer of specificity. 518 is "Computing Infrastructure Providers."
  • 4 digits: Industry group. 5182 is "Data Processing, Hosting, and Related Services."
  • 5 digits: NAICS industry. 51821 is "Computing Infrastructure Providers."
  • 6 digits: National industry, the most granular level. 518210 is specifically "Computing Infrastructure Providers, Data Processing, Web Hosting, and Related Services."

A concrete example. Say you're targeting software companies. The NAICS hierarchy looks like this:

  • 51 (Information)
  • 518 (Computing Infrastructure)
  • 5182 (Data Processing, Hosting)
  • 51821 (Computing Infrastructure Providers)
  • 518210 (Computing Infrastructure Providers, Data Processing, Web Hosting, and Related Services)

But that's one of several "software" codes. There's also:

  • 541511 (Custom Computer Programming Services)
  • 541512 (Computer Systems Design Services)
  • 513210 (Software Publishers)

Each of these catches a different type of software business. A custom dev agency, a systems integrator, and a SaaS company all fall under different 6-digit codes even though they'd all describe themselves as "software."

This is the first practical lesson of working with NAICS: "software" is not a code. You have to know which codes match the businesses you actually want to reach.

The granularity matters for targeting. Filtering on a 2-digit code like "51 (Information)" gets you everything from telcos to publishers to streaming services. Filtering on a 6-digit code like "513210 (Software Publishers)" gets you a tight list of actual SaaS companies. The more digits, the tighter the filter.

NAICS vs SIC, and why SIC still shows up in your data

NAICS replaced SIC (Standard Industrial Classification) as the official U.S. industry taxonomy in 1997. That was 29 years ago. You'd think SIC would be gone by now. It's not.

SIC codes still show up in CRM records, enrichment payloads, insurance underwriting systems, banking compliance data, and government contractor databases. Any data source that was built before 1997 and any system that inherited data from one is probably still carrying SIC tags.

If you've pulled a list from an older data provider, acquired a company and inherited their CRM, or worked in a regulated industry, you've run into this.

The practical problem is that SIC and NAICS don't map cleanly onto each other. SIC has 4 digits and 435 industries. NAICS has 6 digits and 1,057 industries. That's not a one-to-one conversion.

A single SIC code often splits into multiple NAICS codes, and some NAICS codes combine pieces of several SIC codes. When your CRM has a mix of both, segmentation logic gets messy fast.

The other problem is staleness. SIC was last meaningfully updated in 1987. That means anything that didn't exist commercially in 1987 doesn't have a real SIC code.

SaaS, cloud infrastructure, streaming platforms, mobile app development, AI companies: all of these get dumped into generic buckets like SIC 7372 ("Prepackaged Software"), which is the same code used to classify 1980s floppy-disk software publishers. If your enrichment data came back with SIC codes and you're targeting modern tech, your segmentation is working with a taxonomy that predates the commercial internet.

What the 2022 NAICS update changed

NAICS gets revised every five years by the US Census Bureau. The 2022 revision was the most significant one for tech-focused RevOps teams in a decade, because it finally caught the taxonomy up to the digital economy.

The biggest changes were in how NAICS handles software and cloud businesses:

  • 518210 became the code for infrastructure providers: data processing, cloud storage, web hosting, IaaS, and PaaS. AWS, GCP, and most hosting companies sit here.
  • 541511 covers custom software development done for specific clients without hosting: dev agencies and custom programming shops.
  • 513210 covers software publishers: most B2B SaaS companies selling productized software.
  • 516210 is new, covering media streaming, social networks, and content platforms that aren't traditional publishers. Netflix, Spotify, TikTok.

If you're still using pre-2022 NAICS codes in your targeting logic, you'll miss or miscategorize a meaningful chunk of modern tech companies. Data providers vary on how quickly they refreshed to the 2022 codes, so this is worth checking with whoever supplies your enrichment data.

The other change worth knowing: NAICS dropped "Internet" as a meaningful industry distinction in retail and information sectors. The idea that "online retail" is a separate category from "retail" stopped making sense years ago, and the taxonomy finally reflects that. If your ICP logic still has an "online business" filter driven by old NAICS codes, it's capturing either nothing or a weird subset of what you actually want.

What RevOps teams actually use NAICS for

NAICS is useful for RevOps in four specific ways. Each one has a different workflow and a different failure mode when the codes are wrong.

1. Building and filtering your ICP

Your Ideal Customer Profile is the foundation of everything downstream. NAICS is how you express the industry dimension of that ICP in a way your tools can actually use.

A typical RevOps ICP filter looks something like: NAICS starts with 513 (software publishers) OR 541511 (custom programming) OR 518210 (cloud infrastructure), headcount between 50 and 500, HQ in North America. That single filter, run against an enrichment database, gives you your total addressable market. Tighten the codes and you narrow it. Broaden them and you risk flooding your pipeline with poorly-fit accounts.

The precision of the filter depends entirely on the precision of the codes. "Software companies" as a loose concept might span five to ten different 6-digit codes depending on what kind of software. If you filter on just one, you miss the others. If you filter on the 2-digit sector (51, Information), you catch telcos, publishers, data services, and a dozen other industries that aren't actually software. This is why experienced RevOps operators build ICP filters at the 6-digit level, not the 2-digit level.

2. Prospecting and finding new accounts

Outbound prospecting starts with building a list of companies that match your ICP, and NAICS is the primary filter that gets you there. You're not reacting to inbound signals, you're actively searching a data provider's database for accounts that fit your target profile.

The workflow is straightforward: query the provider's company search with NAICS codes as the industry filter, combine with other firmographic filters (headcount, location, tech stack, funding stage), export the matching accounts to your CRM or outbound tool. A list of "SaaS companies with 50-500 employees in North America that raised a Series A in the last 18 months" is really a NAICS filter (513210 software publishers) stacked with headcount, geography, and funding filters.

The quality of the output depends entirely on two things: the provider's coverage of your target NAICS codes and the accuracy of those codes on individual records. If the provider doesn't have deep coverage of 518210 (cloud infrastructure), you won't find the cloud companies you want. If half the 513210 records are actually custom dev shops that got misclassified, your list is polluted from day one and your SDRs end up disqualifying records that should never have made it through the filter.

3. Lead scoring

Lead scoring models assign weights to different attributes. Industry is usually a meaningful input because some industries convert dramatically better for a given product than others.

If your analytics show that SaaS companies (NAICS 513210) close at 30% and retail companies (44-45) close at 4%, your scoring model should reflect that. A NAICS 513210 lead gets a big industry-based score boost, a NAICS 44-45 lead gets a penalty or no boost. The math gets more interesting when you combine NAICS with other signals (technographics, growth signals, funding stage), but NAICS is usually the primary industry input because it's the most standardized.

The common mistake here is scoring at too broad a level. Weighting all "Information sector" (51) leads equally treats a 10-person podcast studio the same as a 500-person SaaS company. The 6-digit level is where scoring actually starts to mean something.

The dirty secret: NAICS codes are often wrong

Here's what most RevOps teams don't realize until they audit their data: a meaningful chunk of the NAICS codes in their CRM are wrong, outdated, or missing entirely. Not by a small margin. By enough that it's quietly breaking the ICP filters, prospecting lists, and scoring models built on top of them.

This isn't a data provider problem. It's a structural problem with how NAICS codes get assigned in the first place.

University research libraries that teach students to use business databases openly warn about this. The University of Maryland's research guide on NAICS codes tells students directly: "You may therefore see different NAICS codes for the same company in different databases." When library guides flag it to students, it's not a niche concern.

Why NAICS codes end up wrong

NAICS codes are self-reported. When a company registers for an EIN, files with the IRS, applies for a business license, or registers with a government contracting portal, they pick their own NAICS code from a dropdown. Nobody audits it. Nobody verifies it against what the business actually does.

The code goes into whatever federal or state database they registered with, and from there it propagates into commercial data providers.

Three things go wrong in this process:

Companies pick the wrong code to begin with. A founder registering a new SaaS company might pick 541511 (custom programming) instead of 513210 (software publisher) because they don't know the difference, or because they also do some consulting on the side, or because the dropdown they saw had 541511 higher in the list. This happens constantly.

Companies pick codes that fit them when they started, not what they do now. A company that registered in 2015 as a "marketing consulting" firm (NAICS 541613) but pivoted to building marketing software still shows up in most databases with the 2015 code. They'd need to proactively update their NAICS code with every database that carries it, and most companies never do.

Companies pick whichever code gives them access to government programs. Some NAICS codes qualify for specific Small Business Administration set-aside contracts, tax incentives, or grant programs. Companies sometimes pick the code that maximizes eligibility, not the code that best describes their operation.

Layer those three problems across 30 million US businesses, and the result is a taxonomy where the nominal codes and the actual business operations diverge significantly. Data providers that pull straight from government filings inherit every one of these distortions.

How bad is it

Estimates vary, but the general consensus across RevOps practitioners and data providers is that somewhere between 15% and 30% of NAICS codes in typical B2B databases are either wrong or stale.

For emerging tech segments (AI companies, modern SaaS, developer tools), the error rate is often higher because the companies are newer and more likely to have been classified before their current business model stabilized.

The impact compounds through every system downstream:

  • An ICP filter targeting NAICS 513210 misses companies that are operating as software publishers but registered under 541511. Depending on how many miscategorized companies exist in your target market, you could be missing 20% of your addressable universe without ever knowing it.
  • Prospecting lists built on NAICS pull in the wrong accounts. A team targeting SaaS companies (513210) ends up with a list polluted by custom dev shops (541511) that got misclassified. SDRs then burn hours disqualifying records that should never have been on the list.
  • Lead scoring models weight industry signals that are only directionally accurate. A scoring model that assumes NAICS codes are ground truth is building on sand.

The worst part of all this: none of it shows up as a visible error. Your CRM looks fine. Your reports run. Your filters return results.

The problem is invisible until you run a manual audit on a sample and see how often the codes don't match what the companies actually do.

How to get clean NAICS data on your accounts

There are three ways to get accurate NAICS codes on the accounts in your CRM. Each one fits a different volume and use case.

Option 1: Manual lookup

For small lists (under 50 accounts) or one-off research tasks, manual lookup still works. You go to the company's website, read what they actually do, cross-reference against the NAICS manual or a lookup tool, and pick the right code.

The US Census Bureau publishes the official NAICS search at census.gov/naics. It's free, authoritative, and painful to use at scale. You can search by keyword, browse the hierarchy, or look up existing codes to see their full descriptions. Good for reference. Useless if you have more than a handful of accounts to classify.

The catch with manual lookup is that it's only as accurate as the person doing it. Two RevOps analysts looking at the same company can land on different codes because the line between, say, "software publisher" and "custom programming services" isn't always obvious from a website. Manual also breaks the moment your list grows past what one person can audit in an afternoon.

Use this when: you have fewer than 50 accounts to classify, or you're spot-checking flagged records from a larger dataset.

Option 2: Enrichment API

For any real volume, you need an API that returns NAICS codes programmatically. Send a domain, get back the NAICS code plus the firmographic context around it (headcount, industry keywords, revenue estimates).

Quality varies dramatically between providers. Some pull straight from government filings, which means they inherit every self-reporting error covered in the last section. Better providers use multiple signals (website content, product descriptions, technographics, public filings) to derive the code that actually matches what the business does.

CompanyEnrich's Company Enrichment API is one option here. You send a domain, it returns the NAICS code along with 15+ other firmographic fields, derived from the public web, company sites, social platforms, and government records rather than government filings alone. Other providers in this space include ZoomInfo and People Data Labs.

For RevOps teams running enrichment at scale, an API is the default answer. It's the only option that keeps up with both volume and data decay.

Use this when: you have hundreds or thousands of accounts, you want enrichment built into a live workflow, or you need NAICS alongside other firmographic data in one call.

Option 3: Build an AI workflow to classify accounts

If off-the-shelf enrichment doesn't fit your use case, you can build a small AI workflow in an afternoon. The logic:

  1. Input: a list of company domains from your CRM
  2. Scrape: fetch the company's homepage and About page
  3. LLM call: send the text to an LLM (Claude, GPT-4, whichever) asking it to return the best-fitting 6-digit NAICS code with a short reason
  4. Output: write the code and reasoning back to your CRM
Image

You can build this in n8n, Make, Zapier, Clay, or a few lines of Python.

The upside: the LLM reasons from the company's actual website content rather than trusting a stale self-reported code, which works especially well for emerging categories like AI companies and modern SaaS.

The downsides: scraping is fragile, LLM outputs are inconsistent on edge cases, and cost scales poorly past a few thousand accounts. For most RevOps teams at scale, a proper enrichment API is still the default. Building your own makes sense when you need custom classification logic, or as a sanity check to compare against your existing NAICS data.

The quick win: start with a free lookup

Before committing to any of these, the fastest way to get a feel for how NAICS data should look is to run a few of your accounts through a free lookup tool. CompanyEnrich's NAICS lookup takes a domain and returns the NAICS code plus basic firmographics, no signup required.

Run 10 or 20 of your most important accounts through it and compare the results to what's in your CRM. If the codes match, your data is probably cleaner than most. If they don't, you've just quantified the problem and you know which of the three options above you actually need.

Wrapping up

NAICS codes sit at the foundation of almost every RevOps workflow that touches industry targeting. Your ICP filters, prospecting lists, and scoring models all depend on them. When the codes are right, these systems work. When they're wrong or stale, they quietly break in ways that are hard to spot until someone runs an audit.

The short version of what matters:

Work at the 6-digit level. Two-digit sectors are too broad to be useful for anything beyond the loosest segmentation. Most real RevOps logic lives at the 6-digit level, where "software" becomes specifically "software publisher" or "custom programming" or "cloud infrastructure." The more specific the code, the sharper the targeting.

Assume your NAICS data is partly wrong. Between self-reported registrations, post-pivot staleness, and inherited SIC codes in legacy systems, a meaningful share of the NAICS codes in any B2B database are inaccurate. The first step to fixing this is knowing it's happening. A 10-account spot check against a free lookup tool will tell you how bad it is in your own data.

Where to go next

If you want to see what clean NAICS data looks like on your own accounts, CompanyEnrich's NAICS lookup tool takes a domain and returns the code with basic firmographics, no signup required. For teams ready to run this at volume, the Company Enrichment API returns NAICS alongside 15+ other firmographic fields in one call.

If you're auditing your CRM for the first time, start with your highest-value 50 accounts. Compare the NAICS codes in your CRM to what a fresh lookup returns.

The delta is usually bigger than people expect, and it's the fastest way to turn "my data is probably fine" into a concrete list of records to fix.

Amir Nurmagomedov
Amir Nurmagomedov

Co-Founder & CEO of CompanyEnrich

Written by Amir, co-founder and CEO of CompanyEnrich. He has 10+ years of experience in B2B SaaS and data infrastructure, and previously founded and exited two B2B SaaS startups before starting CompanyEnrich. He now helps enterprises and startups integrate B2B intelligence into AI agents, workflows, and GTM operations.

Connect on LinkedIn