πΊπΈ SAM.gov Contracts Scraper
Pricing
from $7.00 / 1,000 federal contract opportunity records
πΊπΈ 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
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 hours ago
Last modified
Categories
Share

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
- Get a free SAM.gov API key at https://open.gsa.gov/api/get-opportunities-public-api/ (~3 min)
- Open the Input tab on the actor page, paste your key into
samGovApiKey - Set filters:
naicsCodes,agencies,setAsides, or free-textkeywords - Set
maxItems(default 50) - Optionally enable
joinUsaspending(defaulttrue) for the recent-awards enrichment - Optionally enable
detectChangesfor change-detection mode - 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.
Is it legal to scrape SAM.gov?
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}
Example 4: Free-text AI keyword search
{"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
| Field | Type | Default | Description |
|---|---|---|---|
samGovApiKey | string | required | Free key from https://open.gsa.gov/api/get-opportunities-public-api/ |
naicsCodes | string[] | [] | NAICS code filter |
agencies | string[] | [] | Agency name filter |
setAsides | enum[] | [] | 8A, HZC, SDVOSBC, WOSB, EDWOSB, IEE |
keywords | string[] | [] | Free-text search |
postedFrom, postedTo | YYYY-MM-DD | null | Posted-date window |
joinUsaspending | bool | true | Add recentAwards enrichment |
usaspendingLookbackMonths | int | 24 | How far back lookups go |
detectChanges | bool | false | Add changeStatus + changedFields[] |
watchlistMode | bool | false | Idempotent diff |
maxItems | int | 50 | Hard cap |
Federal Contracts output format
federal_opportunity
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity (samgov:opp:<noticeId>) |
noticeId, solicitationNumber, url | string | SAM.gov IDs + URL |
title, description | string | Title + full SOW |
noticeType | enum | Solicitation, Combined Synopsis/Solicitation, Sources Sought, Special Notice |
postedAt, responseDeadline, archiveDate | ISO 8601 | Standard timestamps |
agencyDepartment, agencyName, agencyOffice | string | Full hierarchy split |
setAsideType | enum | 8A, HZC, SDVOSBC, etc. |
naicsCode, naicsDescription | string | Primary NAICS |
placeOfPerformance | object | { city, state, zip, country } |
pointsOfContact | array | [{ name, email, phone, role }] |
attachments | array | [{ name, url, contentType }] |
recentAwards | array | (when joinUsaspending: true) [{ recipient, agency, amountUsd, awardDate, naics }] |
awardHistorySummary | object | { totalAwards, totalUsd, avgAwardUsd, topRecipient } |
fieldCompletenessScore, agentMarkdown | int / string | Quality + LLM-ready summary |
changeStatus, changedFields | enum / 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:
OUTPUTβ run summaryAGENT_BRIEFINGβ top opportunities by completeness Γ deadline urgencyWATCHLIST_STATEβ (whenwatchlistMode: 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,agencyOfficeseparate 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 β
agentMarkdownready to paste into an LLM context - Direct from .gov APIs β no HTML scraping fragility
Other Skootle actors you might want to check
- Wellfound Jobs Scraper β startup hiring intelligence
- Crexi Commercial Real Estate β CRE listings with 50+ fields
- SEC EDGAR Filings Monitor β public-company filings stream
- Reddit Subreddit Scraper β sentiment + brand monitoring
- Hacker News Watchlist β tech discourse stream
Support and contact
File issues on this actor's page β replies within 48 hours.