πŸ‡ΊπŸ‡Έ SAM.gov Contracts Scraper avatar

πŸ‡ΊπŸ‡Έ SAM.gov Contracts Scraper

Pricing

from $7.00 / 1,000 federal contract opportunity records

Go to Apify Store
πŸ‡ΊπŸ‡Έ SAM.gov Contracts Scraper

πŸ‡ΊπŸ‡Έ SAM.gov Contracts Scraper

Scrape SAM.gov for U.S. federal contract opportunities + join with USAspending recent-award history. Set-aside type, agency hierarchy, contacts, attachments, place-of-performance. Watchlist + change-detection modes. Export, run via API, schedule, or integrate with other tools.

Pricing

from $7.00 / 1,000 federal contract opportunity records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 hours ago

Last modified

Share

SAM.gov Federal Contracts hero

TL;DR

Scrape SAM.gov for active U.S. federal contract opportunities and join each with recent award history from USAspending. Returns clean JSON with deadlines, contacts, attachments, agency hierarchy split out, set-aside type, place-of-performance, and a recent-awards block per opportunity. Direct from official SAM.gov + USAspending APIs (no scraping fragility). Watchlist mode emits only NEW or CHANGED opportunities since the previous run. Built for federal BD pipelines, capture management, AI proposal-drafting agents.


Try it on a small dataset, then let us know what you think in a review.


What does SAM.gov + USAspending Federal Contracts Intelligence do?

This actor extracts active federal contract opportunities from SAM.gov and joins each one with recent award history from USAspending.gov. You give it filters (NAICS codes, agencies, set-aside categories, free-text keywords); it returns one well-typed record per opportunity with: notice ID, solicitation number, title, posted/response/closing dates in ISO 8601, full agency hierarchy (department β†’ agency β†’ office), set-aside type, place-of-performance, attachment URLs, contact emails, primary NAICS, plus a recentAwards block per opportunity showing who has won similar contracts.

Every record carries agentMarkdown (300-500 chars) and fieldCompletenessScore (0-100). Every run also writes an AGENT_BRIEFING.md ranked by completeness Γ— deadline urgency.

Why scrape SAM.gov?

SAM.gov is the U.S. federal government's official portal for posting open solicitations. Every federal contract opportunity above the micropurchase threshold flows through SAM.gov. For federal BD teams, capture managers, government contractors, GovCon analysts, and AI-powered proposal-drafting tools, SAM.gov is the canonical opportunity feed.

The official SAM.gov + USAspending APIs are both free, but they're separate systems with different schemas and inconsistent date formats. This actor handles both calls and joins them so you don't run two pipelines.

Who needs this?

  • Federal BD and capture managers filtering opportunities by NAICS, set-aside, and agency
  • Government contractors monitoring small-business set-asides (8(a), HUBZone, SDVOSB, WOSB, EDWOSB)
  • Prime contractors finding teaming partners on new opportunities
  • GovCon market analysts measuring opportunity volume by agency, NAICS, set-aside category
  • AI proposal-drafting tools consuming the SOW + evaluation criteria as structured input
  • Compliance teams tracking which agencies post what, when
  • Investors and lobbyists measuring federal spend pipeline by parent agency

How to use SAM.gov + USAspending Federal Contracts

  1. Get a free SAM.gov API key at https://open.gsa.gov/api/get-opportunities-public-api/ (~3 min)
  2. Open the Input tab on the actor page, paste your key into samGovApiKey
  3. Set filters: naicsCodes, agencies, setAsides, or free-text keywords
  4. Set maxItems (default 50)
  5. Optionally enable joinUsaspending (default true) for the recent-awards enrichment
  6. Optionally enable detectChanges for change-detection mode
  7. Click Start

How much will scraping SAM.gov cost?

This actor is priced per event:

  • Actor Start: $0.01 once per run
  • Federal opportunity record: tiered, charged per record written
Apify plan$/1000 records
FREE$35.00
BRONZE$29.75
SILVER$24.50
GOLD$21.00
PLATINUM$21.00
DIAMOND$18.90

A daily NAICS-filtered watchlist returns ~50-200 records day 1, then 10-50 per day. Roughly $1-$4 per day on GOLD.

Yes β€” federal contracting opportunities are public-record data published by the U.S. government. Both SAM.gov and USAspending are official .gov APIs explicitly designed for programmatic access. SAM.gov requires a free API key (rate-limit signal, not a content gate). USAspending has no auth requirement.

Examples

Example 1: Daily watchlist on IT services NAICS

{
"samGovApiKey": "YOUR_KEY",
"naicsCodes": ["541512", "541511", "541519"],
"watchlistMode": true,
"maxItems": 100
}

Example 2: 8(a) set-aside opportunities only

{
"samGovApiKey": "YOUR_KEY",
"setAsides": ["8A"],
"watchlistMode": true,
"maxItems": 100
}

Example 3: DOD opportunities

{
"samGovApiKey": "YOUR_KEY",
"agencies": ["DEPT OF DEFENSE"],
"maxItems": 200
}
{
"samGovApiKey": "YOUR_KEY",
"keywords": ["artificial intelligence", "machine learning"],
"maxItems": 100
}

Example 5: Change-detection mode

{
"samGovApiKey": "YOUR_KEY",
"naicsCodes": ["541512"],
"detectChanges": true,
"maxItems": 200
}

Filter for changeStatus: 'updated' to see what shifted overnight.

Example 6: HUBZone + SDVOSB combined

{
"samGovApiKey": "YOUR_KEY",
"setAsides": ["HZC", "SDVOSBC", "WOSB", "EDWOSB"],
"maxItems": 200
}

Example 7: Posted-this-week opportunities

{
"samGovApiKey": "YOUR_KEY",
"postedFrom": "2026-05-02",
"postedTo": "2026-05-09",
"maxItems": 500
}

Example 8: Capture-team intelligence

{
"samGovApiKey": "YOUR_KEY",
"naicsCodes": ["541512"],
"joinUsaspending": true,
"usaspendingLookbackMonths": 24,
"maxItems": 50
}

The recentAwards block per opportunity gives you "who has won similar work" without a second pipeline.

Input parameters

FieldTypeDefaultDescription
samGovApiKeystringrequiredFree key from https://open.gsa.gov/api/get-opportunities-public-api/
naicsCodesstring[][]NAICS code filter
agenciesstring[][]Agency name filter
setAsidesenum[][]8A, HZC, SDVOSBC, WOSB, EDWOSB, IEE
keywordsstring[][]Free-text search
postedFrom, postedToYYYY-MM-DDnullPosted-date window
joinUsaspendingbooltrueAdd recentAwards enrichment
usaspendingLookbackMonthsint24How far back lookups go
detectChangesboolfalseAdd changeStatus + changedFields[]
watchlistModeboolfalseIdempotent diff
maxItemsint50Hard cap

Federal Contracts output format

federal_opportunity

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity (samgov:opp:<noticeId>)
noticeId, solicitationNumber, urlstringSAM.gov IDs + URL
title, descriptionstringTitle + full SOW
noticeTypeenumSolicitation, Combined Synopsis/Solicitation, Sources Sought, Special Notice
postedAt, responseDeadline, archiveDateISO 8601Standard timestamps
agencyDepartment, agencyName, agencyOfficestringFull hierarchy split
setAsideTypeenum8A, HZC, SDVOSBC, etc.
naicsCode, naicsDescriptionstringPrimary NAICS
placeOfPerformanceobject{ city, state, zip, country }
pointsOfContactarray[{ name, email, phone, role }]
attachmentsarray[{ name, url, contentType }]
recentAwardsarray(when joinUsaspending: true) [{ recipient, agency, amountUsd, awardDate, naics }]
awardHistorySummaryobject{ totalAwards, totalUsd, avgAwardUsd, topRecipient }
fieldCompletenessScore, agentMarkdownint / stringQuality + LLM-ready summary
changeStatus, changedFieldsenum / string[](when detectChanges: true)

Federal Contracts scraper output example

{
"outputSchemaVersion": "2026-05-08",
"recordType": "federal_opportunity",
"recordId": "samgov:opp:abc123",
"noticeId": "abc123",
"solicitationNumber": "FA8773-26-R-0042",
"title": "Cloud Engineering Support Services",
"noticeType": "Combined Synopsis/Solicitation",
"postedAt": "2026-05-08T13:00:00.000Z",
"responseDeadline": "2026-06-15T17:00:00.000Z",
"agencyDepartment": "DEPT OF DEFENSE",
"agencyName": "DEPT OF THE AIR FORCE",
"agencyOffice": "AIR FORCE LIFE CYCLE MANAGEMENT CENTER",
"setAsideType": "SDVOSBC",
"naicsCode": "541512",
"recentAwards": [
{ "recipient": "Acme Corp", "agency": "DEPT OF THE AIR FORCE", "amountUsd": 4250000, "awardDate": "2025-09-15", "naics": "541512" }
],
"awardHistorySummary": {
"totalAwards": 23,
"totalUsd": 84500000,
"avgAwardUsd": 3673913,
"topRecipient": "Acme Corp"
},
"fieldCompletenessScore": 95,
"agentMarkdown": "**πŸ‡ΊπŸ‡Έ Cloud Engineering Support Services**\n- πŸ“‹ SDVOSBC Β· NAICS 541512\n- 🏒 DEPT OF THE AIR FORCE / AFLCMC\n- πŸ“… posted 2026-05-08 Β· πŸ“† due 2026-06-15\n- πŸ’° 23 prior awards, $84.5M total, avg $3.7M\n- πŸ”— https://sam.gov/opp/abc123"
}

During the Actor run

The actor calls SAM.gov's /opportunities/v2/search API with your filters, then for each opportunity (when joinUsaspending: true) calls USAspending's /api/v2/search/spending_by_award/. Both APIs are rate-limited at 1 second between requests.

The actor writes:

  1. OUTPUT β€” run summary
  2. AGENT_BRIEFING β€” top opportunities by completeness Γ— deadline urgency
  3. WATCHLIST_STATE β€” (when watchlistMode: true) seen notice IDs

FAQ

How does this actor work?

The actor calls SAM.gov's official Opportunities API and USAspending's official Awards API. Both are free public .gov APIs. Records are normalized into one schema per opportunity with the recent-awards block joined.

Do I need a SAM.gov API key?

Yes β€” get it free at https://open.gsa.gov/api/get-opportunities-public-api/ (~3 minutes; email + organization required). USAspending requires no key.

Can I monitor for new opportunities only?

Yes. Set watchlistMode: true. The actor stores seen notice IDs and emits only new opportunities.

Can I see what changed on an opportunity?

Yes. Set detectChanges: true. The actor diffs each record against the previous run and emits changeStatus (new | updated | unchanged) plus changedFields[].

Can I filter by set-aside type?

Yes. setAsides: ["8A", "HZC", "SDVOSBC", "WOSB", "EDWOSB"].

Can I get the full SOW?

Yes β€” description carries the full SOW from SAM.gov. Attachments are listed in attachments[] with direct URLs.

Can I use this with the Apify API?

Yes. POST to https://api.apify.com/v2/acts/skootle~sam-gov-federal-contracts/runs.

Can I integrate with Make / Zapier / n8n / Slack?

Yes. Click Integrations on the actor page.

Why does this actor cost more than free SAM.gov scrapers?

This actor ships the USAspending join (so you don't run two pipelines), the agency-hierarchy split, set-aside enum, change-detection mode, watchlist diff mode, agent-ready markdown summaries, and continuous maintenance.

Your feedback

Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).

Why choose SAM.gov + USAspending Federal Contracts

  • Two APIs in one record β€” SAM.gov opportunity + USAspending award history joined per opp
  • Agency hierarchy split β€” agencyDepartment, agencyName, agencyOffice separate fields
  • Set-aside enum β€” typed for easy filtering
  • Change-detection mode β€” changeStatus + changedFields[] per record
  • Watchlist diff mode β€” only emits NEW opportunities since the last run
  • Versioned schema β€” outputSchemaVersion: '2026-05-08'
  • Idempotent record IDs β€” samgov:opp:<noticeId> stable across runs
  • Agent-grade output β€” agentMarkdown ready to paste into an LLM context
  • Direct from .gov APIs β€” no HTML scraping fragility

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page β€” replies within 48 hours.