ActorStack.dev

NAICS or PSC: which classification to filter federal contracts on

Two classification systems on the same notice, describing different things. One is better filled, and the difference decides which one your pipeline should key on.

By Oswaldo Carabano6 min read

Short answer

NAICS classifies the industry of the supplier; PSC classifies the product or service being bought. Both appear on a SAM.gov notice, and PSC is marginally better filled — 97.8% against 96.1% on a sample of 13,434 notices. Filter on PSC when you care what is being procured, on NAICS when you care which industry it belongs to, and on both when you know both.

Key points

  • NAICS describes the industry; PSC describes the thing being bought. They are not two spellings of the same concept.
  • PSC is present on 97.8% of notices, NAICS on 96.1%, measured across 13,434.
  • `naics_all` and `psc_all` carry every code on the notice, not just the primary one.
  • Both filter server-side, so excluded notices are never charged.
  • A notice with an unexpected NAICS is often correctly classified: the industry of the supplier and the nature of the purchase genuinely diverge.
On this page6 sections

Every federal notice carries two classification codes, and people routinely treat them as duplicates. They are not: one describes the industry that would do the work, the other describes the thing being bought. Choosing the wrong one produces a filter that quietly misses your market.

Two systems, two questions

SystemAnswersExample
NAICSWhat industry is the supplier in?541511 — Custom Computer Programming Services
PSCWhat product or service is being bought?D302 — IT and Telecom systems development

The distinction is real in practice. A software licence purchase and a bespoke development contract can share an industry and differ completely in what is being procured — and the reverse happens too, where the same service is bought from suppliers classified in different industries.

Which one is better filled

Measured on 13,434 notices: PSC 97.8%, NAICS 96.1%. Both are well filled enough to build on, and PSC has the edge.

The gap is small but it is consistent, and if you can only maintain one code list — which is the realistic situation for most bidders — PSC is the one that will miss fewer notices.

The `_all` fields

naics_all and psc_all carry every code on the notice, not just the primary. A notice can be classified under several, and filtering only on the primary code misses notices where your code is present but secondary.

The Actor's naicsCodes and pscCodes filters work server-side, so excluded notices are never delivered and never charged — which makes it cheap to run a broad code list rather than guessing at the single right one.

Choosing for your use case

  • You sell a service. PSC, because it describes what the government is buying.
  • You are analysing an industry. NAICS, because it aligns with economic statistics and with how firms are classified elsewhere.
  • You are building a monitor. Both, with a generous code list. The filters are server-side and the marginal cost of extra codes is zero.
  • You are joining to other federal data. Whichever the other dataset uses — spending data tends toward PSC, economic data toward NAICS.

When they disagree

Sometimes a notice's NAICS looks wrong for its PSC, and usually it is not wrong. A contract to develop software might be classified under the industry of the incumbent's primary business rather than the work itself, or under a facilities code because it is being bought through a facilities vehicle.

Treat a divergence as information about how the agency buys, not as an error to correct. Correcting it in your copy of the data means your dataset no longer matches the source, which is a cost that arrives later.

Practical filtering

both, with a generous list
{
  "maxResults": 1000,
  "activeOnly": true,
  "publishedWithinDays": 14,
  "naicsCodes": ["541511", "541512", "541519"],
  "pscCodes": ["D302", "D307", "D399"],
  "noticeTypes": ["o", "k", "r"]
}

Including Sources Sought (r) is worth doing: those notices are the government asking industry whether something is feasible, they carry a document 60% of the time, and they arrive before the solicitation does.

Frequently asked questions

What is the difference between NAICS and PSC?
NAICS classifies the industry of the business that would perform the work; PSC classifies the product or service being purchased. A software development contract and a software licence purchase can share a NAICS code and differ in PSC.
Which is better filled on SAM.gov notices?
PSC, at 97.8% against 96.1% for NAICS, measured on 13,434 notices. The gap is small but consistent.
Can I filter on both?
Yes, and it narrows more precisely than either alone. Both filters are applied server-side, so notices they exclude are never delivered and never charged.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 19 Aug 2026
    SAM.gov Federal Contract Opportunities & Attachments — Actor README and input schemaActorStack / Apify Store
  2. Operator claimchecked 19 Aug 2026
    Contract OpportunitiesSAM.gov (U.S. General Services Administration)
  3. Law or regulatorchecked 19 Aug 2026
    FAR Part 5 — Publicizing Contract ActionsAcquisition.gov (U.S. Federal Acquisition Regulation)
A shelf of office binders with dated labels along their spines.
SAM.govReference

SAM.gov data fields

62 fields, snake_case, null where a value is genuinely absent and never a missing key — with coverage measured across five days spread over ten months.

8 min
The dome of the United States Capitol against a clear sky.
SAM.govGuide

Opportunity monitoring

A working monitoring pipeline: what to filter, how often to run, which deadline field to schedule against, and where the attachment rate changes your plan.

8 min
The dome of the United States Capitol against a clear sky.
SAM.govReference

Set-aside codes

SBA, 8(a), WOSB, SDVOSB, HUBZone — the codes that reserve a contract for a category of small business, present on 46.1% of notices.

7 min